150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* =========================== Module _CF =========================== */ 350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen#include "Python.h" 550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen#include "pymactoolbox.h" 950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 1050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* Macro to test whether a weak-loaded CFM function exists */ 1150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ 12c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_NotImplementedError, \ 13c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou "Not available in this shared library/OS version"); \ 14c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; \ 1550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen }} while(0) 1650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 1750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 1850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen#include <CoreServices/CoreServices.h> 1950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 205ad6f7a3a9190df03583ff9c0426a97e15a63adaJack Jansen#include "pycfbridge.h" 215ad6f7a3a9190df03583ff9c0426a97e15a63adaJack Jansen 22537a69fe66b10614b11b129d07da146f30801717Jack Jansen#ifdef USE_TOOLBOX_OBJECT_GLUE 234eb45e7804e312b19860b15dcdac904afe407c9bJack Jansenextern PyObject *_CFObj_New(CFTypeRef); 244eb45e7804e312b19860b15dcdac904afe407c9bJack Jansenextern int _CFObj_Convert(PyObject *, CFTypeRef *); 254eb45e7804e312b19860b15dcdac904afe407c9bJack Jansen#define CFObj_New _CFObj_New 264eb45e7804e312b19860b15dcdac904afe407c9bJack Jansen#define CFObj_Convert _CFObj_Convert 274eb45e7804e312b19860b15dcdac904afe407c9bJack Jansen 28537a69fe66b10614b11b129d07da146f30801717Jack Jansenextern PyObject *_CFTypeRefObj_New(CFTypeRef); 29537a69fe66b10614b11b129d07da146f30801717Jack Jansenextern int _CFTypeRefObj_Convert(PyObject *, CFTypeRef *); 30537a69fe66b10614b11b129d07da146f30801717Jack Jansen#define CFTypeRefObj_New _CFTypeRefObj_New 31537a69fe66b10614b11b129d07da146f30801717Jack Jansen#define CFTypeRefObj_Convert _CFTypeRefObj_Convert 32537a69fe66b10614b11b129d07da146f30801717Jack Jansen 33537a69fe66b10614b11b129d07da146f30801717Jack Jansenextern PyObject *_CFStringRefObj_New(CFStringRef); 34537a69fe66b10614b11b129d07da146f30801717Jack Jansenextern int _CFStringRefObj_Convert(PyObject *, CFStringRef *); 35537a69fe66b10614b11b129d07da146f30801717Jack Jansen#define CFStringRefObj_New _CFStringRefObj_New 36537a69fe66b10614b11b129d07da146f30801717Jack Jansen#define CFStringRefObj_Convert _CFStringRefObj_Convert 37537a69fe66b10614b11b129d07da146f30801717Jack Jansen 38537a69fe66b10614b11b129d07da146f30801717Jack Jansenextern PyObject *_CFMutableStringRefObj_New(CFMutableStringRef); 39537a69fe66b10614b11b129d07da146f30801717Jack Jansenextern int _CFMutableStringRefObj_Convert(PyObject *, CFMutableStringRef *); 40537a69fe66b10614b11b129d07da146f30801717Jack Jansen#define CFMutableStringRefObj_New _CFMutableStringRefObj_New 41537a69fe66b10614b11b129d07da146f30801717Jack Jansen#define CFMutableStringRefObj_Convert _CFMutableStringRefObj_Convert 42537a69fe66b10614b11b129d07da146f30801717Jack Jansen 43537a69fe66b10614b11b129d07da146f30801717Jack Jansenextern PyObject *_CFArrayRefObj_New(CFArrayRef); 44537a69fe66b10614b11b129d07da146f30801717Jack Jansenextern int _CFArrayRefObj_Convert(PyObject *, CFArrayRef *); 45537a69fe66b10614b11b129d07da146f30801717Jack Jansen#define CFArrayRefObj_New _CFArrayRefObj_New 46537a69fe66b10614b11b129d07da146f30801717Jack Jansen#define CFArrayRefObj_Convert _CFArrayRefObj_Convert 47537a69fe66b10614b11b129d07da146f30801717Jack Jansen 48537a69fe66b10614b11b129d07da146f30801717Jack Jansenextern PyObject *_CFMutableArrayRefObj_New(CFMutableArrayRef); 49537a69fe66b10614b11b129d07da146f30801717Jack Jansenextern int _CFMutableArrayRefObj_Convert(PyObject *, CFMutableArrayRef *); 50537a69fe66b10614b11b129d07da146f30801717Jack Jansen#define CFMutableArrayRefObj_New _CFMutableArrayRefObj_New 51537a69fe66b10614b11b129d07da146f30801717Jack Jansen#define CFMutableArrayRefObj_Convert _CFMutableArrayRefObj_Convert 52537a69fe66b10614b11b129d07da146f30801717Jack Jansen 53537a69fe66b10614b11b129d07da146f30801717Jack Jansenextern PyObject *_CFDataRefObj_New(CFDataRef); 54537a69fe66b10614b11b129d07da146f30801717Jack Jansenextern int _CFDataRefObj_Convert(PyObject *, CFDataRef *); 55537a69fe66b10614b11b129d07da146f30801717Jack Jansen#define CFDataRefObj_New _CFDataRefObj_New 56537a69fe66b10614b11b129d07da146f30801717Jack Jansen#define CFDataRefObj_Convert _CFDataRefObj_Convert 57537a69fe66b10614b11b129d07da146f30801717Jack Jansen 58537a69fe66b10614b11b129d07da146f30801717Jack Jansenextern PyObject *_CFMutableDataRefObj_New(CFMutableDataRef); 59537a69fe66b10614b11b129d07da146f30801717Jack Jansenextern int _CFMutableDataRefObj_Convert(PyObject *, CFMutableDataRef *); 60537a69fe66b10614b11b129d07da146f30801717Jack Jansen#define CFMutableDataRefObj_New _CFMutableDataRefObj_New 61537a69fe66b10614b11b129d07da146f30801717Jack Jansen#define CFMutableDataRefObj_Convert _CFMutableDataRefObj_Convert 62537a69fe66b10614b11b129d07da146f30801717Jack Jansen 63537a69fe66b10614b11b129d07da146f30801717Jack Jansenextern PyObject *_CFDictionaryRefObj_New(CFDictionaryRef); 64537a69fe66b10614b11b129d07da146f30801717Jack Jansenextern int _CFDictionaryRefObj_Convert(PyObject *, CFDictionaryRef *); 65537a69fe66b10614b11b129d07da146f30801717Jack Jansen#define CFDictionaryRefObj_New _CFDictionaryRefObj_New 66537a69fe66b10614b11b129d07da146f30801717Jack Jansen#define CFDictionaryRefObj_Convert _CFDictionaryRefObj_Convert 67537a69fe66b10614b11b129d07da146f30801717Jack Jansen 68537a69fe66b10614b11b129d07da146f30801717Jack Jansenextern PyObject *_CFMutableDictionaryRefObj_New(CFMutableDictionaryRef); 69537a69fe66b10614b11b129d07da146f30801717Jack Jansenextern int _CFMutableDictionaryRefObj_Convert(PyObject *, CFMutableDictionaryRef *); 70537a69fe66b10614b11b129d07da146f30801717Jack Jansen#define CFMutableDictionaryRefObj_New _CFMutableDictionaryRefObj_New 71537a69fe66b10614b11b129d07da146f30801717Jack Jansen#define CFMutableDictionaryRefObj_Convert _CFMutableDictionaryRefObj_Convert 72537a69fe66b10614b11b129d07da146f30801717Jack Jansen 73537a69fe66b10614b11b129d07da146f30801717Jack Jansenextern PyObject *_CFURLRefObj_New(CFURLRef); 74537a69fe66b10614b11b129d07da146f30801717Jack Jansenextern int _CFURLRefObj_Convert(PyObject *, CFURLRef *); 75537a69fe66b10614b11b129d07da146f30801717Jack Jansenextern int _OptionalCFURLRefObj_Convert(PyObject *, CFURLRef *); 76537a69fe66b10614b11b129d07da146f30801717Jack Jansen#define CFURLRefObj_New _CFURLRefObj_New 77537a69fe66b10614b11b129d07da146f30801717Jack Jansen#define CFURLRefObj_Convert _CFURLRefObj_Convert 78537a69fe66b10614b11b129d07da146f30801717Jack Jansen#define OptionalCFURLRefObj_Convert _OptionalCFURLRefObj_Convert 7950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen#endif 8050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 8150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* 8250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen** Parse/generate CFRange records 8350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen*/ 8450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyObject *CFRange_New(CFRange *itself) 8550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 86c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_BuildValue("ll", (long)itself->location, (long)itself->length); 8750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 8850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 8906d2e1af3579f6a698a84b81dfda0bacb6263f7dJack Jansenint 9050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenCFRange_Convert(PyObject *v, CFRange *p_itself) 9150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 92c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou long location, length; 93918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansen 94c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if( !PyArg_ParseTuple(v, "ll", &location, &length) ) 95c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 96c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou p_itself->location = (CFIndex)location; 97c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou p_itself->length = (CFIndex)length; 98c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 1; 9950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 10050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 10150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* Optional CFURL argument or None (passed as NULL) */ 10250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenint 10350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenOptionalCFURLRefObj_Convert(PyObject *v, CFURLRef *p_itself) 10450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 10550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen if ( v == Py_None ) { 106ca56dd4767617a2f5e946130de4beb06442a5cd5Martin Panter p_itself = NULL; 107ca56dd4767617a2f5e946130de4beb06442a5cd5Martin Panter return 1; 10850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen } 10950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen return CFURLRefObj_Convert(v, p_itself); 11050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 11150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 11250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_Error; 11350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 11450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* --------------------- Object type CFTypeRef ---------------------- */ 11550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 11650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyTypeObject CFTypeRef_Type; 11750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 118f955784f0cfeecb94d3f2ade83a5ea548391f74bJack Jansen#define CFTypeRefObj_Check(x) ((x)->ob_type == &CFTypeRef_Type || PyObject_TypeCheck((x), &CFTypeRef_Type)) 11950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 12050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansentypedef struct CFTypeRefObject { 121c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_HEAD 122c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRef ob_itself; 123c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou void (*ob_freeit)(CFTypeRef ptr); 12450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} CFTypeRefObject; 12550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 12650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyObject *CFTypeRefObj_New(CFTypeRef itself) 12750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 128c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRefObject *it; 129c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (itself == NULL) 130c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 131c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 132c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 133c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 134c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it = PyObject_NEW(CFTypeRefObject, &CFTypeRef_Type); 135c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (it == NULL) return NULL; 136c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it->ob_itself = itself; 137c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it->ob_freeit = CFRelease; 138c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return (PyObject *)it; 13950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 140918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansen 14106d2e1af3579f6a698a84b81dfda0bacb6263f7dJack Jansenint CFTypeRefObj_Convert(PyObject *v, CFTypeRef *p_itself) 14250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 14350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 144c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (v == Py_None) { *p_itself = NULL; return 1; } 145c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Check for other CF objects here */ 14650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 147c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!CFTypeRefObj_Check(v)) 148c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 149c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_TypeError, "CFTypeRef required"); 150c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 151c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 152c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou *p_itself = ((CFTypeRefObject *)v)->ob_itself; 153c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 1; 15450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 15550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 15650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic void CFTypeRefObj_dealloc(CFTypeRefObject *self) 15750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 158c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (self->ob_freeit && self->ob_itself) 159c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 160c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou self->ob_freeit((CFTypeRef)self->ob_itself); 161c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou self->ob_itself = NULL; 162c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 163c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou self->ob_type->tp_free((PyObject *)self); 16450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 16550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 16650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFTypeRefObj_CFGetTypeID(CFTypeRefObject *_self, PyObject *_args) 16750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 168c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 169c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeID _rv; 170b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFGetTypeID 171c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFGetTypeID); 172b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 173c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 174c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 175c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFGetTypeID(_self->ob_itself); 176c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 177c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 178c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 17950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 18050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 18150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFTypeRefObj_CFRetain(CFTypeRefObject *_self, PyObject *_args) 18250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 183c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 184c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRef _rv; 185b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFRetain 186c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFRetain); 187b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 188c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 189c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 190c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFRetain(_self->ob_itself); 191c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 192c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRefObj_New, _rv); 193c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 19450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 19550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 19650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFTypeRefObj_CFRelease(CFTypeRefObject *_self, PyObject *_args) 19750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 198c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 199b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFRelease 200c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFRelease); 201b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 202c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 203c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 204c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRelease(_self->ob_itself); 205c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 206c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 207c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 20850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 20950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 21050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFTypeRefObj_CFGetRetainCount(CFTypeRefObject *_self, PyObject *_args) 21150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 212c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 213c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex _rv; 214b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFGetRetainCount 215c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFGetRetainCount); 216b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 217c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 218c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 219c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFGetRetainCount(_self->ob_itself); 220c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 221c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 222c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 22350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 22450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 22550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFTypeRefObj_CFEqual(CFTypeRefObject *_self, PyObject *_args) 22650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 227c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 228c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Boolean _rv; 229c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRef cf2; 230b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFEqual 231c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFEqual); 232b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 233c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&", 234c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRefObj_Convert, &cf2)) 235c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 236c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFEqual(_self->ob_itself, 237c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou cf2); 238c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 239c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 240c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 24150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 24250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 24350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFTypeRefObj_CFHash(CFTypeRefObject *_self, PyObject *_args) 24450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 245c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 246c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFHashCode _rv; 247b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFHash 248c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFHash); 249b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 250c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 251c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 252c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFHash(_self->ob_itself); 253c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 254c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 255c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 25650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 25750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 25850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFTypeRefObj_CFCopyDescription(CFTypeRefObject *_self, PyObject *_args) 25950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 260c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 261c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 262b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFCopyDescription 263c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFCopyDescription); 264b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 265c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 266c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 267c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFCopyDescription(_self->ob_itself); 268c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 269c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 270c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 27150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 27250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 2737906634f28b6c730912bcf51644ae4a8361fb028Jack Jansenstatic PyObject *CFTypeRefObj_CFPropertyListCreateXMLData(CFTypeRefObject *_self, PyObject *_args) 2747906634f28b6c730912bcf51644ae4a8361fb028Jack Jansen{ 275c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 276c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRef _rv; 277c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 278c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 279c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFPropertyListCreateXMLData((CFAllocatorRef)NULL, 280c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _self->ob_itself); 281c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 282c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRefObj_New, _rv); 283c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 2847906634f28b6c730912bcf51644ae4a8361fb028Jack Jansen} 2857906634f28b6c730912bcf51644ae4a8361fb028Jack Jansen 2867906634f28b6c730912bcf51644ae4a8361fb028Jack Jansenstatic PyObject *CFTypeRefObj_CFPropertyListCreateDeepCopy(CFTypeRefObject *_self, PyObject *_args) 2877906634f28b6c730912bcf51644ae4a8361fb028Jack Jansen{ 288c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 289c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRef _rv; 290c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFOptionFlags mutabilityOption; 291c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "l", 292c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &mutabilityOption)) 293c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 294c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFPropertyListCreateDeepCopy((CFAllocatorRef)NULL, 295c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _self->ob_itself, 296c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou mutabilityOption); 297c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 298c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRefObj_New, _rv); 299c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 3007906634f28b6c730912bcf51644ae4a8361fb028Jack Jansen} 3017906634f28b6c730912bcf51644ae4a8361fb028Jack Jansen 30250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFTypeRefObj_CFShow(CFTypeRefObject *_self, PyObject *_args) 30350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 304c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 305b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFShow 306c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFShow); 307b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 308c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 309c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 310c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFShow(_self->ob_itself); 311c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 312c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 313c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 31450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 31550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 3167906634f28b6c730912bcf51644ae4a8361fb028Jack Jansenstatic PyObject *CFTypeRefObj_CFPropertyListCreateFromXMLData(CFTypeRefObject *_self, PyObject *_args) 3177906634f28b6c730912bcf51644ae4a8361fb028Jack Jansen{ 318c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 319c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 320c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRef _rv; 321c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFOptionFlags mutabilityOption; 322c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef errorString; 323c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "l", 324c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &mutabilityOption)) 325c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 326c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFPropertyListCreateFromXMLData((CFAllocatorRef)NULL, 327c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _self->ob_itself, 328c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou mutabilityOption, 329c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &errorString); 330c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (errorString) 331c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRelease(errorString); 332c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (_rv == NULL) { 333c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_RuntimeError, "Parse error in XML data"); 334c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 335c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 336c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 337c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRefObj_New, _rv); 338c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 3397906634f28b6c730912bcf51644ae4a8361fb028Jack Jansen 3407906634f28b6c730912bcf51644ae4a8361fb028Jack Jansen} 3417906634f28b6c730912bcf51644ae4a8361fb028Jack Jansen 3425ad6f7a3a9190df03583ff9c0426a97e15a63adaJack Jansenstatic PyObject *CFTypeRefObj_toPython(CFTypeRefObject *_self, PyObject *_args) 3435ad6f7a3a9190df03583ff9c0426a97e15a63adaJack Jansen{ 344c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3455ad6f7a3a9190df03583ff9c0426a97e15a63adaJack Jansen 346c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = PyCF_CF2Python(_self->ob_itself); 347c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 3485ad6f7a3a9190df03583ff9c0426a97e15a63adaJack Jansen 3495ad6f7a3a9190df03583ff9c0426a97e15a63adaJack Jansen} 3505ad6f7a3a9190df03583ff9c0426a97e15a63adaJack Jansen 35150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyMethodDef CFTypeRefObj_methods[] = { 352c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFGetTypeID", (PyCFunction)CFTypeRefObj_CFGetTypeID, 1, 353c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFTypeID _rv)")}, 354c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFRetain", (PyCFunction)CFTypeRefObj_CFRetain, 1, 355c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFTypeRef _rv)")}, 356c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFRelease", (PyCFunction)CFTypeRefObj_CFRelease, 1, 357c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> None")}, 358c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFGetRetainCount", (PyCFunction)CFTypeRefObj_CFGetRetainCount, 1, 359c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFIndex _rv)")}, 360c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFEqual", (PyCFunction)CFTypeRefObj_CFEqual, 1, 361c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFTypeRef cf2) -> (Boolean _rv)")}, 362c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFHash", (PyCFunction)CFTypeRefObj_CFHash, 1, 363c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFHashCode _rv)")}, 364c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFCopyDescription", (PyCFunction)CFTypeRefObj_CFCopyDescription, 1, 365c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFStringRef _rv)")}, 366c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFPropertyListCreateXMLData", (PyCFunction)CFTypeRefObj_CFPropertyListCreateXMLData, 1, 367c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFDataRef _rv)")}, 368c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFPropertyListCreateDeepCopy", (PyCFunction)CFTypeRefObj_CFPropertyListCreateDeepCopy, 1, 369c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFOptionFlags mutabilityOption) -> (CFTypeRef _rv)")}, 370c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFShow", (PyCFunction)CFTypeRefObj_CFShow, 1, 371c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> None")}, 372c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFPropertyListCreateFromXMLData", (PyCFunction)CFTypeRefObj_CFPropertyListCreateFromXMLData, 1, 373c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFOptionFlags mutabilityOption) -> (CFTypeRefObj)")}, 374c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"toPython", (PyCFunction)CFTypeRefObj_toPython, 1, 375c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (python_object)")}, 376c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL, 0} 37750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen}; 37850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 3793bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFTypeRefObj_getsetlist NULL 38050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 38150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 38250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic int CFTypeRefObj_compare(CFTypeRefObject *self, CFTypeRefObject *other) 38350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 384c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Or should we use CFEqual?? */ 385c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ( self->ob_itself > other->ob_itself ) return 1; 386c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ( self->ob_itself < other->ob_itself ) return -1; 387c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 38850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 38950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 39050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject * CFTypeRefObj_repr(CFTypeRefObject *self) 39150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 392c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char buf[100]; 393c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou sprintf(buf, "<CFTypeRef type-%d object at 0x%8.8x for 0x%8.8x>", (int)CFGetTypeID(self->ob_itself), (unsigned)self, (unsigned)self->ob_itself); 394c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyString_FromString(buf); 39550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 39650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 39750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic int CFTypeRefObj_hash(CFTypeRefObject *self) 39850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 399c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Or should we use CFHash?? */ 400c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return (int)self->ob_itself; 40150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 402918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansenstatic int CFTypeRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) 4033bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen{ 404c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRef itself; 405c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *kw[] = {"itself", 0}; 4063bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 407c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) 408c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 409c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFTypeRefObject *)_self)->ob_itself = itself; 410c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 411c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 412c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return -1; 4133bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen} 4143bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 4153bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFTypeRefObj_tp_alloc PyType_GenericAlloc 4163bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 417918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansenstatic PyObject *CFTypeRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) 4183bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen{ 419c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *self; 420c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; 421c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFTypeRefObject *)self)->ob_itself = NULL; 422c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFTypeRefObject *)self)->ob_freeit = CFRelease; 423c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return self; 4243bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen} 4253bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 4263bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFTypeRefObj_tp_free PyObject_Del 4273bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 42850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 42950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyTypeObject CFTypeRef_Type = { 430c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_HEAD_INIT(NULL) 431c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*ob_size*/ 432c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou "_CF.CFTypeRef", /*tp_name*/ 433c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou sizeof(CFTypeRefObject), /*tp_basicsize*/ 434c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_itemsize*/ 435c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* methods */ 436c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (destructor) CFTypeRefObj_dealloc, /*tp_dealloc*/ 437c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_print*/ 438c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (getattrfunc)0, /*tp_getattr*/ 439c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (setattrfunc)0, /*tp_setattr*/ 440c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (cmpfunc) CFTypeRefObj_compare, /*tp_compare*/ 441c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (reprfunc) CFTypeRefObj_repr, /*tp_repr*/ 442c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PyNumberMethods *)0, /* tp_as_number */ 443c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PySequenceMethods *)0, /* tp_as_sequence */ 444c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PyMappingMethods *)0, /* tp_as_mapping */ 445c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (hashfunc) CFTypeRefObj_hash, /*tp_hash*/ 446c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_call*/ 447c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_str*/ 448c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_GenericGetAttr, /*tp_getattro*/ 449c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_GenericSetAttr, /*tp_setattro */ 450c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_as_buffer*/ 451c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ 452c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_doc*/ 453c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_traverse*/ 454c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_clear*/ 455c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_richcompare*/ 456c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_weaklistoffset*/ 457c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_iter*/ 458c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_iternext*/ 459c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRefObj_methods, /* tp_methods */ 460c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_members*/ 461c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRefObj_getsetlist, /*tp_getset*/ 462c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_base*/ 463c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_dict*/ 464c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_descr_get*/ 465c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_descr_set*/ 466c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_dictoffset*/ 467c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRefObj_tp_init, /* tp_init */ 468c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRefObj_tp_alloc, /* tp_alloc */ 469c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRefObj_tp_new, /* tp_new */ 470c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRefObj_tp_free, /* tp_free */ 47150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen}; 47250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 47350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* ------------------- End object type CFTypeRef -------------------- */ 47450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 47550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 47650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* --------------------- Object type CFArrayRef --------------------- */ 47750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 47850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyTypeObject CFArrayRef_Type; 47950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 480f955784f0cfeecb94d3f2ade83a5ea548391f74bJack Jansen#define CFArrayRefObj_Check(x) ((x)->ob_type == &CFArrayRef_Type || PyObject_TypeCheck((x), &CFArrayRef_Type)) 48150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 48250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansentypedef struct CFArrayRefObject { 483c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_HEAD 484c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRef ob_itself; 485c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou void (*ob_freeit)(CFTypeRef ptr); 48650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} CFArrayRefObject; 48750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 48850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyObject *CFArrayRefObj_New(CFArrayRef itself) 48950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 490c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRefObject *it; 491c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (itself == NULL) 492c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 493c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 494c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 495c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 496c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it = PyObject_NEW(CFArrayRefObject, &CFArrayRef_Type); 497c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (it == NULL) return NULL; 498c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Should we tp_init or tp_new our basetype? */ 499c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it->ob_itself = itself; 500c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it->ob_freeit = CFRelease; 501c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return (PyObject *)it; 50250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 503918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansen 50406d2e1af3579f6a698a84b81dfda0bacb6263f7dJack Jansenint CFArrayRefObj_Convert(PyObject *v, CFArrayRef *p_itself) 50550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 50650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 507c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (v == Py_None) { *p_itself = NULL; return 1; } 508c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Check for other CF objects here */ 50950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 510c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!CFArrayRefObj_Check(v)) 511c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 512c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_TypeError, "CFArrayRef required"); 513c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 514c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 515c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou *p_itself = ((CFArrayRefObject *)v)->ob_itself; 516c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 1; 51750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 51850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 51950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic void CFArrayRefObj_dealloc(CFArrayRefObject *self) 52050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 521c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (self->ob_freeit && self->ob_itself) 522c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 523c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou self->ob_freeit((CFTypeRef)self->ob_itself); 524c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou self->ob_itself = NULL; 525c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 526c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRef_Type.tp_dealloc((PyObject *)self); 52750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 52850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 52950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFArrayRefObj_CFArrayCreateCopy(CFArrayRefObject *_self, PyObject *_args) 53050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 531c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 532c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRef _rv; 533c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 534c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 535c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFArrayCreateCopy((CFAllocatorRef)NULL, 536c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _self->ob_itself); 537c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 538c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRefObj_New, _rv); 539c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 54050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 54150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 54250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFArrayRefObj_CFArrayGetCount(CFArrayRefObject *_self, PyObject *_args) 54350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 544c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 545c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex _rv; 546b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFArrayGetCount 547c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFArrayGetCount); 548b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 549c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 550c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 551c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFArrayGetCount(_self->ob_itself); 552c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 553c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 554c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 55550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 55650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 55750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFArrayRefObj_CFStringCreateByCombiningStrings(CFArrayRefObject *_self, PyObject *_args) 55850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 559c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 560c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 561c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef separatorString; 562c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&", 563c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &separatorString)) 564c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 565c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringCreateByCombiningStrings((CFAllocatorRef)NULL, 566c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _self->ob_itself, 567c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou separatorString); 568c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 569c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 570c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 57150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 57250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 57350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyMethodDef CFArrayRefObj_methods[] = { 574c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFArrayCreateCopy", (PyCFunction)CFArrayRefObj_CFArrayCreateCopy, 1, 575c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFArrayRef _rv)")}, 576c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFArrayGetCount", (PyCFunction)CFArrayRefObj_CFArrayGetCount, 1, 577c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFIndex _rv)")}, 578c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringCreateByCombiningStrings", (PyCFunction)CFArrayRefObj_CFStringCreateByCombiningStrings, 1, 579c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef separatorString) -> (CFStringRef _rv)")}, 580c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL, 0} 58150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen}; 58250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 5833bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFArrayRefObj_getsetlist NULL 58450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 58550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 58650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic int CFArrayRefObj_compare(CFArrayRefObject *self, CFArrayRefObject *other) 58750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 588c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Or should we use CFEqual?? */ 589c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ( self->ob_itself > other->ob_itself ) return 1; 590c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ( self->ob_itself < other->ob_itself ) return -1; 591c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 59250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 59350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 59450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject * CFArrayRefObj_repr(CFArrayRefObject *self) 59550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 596c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char buf[100]; 597c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou sprintf(buf, "<CFArrayRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself); 598c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyString_FromString(buf); 59950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 60050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 60150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic int CFArrayRefObj_hash(CFArrayRefObject *self) 60250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 603c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Or should we use CFHash?? */ 604c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return (int)self->ob_itself; 60550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 606918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansenstatic int CFArrayRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) 6073bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen{ 608c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRef itself; 609c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *kw[] = {"itself", 0}; 6103bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 611c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFArrayRefObj_Convert, &itself)) 612c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 613c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFArrayRefObject *)_self)->ob_itself = itself; 614c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 615c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 6163bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 617c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Any CFTypeRef descendent is allowed as initializer too */ 618c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) 619c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 620c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFArrayRefObject *)_self)->ob_itself = itself; 621c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 622c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 623c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return -1; 6243bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen} 6253bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 6263bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFArrayRefObj_tp_alloc PyType_GenericAlloc 6273bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 628918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansenstatic PyObject *CFArrayRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) 6293bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen{ 630c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *self; 631c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; 632c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFArrayRefObject *)self)->ob_itself = NULL; 633c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFArrayRefObject *)self)->ob_freeit = CFRelease; 634c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return self; 6353bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen} 6363bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 6373bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFArrayRefObj_tp_free PyObject_Del 6383bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 63950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 64050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyTypeObject CFArrayRef_Type = { 641c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_HEAD_INIT(NULL) 642c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*ob_size*/ 643c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou "_CF.CFArrayRef", /*tp_name*/ 644c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou sizeof(CFArrayRefObject), /*tp_basicsize*/ 645c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_itemsize*/ 646c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* methods */ 647c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (destructor) CFArrayRefObj_dealloc, /*tp_dealloc*/ 648c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_print*/ 649c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (getattrfunc)0, /*tp_getattr*/ 650c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (setattrfunc)0, /*tp_setattr*/ 651c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (cmpfunc) CFArrayRefObj_compare, /*tp_compare*/ 652c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (reprfunc) CFArrayRefObj_repr, /*tp_repr*/ 653c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PyNumberMethods *)0, /* tp_as_number */ 654c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PySequenceMethods *)0, /* tp_as_sequence */ 655c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PyMappingMethods *)0, /* tp_as_mapping */ 656c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (hashfunc) CFArrayRefObj_hash, /*tp_hash*/ 657c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_call*/ 658c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_str*/ 659c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_GenericGetAttr, /*tp_getattro*/ 660c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_GenericSetAttr, /*tp_setattro */ 661c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_as_buffer*/ 662c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ 663c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_doc*/ 664c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_traverse*/ 665c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_clear*/ 666c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_richcompare*/ 667c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_weaklistoffset*/ 668c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_iter*/ 669c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_iternext*/ 670c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRefObj_methods, /* tp_methods */ 671c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_members*/ 672c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRefObj_getsetlist, /*tp_getset*/ 673c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_base*/ 674c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_dict*/ 675c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_descr_get*/ 676c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_descr_set*/ 677c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_dictoffset*/ 678c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRefObj_tp_init, /* tp_init */ 679c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRefObj_tp_alloc, /* tp_alloc */ 680c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRefObj_tp_new, /* tp_new */ 681c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRefObj_tp_free, /* tp_free */ 68250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen}; 68350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 68450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* ------------------- End object type CFArrayRef ------------------- */ 68550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 68650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 68750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* ----------------- Object type CFMutableArrayRef ------------------ */ 68850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 68950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyTypeObject CFMutableArrayRef_Type; 69050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 691f955784f0cfeecb94d3f2ade83a5ea548391f74bJack Jansen#define CFMutableArrayRefObj_Check(x) ((x)->ob_type == &CFMutableArrayRef_Type || PyObject_TypeCheck((x), &CFMutableArrayRef_Type)) 69250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 69350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansentypedef struct CFMutableArrayRefObject { 694c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_HEAD 695c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableArrayRef ob_itself; 696c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou void (*ob_freeit)(CFTypeRef ptr); 69750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} CFMutableArrayRefObject; 69850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 69950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyObject *CFMutableArrayRefObj_New(CFMutableArrayRef itself) 70050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 701c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableArrayRefObject *it; 702c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (itself == NULL) 703c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 704c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 705c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 706c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 707c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it = PyObject_NEW(CFMutableArrayRefObject, &CFMutableArrayRef_Type); 708c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (it == NULL) return NULL; 709c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Should we tp_init or tp_new our basetype? */ 710c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it->ob_itself = itself; 711c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it->ob_freeit = CFRelease; 712c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return (PyObject *)it; 71350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 714918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansen 71506d2e1af3579f6a698a84b81dfda0bacb6263f7dJack Jansenint CFMutableArrayRefObj_Convert(PyObject *v, CFMutableArrayRef *p_itself) 71650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 71750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 718c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (v == Py_None) { *p_itself = NULL; return 1; } 719c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Check for other CF objects here */ 72050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 721c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!CFMutableArrayRefObj_Check(v)) 722c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 723c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_TypeError, "CFMutableArrayRef required"); 724c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 725c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 726c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou *p_itself = ((CFMutableArrayRefObject *)v)->ob_itself; 727c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 1; 72850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 72950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 73050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic void CFMutableArrayRefObj_dealloc(CFMutableArrayRefObject *self) 73150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 732c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (self->ob_freeit && self->ob_itself) 733c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 734c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou self->ob_freeit((CFTypeRef)self->ob_itself); 735c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou self->ob_itself = NULL; 736c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 737c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRef_Type.tp_dealloc((PyObject *)self); 73850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 73950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 74050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFMutableArrayRefObj_CFArrayRemoveValueAtIndex(CFMutableArrayRefObject *_self, PyObject *_args) 74150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 742c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 743c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex idx; 744b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFArrayRemoveValueAtIndex 745c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFArrayRemoveValueAtIndex); 746b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 747c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "l", 748c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &idx)) 749c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 750c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRemoveValueAtIndex(_self->ob_itself, 751c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou idx); 752c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 753c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 754c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 75550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 75650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 75750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFMutableArrayRefObj_CFArrayRemoveAllValues(CFMutableArrayRefObject *_self, PyObject *_args) 75850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 759c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 760b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFArrayRemoveAllValues 761c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFArrayRemoveAllValues); 762b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 763c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 764c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 765c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRemoveAllValues(_self->ob_itself); 766c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 767c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 768c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 76950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 77050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 77150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFMutableArrayRefObj_CFArrayExchangeValuesAtIndices(CFMutableArrayRefObject *_self, PyObject *_args) 77250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 773c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 774c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex idx1; 775c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex idx2; 776b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFArrayExchangeValuesAtIndices 777c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFArrayExchangeValuesAtIndices); 778b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 779c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "ll", 780c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &idx1, 781c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &idx2)) 782c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 783c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayExchangeValuesAtIndices(_self->ob_itself, 784c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou idx1, 785c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou idx2); 786c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 787c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 788c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 78950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 79050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 7912168e9d602cffbb6975a11353707a921455c05f7Jack Jansenstatic PyObject *CFMutableArrayRefObj_CFArrayAppendArray(CFMutableArrayRefObject *_self, PyObject *_args) 7922168e9d602cffbb6975a11353707a921455c05f7Jack Jansen{ 793c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 794c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRef otherArray; 795c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange otherRange; 7962168e9d602cffbb6975a11353707a921455c05f7Jack Jansen#ifndef CFArrayAppendArray 797c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFArrayAppendArray); 7982168e9d602cffbb6975a11353707a921455c05f7Jack Jansen#endif 799c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&O&", 800c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRefObj_Convert, &otherArray, 801c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange_Convert, &otherRange)) 802c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 803c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayAppendArray(_self->ob_itself, 804c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou otherArray, 805c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou otherRange); 806c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 807c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 808c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 8092168e9d602cffbb6975a11353707a921455c05f7Jack Jansen} 8102168e9d602cffbb6975a11353707a921455c05f7Jack Jansen 81150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyMethodDef CFMutableArrayRefObj_methods[] = { 812c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFArrayRemoveValueAtIndex", (PyCFunction)CFMutableArrayRefObj_CFArrayRemoveValueAtIndex, 1, 813c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFIndex idx) -> None")}, 814c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFArrayRemoveAllValues", (PyCFunction)CFMutableArrayRefObj_CFArrayRemoveAllValues, 1, 815c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> None")}, 816c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFArrayExchangeValuesAtIndices", (PyCFunction)CFMutableArrayRefObj_CFArrayExchangeValuesAtIndices, 1, 817c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFIndex idx1, CFIndex idx2) -> None")}, 818c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFArrayAppendArray", (PyCFunction)CFMutableArrayRefObj_CFArrayAppendArray, 1, 819c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFArrayRef otherArray, CFRange otherRange) -> None")}, 820c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL, 0} 82150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen}; 82250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 8233bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFMutableArrayRefObj_getsetlist NULL 82450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 82550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 82650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic int CFMutableArrayRefObj_compare(CFMutableArrayRefObject *self, CFMutableArrayRefObject *other) 82750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 828c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Or should we use CFEqual?? */ 829c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ( self->ob_itself > other->ob_itself ) return 1; 830c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ( self->ob_itself < other->ob_itself ) return -1; 831c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 83250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 83350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 83450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject * CFMutableArrayRefObj_repr(CFMutableArrayRefObject *self) 83550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 836c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char buf[100]; 837c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou sprintf(buf, "<CFMutableArrayRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself); 838c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyString_FromString(buf); 83950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 84050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 84150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic int CFMutableArrayRefObj_hash(CFMutableArrayRefObject *self) 84250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 843c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Or should we use CFHash?? */ 844c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return (int)self->ob_itself; 84550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 846918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansenstatic int CFMutableArrayRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) 8473bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen{ 848c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableArrayRef itself; 849c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *kw[] = {"itself", 0}; 8503bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 851c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFMutableArrayRefObj_Convert, &itself)) 852c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 853c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFMutableArrayRefObject *)_self)->ob_itself = itself; 854c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 855c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 8563bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 857c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Any CFTypeRef descendent is allowed as initializer too */ 858c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) 859c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 860c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFMutableArrayRefObject *)_self)->ob_itself = itself; 861c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 862c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 863c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return -1; 8643bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen} 8653bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 8663bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFMutableArrayRefObj_tp_alloc PyType_GenericAlloc 8673bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 868918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansenstatic PyObject *CFMutableArrayRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) 8693bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen{ 870c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *self; 871c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; 872c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFMutableArrayRefObject *)self)->ob_itself = NULL; 873c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFMutableArrayRefObject *)self)->ob_freeit = CFRelease; 874c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return self; 8753bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen} 8763bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 8773bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFMutableArrayRefObj_tp_free PyObject_Del 8783bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 87950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 88050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyTypeObject CFMutableArrayRef_Type = { 881c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_HEAD_INIT(NULL) 882c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*ob_size*/ 883c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou "_CF.CFMutableArrayRef", /*tp_name*/ 884c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou sizeof(CFMutableArrayRefObject), /*tp_basicsize*/ 885c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_itemsize*/ 886c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* methods */ 887c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (destructor) CFMutableArrayRefObj_dealloc, /*tp_dealloc*/ 888c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_print*/ 889c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (getattrfunc)0, /*tp_getattr*/ 890c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (setattrfunc)0, /*tp_setattr*/ 891c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (cmpfunc) CFMutableArrayRefObj_compare, /*tp_compare*/ 892c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (reprfunc) CFMutableArrayRefObj_repr, /*tp_repr*/ 893c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PyNumberMethods *)0, /* tp_as_number */ 894c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PySequenceMethods *)0, /* tp_as_sequence */ 895c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PyMappingMethods *)0, /* tp_as_mapping */ 896c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (hashfunc) CFMutableArrayRefObj_hash, /*tp_hash*/ 897c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_call*/ 898c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_str*/ 899c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_GenericGetAttr, /*tp_getattro*/ 900c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_GenericSetAttr, /*tp_setattro */ 901c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_as_buffer*/ 902c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ 903c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_doc*/ 904c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_traverse*/ 905c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_clear*/ 906c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_richcompare*/ 907c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_weaklistoffset*/ 908c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_iter*/ 909c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_iternext*/ 910c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableArrayRefObj_methods, /* tp_methods */ 911c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_members*/ 912c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableArrayRefObj_getsetlist, /*tp_getset*/ 913c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_base*/ 914c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_dict*/ 915c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_descr_get*/ 916c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_descr_set*/ 917c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_dictoffset*/ 918c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableArrayRefObj_tp_init, /* tp_init */ 919c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableArrayRefObj_tp_alloc, /* tp_alloc */ 920c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableArrayRefObj_tp_new, /* tp_new */ 921c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableArrayRefObj_tp_free, /* tp_free */ 92250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen}; 92350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 92450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* --------------- End object type CFMutableArrayRef ---------------- */ 92550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 92650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 92750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* ------------------ Object type CFDictionaryRef ------------------- */ 92850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 92950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyTypeObject CFDictionaryRef_Type; 93050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 931f955784f0cfeecb94d3f2ade83a5ea548391f74bJack Jansen#define CFDictionaryRefObj_Check(x) ((x)->ob_type == &CFDictionaryRef_Type || PyObject_TypeCheck((x), &CFDictionaryRef_Type)) 93250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 93350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansentypedef struct CFDictionaryRefObject { 934c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_HEAD 935c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDictionaryRef ob_itself; 936c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou void (*ob_freeit)(CFTypeRef ptr); 93750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} CFDictionaryRefObject; 93850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 93950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyObject *CFDictionaryRefObj_New(CFDictionaryRef itself) 94050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 941c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDictionaryRefObject *it; 942c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (itself == NULL) 943c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 944c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 945c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 946c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 947c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it = PyObject_NEW(CFDictionaryRefObject, &CFDictionaryRef_Type); 948c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (it == NULL) return NULL; 949c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Should we tp_init or tp_new our basetype? */ 950c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it->ob_itself = itself; 951c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it->ob_freeit = CFRelease; 952c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return (PyObject *)it; 95350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 954918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansen 95506d2e1af3579f6a698a84b81dfda0bacb6263f7dJack Jansenint CFDictionaryRefObj_Convert(PyObject *v, CFDictionaryRef *p_itself) 95650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 95750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 958c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (v == Py_None) { *p_itself = NULL; return 1; } 959c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Check for other CF objects here */ 96050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 961c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!CFDictionaryRefObj_Check(v)) 962c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 963c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_TypeError, "CFDictionaryRef required"); 964c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 965c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 966c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou *p_itself = ((CFDictionaryRefObject *)v)->ob_itself; 967c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 1; 96850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 96950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 97050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic void CFDictionaryRefObj_dealloc(CFDictionaryRefObject *self) 97150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 972c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (self->ob_freeit && self->ob_itself) 973c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 974c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou self->ob_freeit((CFTypeRef)self->ob_itself); 975c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou self->ob_itself = NULL; 976c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 977c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRef_Type.tp_dealloc((PyObject *)self); 97850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 97950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 98050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFDictionaryRefObj_CFDictionaryCreateCopy(CFDictionaryRefObject *_self, PyObject *_args) 98150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 982c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 983c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDictionaryRef _rv; 984c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 985c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 986c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFDictionaryCreateCopy((CFAllocatorRef)NULL, 987c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _self->ob_itself); 988c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 989c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDictionaryRefObj_New, _rv); 990c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 99150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 99250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 99350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFDictionaryRefObj_CFDictionaryGetCount(CFDictionaryRefObject *_self, PyObject *_args) 99450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 995c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 996c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex _rv; 997b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFDictionaryGetCount 998c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFDictionaryGetCount); 999b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 1000c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 1001c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1002c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFDictionaryGetCount(_self->ob_itself); 1003c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 1004c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 1005c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 100650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 100750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 100850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyMethodDef CFDictionaryRefObj_methods[] = { 1009c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFDictionaryCreateCopy", (PyCFunction)CFDictionaryRefObj_CFDictionaryCreateCopy, 1, 1010c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFDictionaryRef _rv)")}, 1011c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFDictionaryGetCount", (PyCFunction)CFDictionaryRefObj_CFDictionaryGetCount, 1, 1012c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFIndex _rv)")}, 1013c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL, 0} 101450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen}; 101550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 10163bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFDictionaryRefObj_getsetlist NULL 101750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 101850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 101950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic int CFDictionaryRefObj_compare(CFDictionaryRefObject *self, CFDictionaryRefObject *other) 102050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1021c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Or should we use CFEqual?? */ 1022c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ( self->ob_itself > other->ob_itself ) return 1; 1023c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ( self->ob_itself < other->ob_itself ) return -1; 1024c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 102550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 102650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 102750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject * CFDictionaryRefObj_repr(CFDictionaryRefObject *self) 102850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1029c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char buf[100]; 1030c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou sprintf(buf, "<CFDictionaryRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself); 1031c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyString_FromString(buf); 103250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 103350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 103450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic int CFDictionaryRefObj_hash(CFDictionaryRefObject *self) 103550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1036c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Or should we use CFHash?? */ 1037c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return (int)self->ob_itself; 103850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 1039918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansenstatic int CFDictionaryRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) 10403bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen{ 1041c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDictionaryRef itself; 1042c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *kw[] = {"itself", 0}; 10433bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 1044c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFDictionaryRefObj_Convert, &itself)) 1045c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 1046c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFDictionaryRefObject *)_self)->ob_itself = itself; 1047c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 1048c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 10493bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 1050c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Any CFTypeRef descendent is allowed as initializer too */ 1051c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) 1052c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 1053c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFDictionaryRefObject *)_self)->ob_itself = itself; 1054c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 1055c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1056c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return -1; 10573bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen} 10583bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 10593bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFDictionaryRefObj_tp_alloc PyType_GenericAlloc 10603bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 1061918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansenstatic PyObject *CFDictionaryRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) 10623bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen{ 1063c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *self; 1064c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; 1065c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFDictionaryRefObject *)self)->ob_itself = NULL; 1066c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFDictionaryRefObject *)self)->ob_freeit = CFRelease; 1067c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return self; 10683bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen} 10693bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 10703bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFDictionaryRefObj_tp_free PyObject_Del 10713bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 107250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 107350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyTypeObject CFDictionaryRef_Type = { 1074c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_HEAD_INIT(NULL) 1075c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*ob_size*/ 1076c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou "_CF.CFDictionaryRef", /*tp_name*/ 1077c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou sizeof(CFDictionaryRefObject), /*tp_basicsize*/ 1078c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_itemsize*/ 1079c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* methods */ 1080c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (destructor) CFDictionaryRefObj_dealloc, /*tp_dealloc*/ 1081c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_print*/ 1082c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (getattrfunc)0, /*tp_getattr*/ 1083c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (setattrfunc)0, /*tp_setattr*/ 1084c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (cmpfunc) CFDictionaryRefObj_compare, /*tp_compare*/ 1085c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (reprfunc) CFDictionaryRefObj_repr, /*tp_repr*/ 1086c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PyNumberMethods *)0, /* tp_as_number */ 1087c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PySequenceMethods *)0, /* tp_as_sequence */ 1088c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PyMappingMethods *)0, /* tp_as_mapping */ 1089c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (hashfunc) CFDictionaryRefObj_hash, /*tp_hash*/ 1090c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_call*/ 1091c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_str*/ 1092c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_GenericGetAttr, /*tp_getattro*/ 1093c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_GenericSetAttr, /*tp_setattro */ 1094c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_as_buffer*/ 1095c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ 1096c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_doc*/ 1097c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_traverse*/ 1098c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_clear*/ 1099c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_richcompare*/ 1100c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_weaklistoffset*/ 1101c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_iter*/ 1102c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_iternext*/ 1103c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDictionaryRefObj_methods, /* tp_methods */ 1104c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_members*/ 1105c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDictionaryRefObj_getsetlist, /*tp_getset*/ 1106c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_base*/ 1107c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_dict*/ 1108c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_descr_get*/ 1109c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_descr_set*/ 1110c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_dictoffset*/ 1111c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDictionaryRefObj_tp_init, /* tp_init */ 1112c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDictionaryRefObj_tp_alloc, /* tp_alloc */ 1113c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDictionaryRefObj_tp_new, /* tp_new */ 1114c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDictionaryRefObj_tp_free, /* tp_free */ 111550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen}; 111650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 111750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* ---------------- End object type CFDictionaryRef ----------------- */ 111850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 111950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 112050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* --------------- Object type CFMutableDictionaryRef --------------- */ 112150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 112250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyTypeObject CFMutableDictionaryRef_Type; 112350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 1124f955784f0cfeecb94d3f2ade83a5ea548391f74bJack Jansen#define CFMutableDictionaryRefObj_Check(x) ((x)->ob_type == &CFMutableDictionaryRef_Type || PyObject_TypeCheck((x), &CFMutableDictionaryRef_Type)) 112550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 112650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansentypedef struct CFMutableDictionaryRefObject { 1127c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_HEAD 1128c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDictionaryRef ob_itself; 1129c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou void (*ob_freeit)(CFTypeRef ptr); 113050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} CFMutableDictionaryRefObject; 113150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 113250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyObject *CFMutableDictionaryRefObj_New(CFMutableDictionaryRef itself) 113350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1134c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDictionaryRefObject *it; 1135c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (itself == NULL) 1136c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 1137c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 1138c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1139c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1140c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it = PyObject_NEW(CFMutableDictionaryRefObject, &CFMutableDictionaryRef_Type); 1141c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (it == NULL) return NULL; 1142c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Should we tp_init or tp_new our basetype? */ 1143c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it->ob_itself = itself; 1144c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it->ob_freeit = CFRelease; 1145c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return (PyObject *)it; 114650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 1147918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansen 114806d2e1af3579f6a698a84b81dfda0bacb6263f7dJack Jansenint CFMutableDictionaryRefObj_Convert(PyObject *v, CFMutableDictionaryRef *p_itself) 114950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 115050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 1151c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (v == Py_None) { *p_itself = NULL; return 1; } 1152c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Check for other CF objects here */ 115350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 1154c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!CFMutableDictionaryRefObj_Check(v)) 1155c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 1156c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_TypeError, "CFMutableDictionaryRef required"); 1157c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 1158c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1159c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou *p_itself = ((CFMutableDictionaryRefObject *)v)->ob_itself; 1160c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 1; 116150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 116250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 116350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic void CFMutableDictionaryRefObj_dealloc(CFMutableDictionaryRefObject *self) 116450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1165c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (self->ob_freeit && self->ob_itself) 1166c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 1167c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou self->ob_freeit((CFTypeRef)self->ob_itself); 1168c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou self->ob_itself = NULL; 1169c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1170c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDictionaryRef_Type.tp_dealloc((PyObject *)self); 117150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 117250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 117350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFMutableDictionaryRefObj_CFDictionaryRemoveAllValues(CFMutableDictionaryRefObject *_self, PyObject *_args) 117450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1175c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 1176b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFDictionaryRemoveAllValues 1177c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFDictionaryRemoveAllValues); 1178b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 1179c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 1180c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1181c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDictionaryRemoveAllValues(_self->ob_itself); 1182c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1183c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 1184c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 118550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 118650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 118750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyMethodDef CFMutableDictionaryRefObj_methods[] = { 1188c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFDictionaryRemoveAllValues", (PyCFunction)CFMutableDictionaryRefObj_CFDictionaryRemoveAllValues, 1, 1189c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> None")}, 1190c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL, 0} 119150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen}; 119250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 11933bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFMutableDictionaryRefObj_getsetlist NULL 119450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 119550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 119650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic int CFMutableDictionaryRefObj_compare(CFMutableDictionaryRefObject *self, CFMutableDictionaryRefObject *other) 119750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1198c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Or should we use CFEqual?? */ 1199c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ( self->ob_itself > other->ob_itself ) return 1; 1200c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ( self->ob_itself < other->ob_itself ) return -1; 1201c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 120250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 120350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 120450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject * CFMutableDictionaryRefObj_repr(CFMutableDictionaryRefObject *self) 120550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1206c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char buf[100]; 1207c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou sprintf(buf, "<CFMutableDictionaryRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself); 1208c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyString_FromString(buf); 120950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 121050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 121150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic int CFMutableDictionaryRefObj_hash(CFMutableDictionaryRefObject *self) 121250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1213c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Or should we use CFHash?? */ 1214c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return (int)self->ob_itself; 121550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 1216918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansenstatic int CFMutableDictionaryRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) 12173bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen{ 1218c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDictionaryRef itself; 1219c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *kw[] = {"itself", 0}; 12203bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 1221c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFMutableDictionaryRefObj_Convert, &itself)) 1222c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 1223c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFMutableDictionaryRefObject *)_self)->ob_itself = itself; 1224c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 1225c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 12263bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 1227c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Any CFTypeRef descendent is allowed as initializer too */ 1228c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) 1229c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 1230c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFMutableDictionaryRefObject *)_self)->ob_itself = itself; 1231c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 1232c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1233c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return -1; 12343bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen} 12353bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 12363bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFMutableDictionaryRefObj_tp_alloc PyType_GenericAlloc 12373bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 1238918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansenstatic PyObject *CFMutableDictionaryRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) 12393bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen{ 1240c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *self; 1241c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; 1242c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFMutableDictionaryRefObject *)self)->ob_itself = NULL; 1243c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFMutableDictionaryRefObject *)self)->ob_freeit = CFRelease; 1244c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return self; 12453bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen} 12463bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 12473bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFMutableDictionaryRefObj_tp_free PyObject_Del 12483bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 124950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 125050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyTypeObject CFMutableDictionaryRef_Type = { 1251c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_HEAD_INIT(NULL) 1252c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*ob_size*/ 1253c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou "_CF.CFMutableDictionaryRef", /*tp_name*/ 1254c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou sizeof(CFMutableDictionaryRefObject), /*tp_basicsize*/ 1255c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_itemsize*/ 1256c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* methods */ 1257c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (destructor) CFMutableDictionaryRefObj_dealloc, /*tp_dealloc*/ 1258c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_print*/ 1259c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (getattrfunc)0, /*tp_getattr*/ 1260c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (setattrfunc)0, /*tp_setattr*/ 1261c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (cmpfunc) CFMutableDictionaryRefObj_compare, /*tp_compare*/ 1262c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (reprfunc) CFMutableDictionaryRefObj_repr, /*tp_repr*/ 1263c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PyNumberMethods *)0, /* tp_as_number */ 1264c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PySequenceMethods *)0, /* tp_as_sequence */ 1265c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PyMappingMethods *)0, /* tp_as_mapping */ 1266c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (hashfunc) CFMutableDictionaryRefObj_hash, /*tp_hash*/ 1267c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_call*/ 1268c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_str*/ 1269c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_GenericGetAttr, /*tp_getattro*/ 1270c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_GenericSetAttr, /*tp_setattro */ 1271c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_as_buffer*/ 1272c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ 1273c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_doc*/ 1274c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_traverse*/ 1275c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_clear*/ 1276c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_richcompare*/ 1277c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_weaklistoffset*/ 1278c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_iter*/ 1279c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_iternext*/ 1280c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDictionaryRefObj_methods, /* tp_methods */ 1281c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_members*/ 1282c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDictionaryRefObj_getsetlist, /*tp_getset*/ 1283c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_base*/ 1284c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_dict*/ 1285c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_descr_get*/ 1286c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_descr_set*/ 1287c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_dictoffset*/ 1288c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDictionaryRefObj_tp_init, /* tp_init */ 1289c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDictionaryRefObj_tp_alloc, /* tp_alloc */ 1290c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDictionaryRefObj_tp_new, /* tp_new */ 1291c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDictionaryRefObj_tp_free, /* tp_free */ 129250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen}; 129350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 129450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* ------------- End object type CFMutableDictionaryRef ------------- */ 129550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 129650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 129750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* --------------------- Object type CFDataRef ---------------------- */ 129850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 129950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyTypeObject CFDataRef_Type; 130050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 1301f955784f0cfeecb94d3f2ade83a5ea548391f74bJack Jansen#define CFDataRefObj_Check(x) ((x)->ob_type == &CFDataRef_Type || PyObject_TypeCheck((x), &CFDataRef_Type)) 130250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 130350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansentypedef struct CFDataRefObject { 1304c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_HEAD 1305c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRef ob_itself; 1306c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou void (*ob_freeit)(CFTypeRef ptr); 130750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} CFDataRefObject; 130850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 130950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyObject *CFDataRefObj_New(CFDataRef itself) 131050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1311c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRefObject *it; 1312c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (itself == NULL) 1313c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 1314c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 1315c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1316c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1317c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it = PyObject_NEW(CFDataRefObject, &CFDataRef_Type); 1318c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (it == NULL) return NULL; 1319c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Should we tp_init or tp_new our basetype? */ 1320c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it->ob_itself = itself; 1321c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it->ob_freeit = CFRelease; 1322c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return (PyObject *)it; 132350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 1324918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansen 132506d2e1af3579f6a698a84b81dfda0bacb6263f7dJack Jansenint CFDataRefObj_Convert(PyObject *v, CFDataRef *p_itself) 132650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 132750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 1328c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (v == Py_None) { *p_itself = NULL; return 1; } 1329c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyString_Check(v)) { 1330c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *cStr; 1331c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_ssize_t cLen; 1332c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if( PyString_AsStringAndSize(v, &cStr, &cLen) < 0 ) return 0; 1333c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou *p_itself = CFDataCreate((CFAllocatorRef)NULL, (unsigned char *)cStr, cLen); 1334c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 1; 1335c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 133650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 1337c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!CFDataRefObj_Check(v)) 1338c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 1339c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_TypeError, "CFDataRef required"); 1340c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 1341c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1342c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou *p_itself = ((CFDataRefObject *)v)->ob_itself; 1343c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 1; 134450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 134550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 134650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic void CFDataRefObj_dealloc(CFDataRefObject *self) 134750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1348c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (self->ob_freeit && self->ob_itself) 1349c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 1350c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou self->ob_freeit((CFTypeRef)self->ob_itself); 1351c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou self->ob_itself = NULL; 1352c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1353c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRef_Type.tp_dealloc((PyObject *)self); 135450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 135550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 135650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFDataRefObj_CFDataCreateCopy(CFDataRefObject *_self, PyObject *_args) 135750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1358c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 1359c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRef _rv; 1360c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 1361c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1362c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFDataCreateCopy((CFAllocatorRef)NULL, 1363c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _self->ob_itself); 1364c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 1365c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRefObj_New, _rv); 1366c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 136750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 136850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 136950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFDataRefObj_CFDataGetLength(CFDataRefObject *_self, PyObject *_args) 137050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1371c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 1372c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex _rv; 1373b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFDataGetLength 1374c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFDataGetLength); 1375b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 1376c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 1377c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1378c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFDataGetLength(_self->ob_itself); 1379c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 1380c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 1381c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 138250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 138350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 138450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFDataRefObj_CFStringCreateFromExternalRepresentation(CFDataRefObject *_self, PyObject *_args) 138550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1386c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 1387c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 1388c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding encoding; 1389c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "l", 1390c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &encoding)) 1391c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1392c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringCreateFromExternalRepresentation((CFAllocatorRef)NULL, 1393c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _self->ob_itself, 1394c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou encoding); 1395c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 1396c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 1397c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 139850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 139950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 14007906634f28b6c730912bcf51644ae4a8361fb028Jack Jansenstatic PyObject *CFDataRefObj_CFDataGetData(CFDataRefObject *_self, PyObject *_args) 14017906634f28b6c730912bcf51644ae4a8361fb028Jack Jansen{ 1402c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 14037906634f28b6c730912bcf51644ae4a8361fb028Jack Jansen 1404c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int size = CFDataGetLength(_self->ob_itself); 1405c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *data = (char *)CFDataGetBytePtr(_self->ob_itself); 14067906634f28b6c730912bcf51644ae4a8361fb028Jack Jansen 1407c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = (PyObject *)PyString_FromStringAndSize(data, size); 1408c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 14097906634f28b6c730912bcf51644ae4a8361fb028Jack Jansen 14107906634f28b6c730912bcf51644ae4a8361fb028Jack Jansen} 14117906634f28b6c730912bcf51644ae4a8361fb028Jack Jansen 141250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyMethodDef CFDataRefObj_methods[] = { 1413c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFDataCreateCopy", (PyCFunction)CFDataRefObj_CFDataCreateCopy, 1, 1414c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFDataRef _rv)")}, 1415c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFDataGetLength", (PyCFunction)CFDataRefObj_CFDataGetLength, 1, 1416c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFIndex _rv)")}, 1417c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringCreateFromExternalRepresentation", (PyCFunction)CFDataRefObj_CFStringCreateFromExternalRepresentation, 1, 1418c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringEncoding encoding) -> (CFStringRef _rv)")}, 1419c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFDataGetData", (PyCFunction)CFDataRefObj_CFDataGetData, 1, 1420c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (string _rv)")}, 1421c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL, 0} 142250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen}; 142350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 14243bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFDataRefObj_getsetlist NULL 142550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 142650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 142750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic int CFDataRefObj_compare(CFDataRefObject *self, CFDataRefObject *other) 142850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1429c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Or should we use CFEqual?? */ 1430c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ( self->ob_itself > other->ob_itself ) return 1; 1431c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ( self->ob_itself < other->ob_itself ) return -1; 1432c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 143350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 143450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 143550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject * CFDataRefObj_repr(CFDataRefObject *self) 143650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1437c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char buf[100]; 1438c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou sprintf(buf, "<CFDataRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself); 1439c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyString_FromString(buf); 144050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 144150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 144250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic int CFDataRefObj_hash(CFDataRefObject *self) 144350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1444c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Or should we use CFHash?? */ 1445c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return (int)self->ob_itself; 144650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 1447918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansenstatic int CFDataRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) 14483bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen{ 1449c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRef itself; 1450c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *kw[] = {"itself", 0}; 14513bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 1452c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFDataRefObj_Convert, &itself)) 1453c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 1454c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFDataRefObject *)_self)->ob_itself = itself; 1455c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 1456c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 14573bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 1458c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Any CFTypeRef descendent is allowed as initializer too */ 1459c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) 1460c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 1461c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFDataRefObject *)_self)->ob_itself = itself; 1462c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 1463c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1464c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return -1; 14653bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen} 14663bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 14673bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFDataRefObj_tp_alloc PyType_GenericAlloc 14683bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 1469918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansenstatic PyObject *CFDataRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) 14703bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen{ 1471c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *self; 1472c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; 1473c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFDataRefObject *)self)->ob_itself = NULL; 1474c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFDataRefObject *)self)->ob_freeit = CFRelease; 1475c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return self; 14763bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen} 14773bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 14783bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFDataRefObj_tp_free PyObject_Del 14793bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 148050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 148150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyTypeObject CFDataRef_Type = { 1482c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_HEAD_INIT(NULL) 1483c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*ob_size*/ 1484c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou "_CF.CFDataRef", /*tp_name*/ 1485c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou sizeof(CFDataRefObject), /*tp_basicsize*/ 1486c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_itemsize*/ 1487c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* methods */ 1488c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (destructor) CFDataRefObj_dealloc, /*tp_dealloc*/ 1489c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_print*/ 1490c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (getattrfunc)0, /*tp_getattr*/ 1491c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (setattrfunc)0, /*tp_setattr*/ 1492c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (cmpfunc) CFDataRefObj_compare, /*tp_compare*/ 1493c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (reprfunc) CFDataRefObj_repr, /*tp_repr*/ 1494c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PyNumberMethods *)0, /* tp_as_number */ 1495c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PySequenceMethods *)0, /* tp_as_sequence */ 1496c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PyMappingMethods *)0, /* tp_as_mapping */ 1497c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (hashfunc) CFDataRefObj_hash, /*tp_hash*/ 1498c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_call*/ 1499c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_str*/ 1500c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_GenericGetAttr, /*tp_getattro*/ 1501c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_GenericSetAttr, /*tp_setattro */ 1502c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_as_buffer*/ 1503c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ 1504c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_doc*/ 1505c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_traverse*/ 1506c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_clear*/ 1507c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_richcompare*/ 1508c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_weaklistoffset*/ 1509c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_iter*/ 1510c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_iternext*/ 1511c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRefObj_methods, /* tp_methods */ 1512c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_members*/ 1513c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRefObj_getsetlist, /*tp_getset*/ 1514c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_base*/ 1515c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_dict*/ 1516c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_descr_get*/ 1517c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_descr_set*/ 1518c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_dictoffset*/ 1519c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRefObj_tp_init, /* tp_init */ 1520c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRefObj_tp_alloc, /* tp_alloc */ 1521c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRefObj_tp_new, /* tp_new */ 1522c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRefObj_tp_free, /* tp_free */ 152350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen}; 152450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 152550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* ------------------- End object type CFDataRef -------------------- */ 152650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 152750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 152850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* ------------------ Object type CFMutableDataRef ------------------ */ 152950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 153050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyTypeObject CFMutableDataRef_Type; 153150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 1532f955784f0cfeecb94d3f2ade83a5ea548391f74bJack Jansen#define CFMutableDataRefObj_Check(x) ((x)->ob_type == &CFMutableDataRef_Type || PyObject_TypeCheck((x), &CFMutableDataRef_Type)) 153350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 153450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansentypedef struct CFMutableDataRefObject { 1535c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_HEAD 1536c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDataRef ob_itself; 1537c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou void (*ob_freeit)(CFTypeRef ptr); 153850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} CFMutableDataRefObject; 153950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 154050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyObject *CFMutableDataRefObj_New(CFMutableDataRef itself) 154150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1542c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDataRefObject *it; 1543c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (itself == NULL) 1544c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 1545c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 1546c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1547c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1548c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it = PyObject_NEW(CFMutableDataRefObject, &CFMutableDataRef_Type); 1549c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (it == NULL) return NULL; 1550c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Should we tp_init or tp_new our basetype? */ 1551c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it->ob_itself = itself; 1552c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it->ob_freeit = CFRelease; 1553c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return (PyObject *)it; 155450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 1555918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansen 155606d2e1af3579f6a698a84b81dfda0bacb6263f7dJack Jansenint CFMutableDataRefObj_Convert(PyObject *v, CFMutableDataRef *p_itself) 155750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 155850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 1559c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (v == Py_None) { *p_itself = NULL; return 1; } 1560c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Check for other CF objects here */ 156150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 1562c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!CFMutableDataRefObj_Check(v)) 1563c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 1564c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_TypeError, "CFMutableDataRef required"); 1565c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 1566c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1567c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou *p_itself = ((CFMutableDataRefObject *)v)->ob_itself; 1568c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 1; 156950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 157050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 157150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic void CFMutableDataRefObj_dealloc(CFMutableDataRefObject *self) 157250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1573c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (self->ob_freeit && self->ob_itself) 1574c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 1575c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou self->ob_freeit((CFTypeRef)self->ob_itself); 1576c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou self->ob_itself = NULL; 1577c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1578c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRef_Type.tp_dealloc((PyObject *)self); 157950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 158050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 158150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFMutableDataRefObj_CFDataSetLength(CFMutableDataRefObject *_self, PyObject *_args) 158250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1583c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 1584c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex length; 1585b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFDataSetLength 1586c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFDataSetLength); 1587b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 1588c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "l", 1589c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &length)) 1590c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1591c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataSetLength(_self->ob_itself, 1592c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou length); 1593c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1594c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 1595c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 159650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 159750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 159850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFMutableDataRefObj_CFDataIncreaseLength(CFMutableDataRefObject *_self, PyObject *_args) 159950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1600c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 1601c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex extraLength; 1602b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFDataIncreaseLength 1603c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFDataIncreaseLength); 1604b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 1605c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "l", 1606c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &extraLength)) 1607c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1608c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataIncreaseLength(_self->ob_itself, 1609c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou extraLength); 1610c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1611c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 1612c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 161350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 161450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 161550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFMutableDataRefObj_CFDataAppendBytes(CFMutableDataRefObject *_self, PyObject *_args) 161650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1617c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 1618c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou unsigned char *bytes__in__; 1619c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou long bytes__len__; 1620c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int bytes__in_len__; 1621b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFDataAppendBytes 1622c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFDataAppendBytes); 1623b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 1624c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "s#", 1625c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &bytes__in__, &bytes__in_len__)) 1626c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1627c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou bytes__len__ = bytes__in_len__; 1628c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataAppendBytes(_self->ob_itself, 1629c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou bytes__in__, bytes__len__); 1630c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1631c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 1632c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 163350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 163450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 163550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFMutableDataRefObj_CFDataReplaceBytes(CFMutableDataRefObject *_self, PyObject *_args) 163650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1637c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 1638c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange range; 1639c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou unsigned char *newBytes__in__; 1640c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou long newBytes__len__; 1641c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int newBytes__in_len__; 1642b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFDataReplaceBytes 1643c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFDataReplaceBytes); 1644b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 1645c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&s#", 1646c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange_Convert, &range, 1647c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &newBytes__in__, &newBytes__in_len__)) 1648c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1649c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou newBytes__len__ = newBytes__in_len__; 1650c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataReplaceBytes(_self->ob_itself, 1651c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou range, 1652c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou newBytes__in__, newBytes__len__); 1653c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1654c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 1655c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 165650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 165750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 165850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFMutableDataRefObj_CFDataDeleteBytes(CFMutableDataRefObject *_self, PyObject *_args) 165950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1660c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 1661c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange range; 1662b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFDataDeleteBytes 1663c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFDataDeleteBytes); 1664b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 1665c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&", 1666c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange_Convert, &range)) 1667c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1668c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataDeleteBytes(_self->ob_itself, 1669c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou range); 1670c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 1671c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 1672c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 167350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 167450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 167550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyMethodDef CFMutableDataRefObj_methods[] = { 1676c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFDataSetLength", (PyCFunction)CFMutableDataRefObj_CFDataSetLength, 1, 1677c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFIndex length) -> None")}, 1678c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFDataIncreaseLength", (PyCFunction)CFMutableDataRefObj_CFDataIncreaseLength, 1, 1679c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFIndex extraLength) -> None")}, 1680c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFDataAppendBytes", (PyCFunction)CFMutableDataRefObj_CFDataAppendBytes, 1, 1681c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(Buffer bytes) -> None")}, 1682c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFDataReplaceBytes", (PyCFunction)CFMutableDataRefObj_CFDataReplaceBytes, 1, 1683c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFRange range, Buffer newBytes) -> None")}, 1684c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFDataDeleteBytes", (PyCFunction)CFMutableDataRefObj_CFDataDeleteBytes, 1, 1685c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFRange range) -> None")}, 1686c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL, 0} 168750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen}; 168850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 16893bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFMutableDataRefObj_getsetlist NULL 169050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 169150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 169250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic int CFMutableDataRefObj_compare(CFMutableDataRefObject *self, CFMutableDataRefObject *other) 169350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1694c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Or should we use CFEqual?? */ 1695c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ( self->ob_itself > other->ob_itself ) return 1; 1696c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ( self->ob_itself < other->ob_itself ) return -1; 1697c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 169850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 169950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 170050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject * CFMutableDataRefObj_repr(CFMutableDataRefObject *self) 170150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1702c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char buf[100]; 1703c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou sprintf(buf, "<CFMutableDataRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself); 1704c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyString_FromString(buf); 170550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 170650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 170750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic int CFMutableDataRefObj_hash(CFMutableDataRefObject *self) 170850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1709c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Or should we use CFHash?? */ 1710c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return (int)self->ob_itself; 171150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 1712918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansenstatic int CFMutableDataRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) 17133bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen{ 1714c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDataRef itself; 1715c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *kw[] = {"itself", 0}; 17163bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 1717c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFMutableDataRefObj_Convert, &itself)) 1718c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 1719c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFMutableDataRefObject *)_self)->ob_itself = itself; 1720c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 1721c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 17223bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 1723c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Any CFTypeRef descendent is allowed as initializer too */ 1724c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) 1725c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 1726c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFMutableDataRefObject *)_self)->ob_itself = itself; 1727c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 1728c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1729c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return -1; 17303bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen} 17313bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 17323bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFMutableDataRefObj_tp_alloc PyType_GenericAlloc 17333bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 1734918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansenstatic PyObject *CFMutableDataRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) 17353bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen{ 1736c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *self; 1737c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; 1738c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFMutableDataRefObject *)self)->ob_itself = NULL; 1739c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFMutableDataRefObject *)self)->ob_freeit = CFRelease; 1740c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return self; 17413bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen} 17423bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 17433bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFMutableDataRefObj_tp_free PyObject_Del 17443bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 174550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 174650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyTypeObject CFMutableDataRef_Type = { 1747c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_HEAD_INIT(NULL) 1748c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*ob_size*/ 1749c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou "_CF.CFMutableDataRef", /*tp_name*/ 1750c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou sizeof(CFMutableDataRefObject), /*tp_basicsize*/ 1751c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_itemsize*/ 1752c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* methods */ 1753c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (destructor) CFMutableDataRefObj_dealloc, /*tp_dealloc*/ 1754c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_print*/ 1755c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (getattrfunc)0, /*tp_getattr*/ 1756c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (setattrfunc)0, /*tp_setattr*/ 1757c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (cmpfunc) CFMutableDataRefObj_compare, /*tp_compare*/ 1758c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (reprfunc) CFMutableDataRefObj_repr, /*tp_repr*/ 1759c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PyNumberMethods *)0, /* tp_as_number */ 1760c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PySequenceMethods *)0, /* tp_as_sequence */ 1761c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PyMappingMethods *)0, /* tp_as_mapping */ 1762c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (hashfunc) CFMutableDataRefObj_hash, /*tp_hash*/ 1763c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_call*/ 1764c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_str*/ 1765c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_GenericGetAttr, /*tp_getattro*/ 1766c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_GenericSetAttr, /*tp_setattro */ 1767c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_as_buffer*/ 1768c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ 1769c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_doc*/ 1770c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_traverse*/ 1771c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_clear*/ 1772c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_richcompare*/ 1773c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_weaklistoffset*/ 1774c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_iter*/ 1775c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_iternext*/ 1776c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDataRefObj_methods, /* tp_methods */ 1777c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_members*/ 1778c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDataRefObj_getsetlist, /*tp_getset*/ 1779c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_base*/ 1780c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_dict*/ 1781c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_descr_get*/ 1782c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_descr_set*/ 1783c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_dictoffset*/ 1784c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDataRefObj_tp_init, /* tp_init */ 1785c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDataRefObj_tp_alloc, /* tp_alloc */ 1786c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDataRefObj_tp_new, /* tp_new */ 1787c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDataRefObj_tp_free, /* tp_free */ 178850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen}; 178950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 179050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* ---------------- End object type CFMutableDataRef ---------------- */ 179150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 179250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 179350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* -------------------- Object type CFStringRef --------------------- */ 179450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 179550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyTypeObject CFStringRef_Type; 179650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 1797f955784f0cfeecb94d3f2ade83a5ea548391f74bJack Jansen#define CFStringRefObj_Check(x) ((x)->ob_type == &CFStringRef_Type || PyObject_TypeCheck((x), &CFStringRef_Type)) 179850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 179950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansentypedef struct CFStringRefObject { 1800c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_HEAD 1801c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef ob_itself; 1802c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou void (*ob_freeit)(CFTypeRef ptr); 180350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} CFStringRefObject; 180450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 180550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyObject *CFStringRefObj_New(CFStringRef itself) 180650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1807c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObject *it; 1808c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (itself == NULL) 1809c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 1810c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 1811c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1812c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1813c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it = PyObject_NEW(CFStringRefObject, &CFStringRef_Type); 1814c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (it == NULL) return NULL; 1815c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Should we tp_init or tp_new our basetype? */ 1816c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it->ob_itself = itself; 1817c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it->ob_freeit = CFRelease; 1818c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return (PyObject *)it; 181950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 1820918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansen 182106d2e1af3579f6a698a84b81dfda0bacb6263f7dJack Jansenint CFStringRefObj_Convert(PyObject *v, CFStringRef *p_itself) 182250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 182350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 1824c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (v == Py_None) { *p_itself = NULL; return 1; } 1825c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyString_Check(v)) { 1826c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *cStr; 1827c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_Parse(v, "es", "ascii", &cStr)) 1828c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 1829c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou *p_itself = CFStringCreateWithCString((CFAllocatorRef)NULL, cStr, kCFStringEncodingASCII); 1830c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMem_Free(cStr); 1831c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 1; 1832c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1833c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyUnicode_Check(v)) { 1834c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* We use the CF types here, if Python was configured differently that will give an error */ 1835c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex size = PyUnicode_GetSize(v); 1836c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou UniChar *unichars = PyUnicode_AsUnicode(v); 1837c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!unichars) return 0; 1838c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou *p_itself = CFStringCreateWithCharacters((CFAllocatorRef)NULL, unichars, size); 1839c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 1; 1840c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1841c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 1842c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 1843c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!CFStringRefObj_Check(v)) 1844c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 1845c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_TypeError, "CFStringRef required"); 1846c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 1847c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1848c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou *p_itself = ((CFStringRefObject *)v)->ob_itself; 1849c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 1; 185050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 185150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 185250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic void CFStringRefObj_dealloc(CFStringRefObject *self) 185350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1854c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (self->ob_freeit && self->ob_itself) 1855c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 1856c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou self->ob_freeit((CFTypeRef)self->ob_itself); 1857c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou self->ob_itself = NULL; 1858c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 1859c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRef_Type.tp_dealloc((PyObject *)self); 186050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 186150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 186250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFStringCreateWithSubstring(CFStringRefObject *_self, PyObject *_args) 186350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1864c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 1865c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 1866c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange range; 1867c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&", 1868c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange_Convert, &range)) 1869c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1870c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringCreateWithSubstring((CFAllocatorRef)NULL, 1871c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _self->ob_itself, 1872c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou range); 1873c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 1874c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 1875c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 187650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 187750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 187850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFStringCreateCopy(CFStringRefObject *_self, PyObject *_args) 187950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1880c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 1881c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 1882c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 1883c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1884c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringCreateCopy((CFAllocatorRef)NULL, 1885c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _self->ob_itself); 1886c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 1887c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 1888c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 188950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 189050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 189150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFStringGetLength(CFStringRefObject *_self, PyObject *_args) 189250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1893c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 1894c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex _rv; 1895b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringGetLength 1896c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringGetLength); 1897b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 1898c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 1899c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1900c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringGetLength(_self->ob_itself); 1901c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 1902c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 1903c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 190450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 190550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 190650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFStringGetBytes(CFStringRefObject *_self, PyObject *_args) 190750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1908c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 1909c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex _rv; 1910c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange range; 1911c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding encoding; 1912c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou UInt8 lossByte; 1913c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Boolean isExternalRepresentation; 1914c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou UInt8 buffer; 1915c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex maxBufLen; 1916c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex usedBufLen; 1917b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringGetBytes 1918c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringGetBytes); 1919b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 1920c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&lbll", 1921c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange_Convert, &range, 1922c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &encoding, 1923c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &lossByte, 1924c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &isExternalRepresentation, 1925c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &maxBufLen)) 1926c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1927c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringGetBytes(_self->ob_itself, 1928c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou range, 1929c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou encoding, 1930c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou lossByte, 1931c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou isExternalRepresentation, 1932c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &buffer, 1933c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou maxBufLen, 1934c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &usedBufLen); 1935c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("lbl", 1936c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv, 1937c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou buffer, 1938c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou usedBufLen); 1939c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 194050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 194150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 194250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFStringCreateExternalRepresentation(CFStringRefObject *_self, PyObject *_args) 194350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1944c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 1945c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRef _rv; 1946c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding encoding; 1947c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou UInt8 lossByte; 1948c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "lb", 1949c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &encoding, 1950c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &lossByte)) 1951c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1952c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringCreateExternalRepresentation((CFAllocatorRef)NULL, 1953c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _self->ob_itself, 1954c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou encoding, 1955c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou lossByte); 1956c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 1957c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRefObj_New, _rv); 1958c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 195950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 196050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 196150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFStringGetSmallestEncoding(CFStringRefObject *_self, PyObject *_args) 196250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1963c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 1964c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding _rv; 1965b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringGetSmallestEncoding 1966c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringGetSmallestEncoding); 1967b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 1968c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 1969c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1970c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringGetSmallestEncoding(_self->ob_itself); 1971c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 1972c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 1973c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 197450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 197550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 197650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFStringGetFastestEncoding(CFStringRefObject *_self, PyObject *_args) 197750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1978c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 1979c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding _rv; 1980b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringGetFastestEncoding 1981c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringGetFastestEncoding); 1982b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 1983c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 1984c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 1985c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringGetFastestEncoding(_self->ob_itself); 1986c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 1987c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 1988c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 198950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 199050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 199150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFStringCompareWithOptions(CFStringRefObject *_self, PyObject *_args) 199250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 1993c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 1994c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFComparisonResult _rv; 1995c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef theString2; 1996c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange rangeToCompare; 1997c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFOptionFlags compareOptions; 1998b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringCompareWithOptions 1999c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringCompareWithOptions); 2000b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 2001c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&O&l", 2002c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &theString2, 2003c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange_Convert, &rangeToCompare, 2004c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &compareOptions)) 2005c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2006c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringCompareWithOptions(_self->ob_itself, 2007c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou theString2, 2008c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou rangeToCompare, 2009c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou compareOptions); 2010c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 2011c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 2012c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 201350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 201450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 201550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFStringCompare(CFStringRefObject *_self, PyObject *_args) 201650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2017c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2018c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFComparisonResult _rv; 2019c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef theString2; 2020c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFOptionFlags compareOptions; 2021b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringCompare 2022c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringCompare); 2023b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 2024c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&l", 2025c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &theString2, 2026c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &compareOptions)) 2027c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2028c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringCompare(_self->ob_itself, 2029c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou theString2, 2030c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou compareOptions); 2031c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 2032c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 2033c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 203450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 203550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 203650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFStringFindWithOptions(CFStringRefObject *_self, PyObject *_args) 203750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2038c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2039c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Boolean _rv; 2040c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef stringToFind; 2041c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange rangeToSearch; 2042c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFOptionFlags searchOptions; 2043c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange result; 2044b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringFindWithOptions 2045c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringFindWithOptions); 2046b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 2047c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&O&l", 2048c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &stringToFind, 2049c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange_Convert, &rangeToSearch, 2050c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &searchOptions)) 2051c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2052c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringFindWithOptions(_self->ob_itself, 2053c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou stringToFind, 2054c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou rangeToSearch, 2055c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou searchOptions, 2056c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &result); 2057c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("lO&", 2058c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv, 2059c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange_New, result); 2060c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 206150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 206250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 206350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFStringCreateArrayWithFindResults(CFStringRefObject *_self, PyObject *_args) 206450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2065c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2066c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRef _rv; 2067c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef stringToFind; 2068c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange rangeToSearch; 2069c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFOptionFlags compareOptions; 2070c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&O&l", 2071c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &stringToFind, 2072c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange_Convert, &rangeToSearch, 2073c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &compareOptions)) 2074c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2075c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringCreateArrayWithFindResults((CFAllocatorRef)NULL, 2076c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _self->ob_itself, 2077c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou stringToFind, 2078c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou rangeToSearch, 2079c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou compareOptions); 2080c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 2081c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRefObj_New, _rv); 2082c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 208350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 208450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 208550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFStringFind(CFStringRefObject *_self, PyObject *_args) 208650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2087c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2088c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange _rv; 2089c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef stringToFind; 2090c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFOptionFlags compareOptions; 2091b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringFind 2092c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringFind); 2093b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 2094c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&l", 2095c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &stringToFind, 2096c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &compareOptions)) 2097c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2098c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringFind(_self->ob_itself, 2099c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou stringToFind, 2100c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou compareOptions); 2101c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 2102c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange_New, _rv); 2103c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 210450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 210550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 210650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFStringHasPrefix(CFStringRefObject *_self, PyObject *_args) 210750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2108c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2109c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Boolean _rv; 2110c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef prefix; 2111b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringHasPrefix 2112c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringHasPrefix); 2113b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 2114c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&", 2115c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &prefix)) 2116c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2117c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringHasPrefix(_self->ob_itself, 2118c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou prefix); 2119c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 2120c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 2121c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 212250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 212350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 212450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFStringHasSuffix(CFStringRefObject *_self, PyObject *_args) 212550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2126c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2127c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Boolean _rv; 2128c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef suffix; 2129b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringHasSuffix 2130c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringHasSuffix); 2131b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 2132c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&", 2133c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &suffix)) 2134c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2135c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringHasSuffix(_self->ob_itself, 2136c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou suffix); 2137c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 2138c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 2139c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 214050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 214150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 214250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFStringGetLineBounds(CFStringRefObject *_self, PyObject *_args) 214350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2144c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2145c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange range; 2146c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex lineBeginIndex; 2147c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex lineEndIndex; 2148c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex contentsEndIndex; 2149b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringGetLineBounds 2150c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringGetLineBounds); 2151b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 2152c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&", 2153c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange_Convert, &range)) 2154c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2155c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringGetLineBounds(_self->ob_itself, 2156c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou range, 2157c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &lineBeginIndex, 2158c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &lineEndIndex, 2159c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &contentsEndIndex); 2160c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("lll", 2161c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou lineBeginIndex, 2162c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou lineEndIndex, 2163c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou contentsEndIndex); 2164c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 216550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 216650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 216750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFStringCreateArrayBySeparatingStrings(CFStringRefObject *_self, PyObject *_args) 216850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2169c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2170c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRef _rv; 2171c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef separatorString; 2172c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&", 2173c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &separatorString)) 2174c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2175c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringCreateArrayBySeparatingStrings((CFAllocatorRef)NULL, 2176c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _self->ob_itself, 2177c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou separatorString); 2178c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 2179c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRefObj_New, _rv); 2180c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 218150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 218250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 218350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFStringGetIntValue(CFStringRefObject *_self, PyObject *_args) 218450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2185c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2186c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou SInt32 _rv; 2187b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringGetIntValue 2188c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringGetIntValue); 2189b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 2190c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 2191c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2192c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringGetIntValue(_self->ob_itself); 2193c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 2194c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 2195c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 219650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 219750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 219850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFStringGetDoubleValue(CFStringRefObject *_self, PyObject *_args) 219950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2200c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2201c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou double _rv; 2202b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringGetDoubleValue 2203c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringGetDoubleValue); 2204b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 2205c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 2206c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2207c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringGetDoubleValue(_self->ob_itself); 2208c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("d", 2209c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 2210c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 221150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 221250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 221350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFStringConvertIANACharSetNameToEncoding(CFStringRefObject *_self, PyObject *_args) 221450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2215c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2216c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding _rv; 2217b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringConvertIANACharSetNameToEncoding 2218c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringConvertIANACharSetNameToEncoding); 2219b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 2220c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 2221c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2222c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringConvertIANACharSetNameToEncoding(_self->ob_itself); 2223c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 2224c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 2225c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 222650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 222750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 222850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFShowStr(CFStringRefObject *_self, PyObject *_args) 222950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2230c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2231b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFShowStr 2232c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFShowStr); 2233b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 2234c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 2235c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2236c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFShowStr(_self->ob_itself); 2237c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 2238c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 2239c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 224050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 224150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 224250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFURLCreateWithString(CFStringRefObject *_self, PyObject *_args) 224350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2244c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2245c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRef _rv; 2246c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRef baseURL; 2247c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&", 2248c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou OptionalCFURLRefObj_Convert, &baseURL)) 2249c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2250c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCreateWithString((CFAllocatorRef)NULL, 2251c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _self->ob_itself, 2252c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou baseURL); 2253c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 2254c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRefObj_New, _rv); 2255c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 225650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 225750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 225850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFURLCreateWithFileSystemPath(CFStringRefObject *_self, PyObject *_args) 225950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2260c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2261c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRef _rv; 2262c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLPathStyle pathStyle; 2263c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Boolean isDirectory; 2264c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "ll", 2265c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &pathStyle, 2266c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &isDirectory)) 2267c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2268c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCreateWithFileSystemPath((CFAllocatorRef)NULL, 2269c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _self->ob_itself, 2270c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou pathStyle, 2271c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou isDirectory); 2272c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 2273c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRefObj_New, _rv); 2274c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 227550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 227650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 22772168e9d602cffbb6975a11353707a921455c05f7Jack Jansenstatic PyObject *CFStringRefObj_CFURLCreateWithFileSystemPathRelativeToBase(CFStringRefObject *_self, PyObject *_args) 22782168e9d602cffbb6975a11353707a921455c05f7Jack Jansen{ 2279c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2280c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRef _rv; 2281c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLPathStyle pathStyle; 2282c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Boolean isDirectory; 2283c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRef baseURL; 2284c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "llO&", 2285c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &pathStyle, 2286c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &isDirectory, 2287c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou OptionalCFURLRefObj_Convert, &baseURL)) 2288c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2289c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCreateWithFileSystemPathRelativeToBase((CFAllocatorRef)NULL, 2290c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _self->ob_itself, 2291c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou pathStyle, 2292c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou isDirectory, 2293c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou baseURL); 2294c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 2295c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRefObj_New, _rv); 2296c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 22972168e9d602cffbb6975a11353707a921455c05f7Jack Jansen} 22982168e9d602cffbb6975a11353707a921455c05f7Jack Jansen 229950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFURLCreateStringByReplacingPercentEscapes(CFStringRefObject *_self, PyObject *_args) 230050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2301c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2302c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 2303c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef charactersToLeaveEscaped; 2304c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&", 2305c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &charactersToLeaveEscaped)) 2306c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2307c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCreateStringByReplacingPercentEscapes((CFAllocatorRef)NULL, 2308c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _self->ob_itself, 2309c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou charactersToLeaveEscaped); 2310c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 2311c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 2312c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 231350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 231450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 23152168e9d602cffbb6975a11353707a921455c05f7Jack Jansenstatic PyObject *CFStringRefObj_CFURLCreateStringByAddingPercentEscapes(CFStringRefObject *_self, PyObject *_args) 23162168e9d602cffbb6975a11353707a921455c05f7Jack Jansen{ 2317c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2318c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 2319c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef charactersToLeaveUnescaped; 2320c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef legalURLCharactersToBeEscaped; 2321c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding encoding; 2322c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&O&l", 2323c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &charactersToLeaveUnescaped, 2324c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &legalURLCharactersToBeEscaped, 2325c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &encoding)) 2326c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2327c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCreateStringByAddingPercentEscapes((CFAllocatorRef)NULL, 2328c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _self->ob_itself, 2329c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou charactersToLeaveUnescaped, 2330c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou legalURLCharactersToBeEscaped, 2331c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou encoding); 2332c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 2333c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 2334c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 23352168e9d602cffbb6975a11353707a921455c05f7Jack Jansen} 23362168e9d602cffbb6975a11353707a921455c05f7Jack Jansen 233750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFStringGetString(CFStringRefObject *_self, PyObject *_args) 233850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2339c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 234050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 2341c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int size = CFStringGetLength(_self->ob_itself)+1; 2342c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *data = malloc(size); 234350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 2344c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if( data == NULL ) return PyErr_NoMemory(); 2345c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ( CFStringGetCString(_self->ob_itself, data, size, 0) ) { 2346c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = (PyObject *)PyString_FromString(data); 2347c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } else { 2348c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_RuntimeError, "CFStringGetCString could not fit the string"); 2349c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = NULL; 2350c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 2351c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou free(data); 2352c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 235350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 235450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 235550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 235650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFStringRefObj_CFStringGetUnicode(CFStringRefObject *_self, PyObject *_args) 235750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2358c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 235950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 2360c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int size = CFStringGetLength(_self->ob_itself)+1; 2361c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_UNICODE *data = malloc(size*sizeof(Py_UNICODE)); 2362c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange range; 236350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 2364c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou range.location = 0; 2365c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou range.length = size; 2366c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if( data == NULL ) return PyErr_NoMemory(); 2367c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringGetCharacters(_self->ob_itself, range, data); 2368c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = (PyObject *)PyUnicode_FromUnicode(data, size-1); 2369c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou free(data); 2370c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 237150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 237250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 237350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 237450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyMethodDef CFStringRefObj_methods[] = { 2375c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringCreateWithSubstring", (PyCFunction)CFStringRefObj_CFStringCreateWithSubstring, 1, 2376c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFRange range) -> (CFStringRef _rv)")}, 2377c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringCreateCopy", (PyCFunction)CFStringRefObj_CFStringCreateCopy, 1, 2378c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFStringRef _rv)")}, 2379c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringGetLength", (PyCFunction)CFStringRefObj_CFStringGetLength, 1, 2380c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFIndex _rv)")}, 2381c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringGetBytes", (PyCFunction)CFStringRefObj_CFStringGetBytes, 1, 2382c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFRange range, CFStringEncoding encoding, UInt8 lossByte, Boolean isExternalRepresentation, CFIndex maxBufLen) -> (CFIndex _rv, UInt8 buffer, CFIndex usedBufLen)")}, 2383c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringCreateExternalRepresentation", (PyCFunction)CFStringRefObj_CFStringCreateExternalRepresentation, 1, 2384c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringEncoding encoding, UInt8 lossByte) -> (CFDataRef _rv)")}, 2385c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringGetSmallestEncoding", (PyCFunction)CFStringRefObj_CFStringGetSmallestEncoding, 1, 2386c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFStringEncoding _rv)")}, 2387c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringGetFastestEncoding", (PyCFunction)CFStringRefObj_CFStringGetFastestEncoding, 1, 2388c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFStringEncoding _rv)")}, 2389c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringCompareWithOptions", (PyCFunction)CFStringRefObj_CFStringCompareWithOptions, 1, 2390c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef theString2, CFRange rangeToCompare, CFOptionFlags compareOptions) -> (CFComparisonResult _rv)")}, 2391c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringCompare", (PyCFunction)CFStringRefObj_CFStringCompare, 1, 2392c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef theString2, CFOptionFlags compareOptions) -> (CFComparisonResult _rv)")}, 2393c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringFindWithOptions", (PyCFunction)CFStringRefObj_CFStringFindWithOptions, 1, 2394c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef stringToFind, CFRange rangeToSearch, CFOptionFlags searchOptions) -> (Boolean _rv, CFRange result)")}, 2395c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringCreateArrayWithFindResults", (PyCFunction)CFStringRefObj_CFStringCreateArrayWithFindResults, 1, 2396c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef stringToFind, CFRange rangeToSearch, CFOptionFlags compareOptions) -> (CFArrayRef _rv)")}, 2397c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringFind", (PyCFunction)CFStringRefObj_CFStringFind, 1, 2398c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef stringToFind, CFOptionFlags compareOptions) -> (CFRange _rv)")}, 2399c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringHasPrefix", (PyCFunction)CFStringRefObj_CFStringHasPrefix, 1, 2400c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef prefix) -> (Boolean _rv)")}, 2401c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringHasSuffix", (PyCFunction)CFStringRefObj_CFStringHasSuffix, 1, 2402c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef suffix) -> (Boolean _rv)")}, 2403c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringGetLineBounds", (PyCFunction)CFStringRefObj_CFStringGetLineBounds, 1, 2404c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFRange range) -> (CFIndex lineBeginIndex, CFIndex lineEndIndex, CFIndex contentsEndIndex)")}, 2405c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringCreateArrayBySeparatingStrings", (PyCFunction)CFStringRefObj_CFStringCreateArrayBySeparatingStrings, 1, 2406c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef separatorString) -> (CFArrayRef _rv)")}, 2407c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringGetIntValue", (PyCFunction)CFStringRefObj_CFStringGetIntValue, 1, 2408c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (SInt32 _rv)")}, 2409c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringGetDoubleValue", (PyCFunction)CFStringRefObj_CFStringGetDoubleValue, 1, 2410c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (double _rv)")}, 2411c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringConvertIANACharSetNameToEncoding", (PyCFunction)CFStringRefObj_CFStringConvertIANACharSetNameToEncoding, 1, 2412c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFStringEncoding _rv)")}, 2413c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFShowStr", (PyCFunction)CFStringRefObj_CFShowStr, 1, 2414c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> None")}, 2415c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCreateWithString", (PyCFunction)CFStringRefObj_CFURLCreateWithString, 1, 2416c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFURLRef baseURL) -> (CFURLRef _rv)")}, 2417c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCreateWithFileSystemPath", (PyCFunction)CFStringRefObj_CFURLCreateWithFileSystemPath, 1, 2418c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFURLPathStyle pathStyle, Boolean isDirectory) -> (CFURLRef _rv)")}, 2419c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCreateWithFileSystemPathRelativeToBase", (PyCFunction)CFStringRefObj_CFURLCreateWithFileSystemPathRelativeToBase, 1, 2420c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFURLPathStyle pathStyle, Boolean isDirectory, CFURLRef baseURL) -> (CFURLRef _rv)")}, 2421c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCreateStringByReplacingPercentEscapes", (PyCFunction)CFStringRefObj_CFURLCreateStringByReplacingPercentEscapes, 1, 2422c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef charactersToLeaveEscaped) -> (CFStringRef _rv)")}, 2423c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCreateStringByAddingPercentEscapes", (PyCFunction)CFStringRefObj_CFURLCreateStringByAddingPercentEscapes, 1, 2424c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef charactersToLeaveUnescaped, CFStringRef legalURLCharactersToBeEscaped, CFStringEncoding encoding) -> (CFStringRef _rv)")}, 2425c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringGetString", (PyCFunction)CFStringRefObj_CFStringGetString, 1, 2426c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (string _rv)")}, 2427c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringGetUnicode", (PyCFunction)CFStringRefObj_CFStringGetUnicode, 1, 2428c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (unicode _rv)")}, 2429c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL, 0} 243050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen}; 243150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 24323bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFStringRefObj_getsetlist NULL 243350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 243450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 243550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic int CFStringRefObj_compare(CFStringRefObject *self, CFStringRefObject *other) 243650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2437c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Or should we use CFEqual?? */ 2438c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ( self->ob_itself > other->ob_itself ) return 1; 2439c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ( self->ob_itself < other->ob_itself ) return -1; 2440c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 244150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 244250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 244350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject * CFStringRefObj_repr(CFStringRefObject *self) 244450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2445c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char buf[100]; 2446c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou sprintf(buf, "<CFStringRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself); 2447c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyString_FromString(buf); 244850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 244950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 245050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic int CFStringRefObj_hash(CFStringRefObject *self) 245150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2452c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Or should we use CFHash?? */ 2453c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return (int)self->ob_itself; 245450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 2455918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansenstatic int CFStringRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) 24563bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen{ 2457c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef itself; 2458c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *kw[] = {"itself", 0}; 24593bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 2460c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFStringRefObj_Convert, &itself)) 2461c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 2462c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFStringRefObject *)_self)->ob_itself = itself; 2463c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 2464c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 24653bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 2466c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Any CFTypeRef descendent is allowed as initializer too */ 2467c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) 2468c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 2469c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFStringRefObject *)_self)->ob_itself = itself; 2470c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 2471c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 2472c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return -1; 24733bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen} 24743bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 24753bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFStringRefObj_tp_alloc PyType_GenericAlloc 24763bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 2477918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansenstatic PyObject *CFStringRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) 24783bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen{ 2479c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *self; 2480c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; 2481c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFStringRefObject *)self)->ob_itself = NULL; 2482c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFStringRefObject *)self)->ob_freeit = CFRelease; 2483c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return self; 24843bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen} 24853bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 24863bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFStringRefObj_tp_free PyObject_Del 24873bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 248850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 248950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyTypeObject CFStringRef_Type = { 2490c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_HEAD_INIT(NULL) 2491c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*ob_size*/ 2492c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou "_CF.CFStringRef", /*tp_name*/ 2493c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou sizeof(CFStringRefObject), /*tp_basicsize*/ 2494c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_itemsize*/ 2495c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* methods */ 2496c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (destructor) CFStringRefObj_dealloc, /*tp_dealloc*/ 2497c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_print*/ 2498c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (getattrfunc)0, /*tp_getattr*/ 2499c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (setattrfunc)0, /*tp_setattr*/ 2500c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (cmpfunc) CFStringRefObj_compare, /*tp_compare*/ 2501c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (reprfunc) CFStringRefObj_repr, /*tp_repr*/ 2502c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PyNumberMethods *)0, /* tp_as_number */ 2503c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PySequenceMethods *)0, /* tp_as_sequence */ 2504c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PyMappingMethods *)0, /* tp_as_mapping */ 2505c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (hashfunc) CFStringRefObj_hash, /*tp_hash*/ 2506c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_call*/ 2507c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_str*/ 2508c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_GenericGetAttr, /*tp_getattro*/ 2509c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_GenericSetAttr, /*tp_setattro */ 2510c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_as_buffer*/ 2511c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ 2512c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_doc*/ 2513c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_traverse*/ 2514c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_clear*/ 2515c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_richcompare*/ 2516c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_weaklistoffset*/ 2517c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_iter*/ 2518c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_iternext*/ 2519c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_methods, /* tp_methods */ 2520c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_members*/ 2521c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_getsetlist, /*tp_getset*/ 2522c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_base*/ 2523c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_dict*/ 2524c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_descr_get*/ 2525c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_descr_set*/ 2526c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_dictoffset*/ 2527c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_tp_init, /* tp_init */ 2528c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_tp_alloc, /* tp_alloc */ 2529c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_tp_new, /* tp_new */ 2530c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_tp_free, /* tp_free */ 253150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen}; 253250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 253350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* ------------------ End object type CFStringRef ------------------- */ 253450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 253550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 253650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* ----------------- Object type CFMutableStringRef ----------------- */ 253750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 253850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyTypeObject CFMutableStringRef_Type; 253950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 2540f955784f0cfeecb94d3f2ade83a5ea548391f74bJack Jansen#define CFMutableStringRefObj_Check(x) ((x)->ob_type == &CFMutableStringRef_Type || PyObject_TypeCheck((x), &CFMutableStringRef_Type)) 254150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 254250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansentypedef struct CFMutableStringRefObject { 2543c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_HEAD 2544c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableStringRef ob_itself; 2545c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou void (*ob_freeit)(CFTypeRef ptr); 254650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} CFMutableStringRefObject; 254750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 254850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyObject *CFMutableStringRefObj_New(CFMutableStringRef itself) 254950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2550c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableStringRefObject *it; 2551c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (itself == NULL) 2552c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 2553c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 2554c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2555c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 2556c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it = PyObject_NEW(CFMutableStringRefObject, &CFMutableStringRef_Type); 2557c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (it == NULL) return NULL; 2558c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Should we tp_init or tp_new our basetype? */ 2559c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it->ob_itself = itself; 2560c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it->ob_freeit = CFRelease; 2561c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return (PyObject *)it; 256250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 2563918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansen 256406d2e1af3579f6a698a84b81dfda0bacb6263f7dJack Jansenint CFMutableStringRefObj_Convert(PyObject *v, CFMutableStringRef *p_itself) 256550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 256650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 2567c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (v == Py_None) { *p_itself = NULL; return 1; } 2568c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Check for other CF objects here */ 256950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 2570c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!CFMutableStringRefObj_Check(v)) 2571c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 2572c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_TypeError, "CFMutableStringRef required"); 2573c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 2574c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 2575c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou *p_itself = ((CFMutableStringRefObject *)v)->ob_itself; 2576c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 1; 257750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 257850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 257950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic void CFMutableStringRefObj_dealloc(CFMutableStringRefObject *self) 258050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2581c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (self->ob_freeit && self->ob_itself) 2582c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 2583c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou self->ob_freeit((CFTypeRef)self->ob_itself); 2584c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou self->ob_itself = NULL; 2585c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 2586c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef_Type.tp_dealloc((PyObject *)self); 258750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 258850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 258950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFMutableStringRefObj_CFStringAppend(CFMutableStringRefObject *_self, PyObject *_args) 259050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2591c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2592c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef appendedString; 2593b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringAppend 2594c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringAppend); 2595b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 2596c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&", 2597c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &appendedString)) 2598c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2599c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringAppend(_self->ob_itself, 2600c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou appendedString); 2601c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 2602c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 2603c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 260450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 260550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 260669ac361cb54c2134a13bd27b685ba8d01e3c9aa9Jack Jansenstatic PyObject *CFMutableStringRefObj_CFStringAppendCharacters(CFMutableStringRefObject *_self, PyObject *_args) 260769ac361cb54c2134a13bd27b685ba8d01e3c9aa9Jack Jansen{ 2608c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2609c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou UniChar *chars__in__; 2610c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou UniCharCount chars__len__; 2611c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int chars__in_len__; 261269ac361cb54c2134a13bd27b685ba8d01e3c9aa9Jack Jansen#ifndef CFStringAppendCharacters 2613c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringAppendCharacters); 261469ac361cb54c2134a13bd27b685ba8d01e3c9aa9Jack Jansen#endif 2615c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "u#", 2616c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &chars__in__, &chars__in_len__)) 2617c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2618c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou chars__len__ = chars__in_len__; 2619c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringAppendCharacters(_self->ob_itself, 2620c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou chars__in__, chars__len__); 2621c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 2622c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 2623c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 262469ac361cb54c2134a13bd27b685ba8d01e3c9aa9Jack Jansen} 262569ac361cb54c2134a13bd27b685ba8d01e3c9aa9Jack Jansen 262650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFMutableStringRefObj_CFStringAppendPascalString(CFMutableStringRefObject *_self, PyObject *_args) 262750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2628c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2629c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Str255 pStr; 2630c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding encoding; 2631b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringAppendPascalString 2632c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringAppendPascalString); 2633b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 2634c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&l", 2635c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_GetStr255, pStr, 2636c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &encoding)) 2637c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2638c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringAppendPascalString(_self->ob_itself, 2639c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou pStr, 2640c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou encoding); 2641c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 2642c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 2643c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 264450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 264550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 264650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFMutableStringRefObj_CFStringAppendCString(CFMutableStringRefObject *_self, PyObject *_args) 264750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2648c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2649c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char* cStr; 2650c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding encoding; 2651b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringAppendCString 2652c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringAppendCString); 2653b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 2654c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "sl", 2655c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &cStr, 2656c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &encoding)) 2657c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2658c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringAppendCString(_self->ob_itself, 2659c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou cStr, 2660c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou encoding); 2661c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 2662c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 2663c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 266450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 266550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 266650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFMutableStringRefObj_CFStringInsert(CFMutableStringRefObject *_self, PyObject *_args) 266750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2668c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2669c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex idx; 2670c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef insertedStr; 2671b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringInsert 2672c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringInsert); 2673b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 2674c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "lO&", 2675c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &idx, 2676c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &insertedStr)) 2677c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2678c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringInsert(_self->ob_itself, 2679c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou idx, 2680c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou insertedStr); 2681c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 2682c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 2683c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 268450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 268550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 268650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFMutableStringRefObj_CFStringDelete(CFMutableStringRefObject *_self, PyObject *_args) 268750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2688c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2689c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange range; 2690b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringDelete 2691c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringDelete); 2692b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 2693c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&", 2694c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange_Convert, &range)) 2695c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2696c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringDelete(_self->ob_itself, 2697c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou range); 2698c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 2699c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 2700c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 270150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 270250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 270350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFMutableStringRefObj_CFStringReplace(CFMutableStringRefObject *_self, PyObject *_args) 270450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2705c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2706c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange range; 2707c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef replacement; 2708b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringReplace 2709c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringReplace); 2710b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 2711c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&O&", 2712c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange_Convert, &range, 2713c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &replacement)) 2714c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2715c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringReplace(_self->ob_itself, 2716c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou range, 2717c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou replacement); 2718c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 2719c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 2720c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 272150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 272250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 272350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFMutableStringRefObj_CFStringReplaceAll(CFMutableStringRefObject *_self, PyObject *_args) 272450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2725c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2726c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef replacement; 2727b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringReplaceAll 2728c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringReplaceAll); 2729b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 2730c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&", 2731c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &replacement)) 2732c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2733c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringReplaceAll(_self->ob_itself, 2734c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou replacement); 2735c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 2736c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 2737c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 273850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 273950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 274050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFMutableStringRefObj_CFStringPad(CFMutableStringRefObject *_self, PyObject *_args) 274150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2742c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2743c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef padString; 2744c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex length; 2745c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex indexIntoPad; 2746b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringPad 2747c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringPad); 2748b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 2749c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&ll", 2750c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &padString, 2751c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &length, 2752c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &indexIntoPad)) 2753c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2754c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringPad(_self->ob_itself, 2755c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou padString, 2756c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou length, 2757c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou indexIntoPad); 2758c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 2759c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 2760c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 276150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 276250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 276350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFMutableStringRefObj_CFStringTrim(CFMutableStringRefObject *_self, PyObject *_args) 276450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2765c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2766c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef trimString; 2767b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringTrim 2768c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringTrim); 2769b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 2770c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&", 2771c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &trimString)) 2772c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2773c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringTrim(_self->ob_itself, 2774c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou trimString); 2775c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 2776c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 2777c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 277850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 277950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 278050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFMutableStringRefObj_CFStringTrimWhitespace(CFMutableStringRefObject *_self, PyObject *_args) 278150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2782c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2783b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringTrimWhitespace 2784c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringTrimWhitespace); 2785b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 2786c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 2787c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2788c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringTrimWhitespace(_self->ob_itself); 2789c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 2790c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 2791c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 279250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 279350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 279450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyMethodDef CFMutableStringRefObj_methods[] = { 2795c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringAppend", (PyCFunction)CFMutableStringRefObj_CFStringAppend, 1, 2796c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef appendedString) -> None")}, 2797c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringAppendCharacters", (PyCFunction)CFMutableStringRefObj_CFStringAppendCharacters, 1, 2798c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(Buffer chars) -> None")}, 2799c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringAppendPascalString", (PyCFunction)CFMutableStringRefObj_CFStringAppendPascalString, 1, 2800c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(Str255 pStr, CFStringEncoding encoding) -> None")}, 2801c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringAppendCString", (PyCFunction)CFMutableStringRefObj_CFStringAppendCString, 1, 2802c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(char* cStr, CFStringEncoding encoding) -> None")}, 2803c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringInsert", (PyCFunction)CFMutableStringRefObj_CFStringInsert, 1, 2804c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFIndex idx, CFStringRef insertedStr) -> None")}, 2805c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringDelete", (PyCFunction)CFMutableStringRefObj_CFStringDelete, 1, 2806c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFRange range) -> None")}, 2807c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringReplace", (PyCFunction)CFMutableStringRefObj_CFStringReplace, 1, 2808c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFRange range, CFStringRef replacement) -> None")}, 2809c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringReplaceAll", (PyCFunction)CFMutableStringRefObj_CFStringReplaceAll, 1, 2810c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef replacement) -> None")}, 2811c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringPad", (PyCFunction)CFMutableStringRefObj_CFStringPad, 1, 2812c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef padString, CFIndex length, CFIndex indexIntoPad) -> None")}, 2813c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringTrim", (PyCFunction)CFMutableStringRefObj_CFStringTrim, 1, 2814c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef trimString) -> None")}, 2815c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringTrimWhitespace", (PyCFunction)CFMutableStringRefObj_CFStringTrimWhitespace, 1, 2816c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> None")}, 2817c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL, 0} 281850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen}; 281950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 28203bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFMutableStringRefObj_getsetlist NULL 282150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 282250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 282350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic int CFMutableStringRefObj_compare(CFMutableStringRefObject *self, CFMutableStringRefObject *other) 282450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2825c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Or should we use CFEqual?? */ 2826c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ( self->ob_itself > other->ob_itself ) return 1; 2827c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ( self->ob_itself < other->ob_itself ) return -1; 2828c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 282950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 283050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 283150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject * CFMutableStringRefObj_repr(CFMutableStringRefObject *self) 283250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2833c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char buf[100]; 2834c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou sprintf(buf, "<CFMutableStringRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself); 2835c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyString_FromString(buf); 283650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 283750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 283850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic int CFMutableStringRefObj_hash(CFMutableStringRefObject *self) 283950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2840c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Or should we use CFHash?? */ 2841c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return (int)self->ob_itself; 284250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 2843918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansenstatic int CFMutableStringRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) 28443bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen{ 2845c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableStringRef itself; 2846c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *kw[] = {"itself", 0}; 28473bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 2848c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFMutableStringRefObj_Convert, &itself)) 2849c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 2850c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFMutableStringRefObject *)_self)->ob_itself = itself; 2851c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 2852c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 28533bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 2854c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Any CFTypeRef descendent is allowed as initializer too */ 2855c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) 2856c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 2857c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFMutableStringRefObject *)_self)->ob_itself = itself; 2858c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 2859c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 2860c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return -1; 28613bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen} 28623bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 28633bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFMutableStringRefObj_tp_alloc PyType_GenericAlloc 28643bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 2865918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansenstatic PyObject *CFMutableStringRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) 28663bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen{ 2867c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *self; 2868c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; 2869c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFMutableStringRefObject *)self)->ob_itself = NULL; 2870c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFMutableStringRefObject *)self)->ob_freeit = CFRelease; 2871c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return self; 28723bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen} 28733bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 28743bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFMutableStringRefObj_tp_free PyObject_Del 28753bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 287650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 287750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyTypeObject CFMutableStringRef_Type = { 2878c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_HEAD_INIT(NULL) 2879c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*ob_size*/ 2880c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou "_CF.CFMutableStringRef", /*tp_name*/ 2881c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou sizeof(CFMutableStringRefObject), /*tp_basicsize*/ 2882c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_itemsize*/ 2883c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* methods */ 2884c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (destructor) CFMutableStringRefObj_dealloc, /*tp_dealloc*/ 2885c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_print*/ 2886c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (getattrfunc)0, /*tp_getattr*/ 2887c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (setattrfunc)0, /*tp_setattr*/ 2888c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (cmpfunc) CFMutableStringRefObj_compare, /*tp_compare*/ 2889c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (reprfunc) CFMutableStringRefObj_repr, /*tp_repr*/ 2890c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PyNumberMethods *)0, /* tp_as_number */ 2891c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PySequenceMethods *)0, /* tp_as_sequence */ 2892c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PyMappingMethods *)0, /* tp_as_mapping */ 2893c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (hashfunc) CFMutableStringRefObj_hash, /*tp_hash*/ 2894c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_call*/ 2895c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_str*/ 2896c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_GenericGetAttr, /*tp_getattro*/ 2897c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_GenericSetAttr, /*tp_setattro */ 2898c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_as_buffer*/ 2899c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ 2900c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_doc*/ 2901c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_traverse*/ 2902c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_clear*/ 2903c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_richcompare*/ 2904c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_weaklistoffset*/ 2905c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_iter*/ 2906c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_iternext*/ 2907c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableStringRefObj_methods, /* tp_methods */ 2908c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_members*/ 2909c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableStringRefObj_getsetlist, /*tp_getset*/ 2910c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_base*/ 2911c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_dict*/ 2912c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_descr_get*/ 2913c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_descr_set*/ 2914c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_dictoffset*/ 2915c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableStringRefObj_tp_init, /* tp_init */ 2916c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableStringRefObj_tp_alloc, /* tp_alloc */ 2917c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableStringRefObj_tp_new, /* tp_new */ 2918c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableStringRefObj_tp_free, /* tp_free */ 291950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen}; 292050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 292150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* --------------- End object type CFMutableStringRef --------------- */ 292250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 292350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 292450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* ---------------------- Object type CFURLRef ---------------------- */ 292550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 292650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyTypeObject CFURLRef_Type; 292750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 2928f955784f0cfeecb94d3f2ade83a5ea548391f74bJack Jansen#define CFURLRefObj_Check(x) ((x)->ob_type == &CFURLRef_Type || PyObject_TypeCheck((x), &CFURLRef_Type)) 292950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 293050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansentypedef struct CFURLRefObject { 2931c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_HEAD 2932c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRef ob_itself; 2933c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou void (*ob_freeit)(CFTypeRef ptr); 293450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} CFURLRefObject; 293550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 293650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyObject *CFURLRefObj_New(CFURLRef itself) 293750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2938c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRefObject *it; 2939c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (itself == NULL) 2940c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 2941c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 2942c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2943c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 2944c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it = PyObject_NEW(CFURLRefObject, &CFURLRef_Type); 2945c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (it == NULL) return NULL; 2946c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Should we tp_init or tp_new our basetype? */ 2947c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it->ob_itself = itself; 2948c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou it->ob_freeit = CFRelease; 2949c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return (PyObject *)it; 295050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 2951918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansen 295206d2e1af3579f6a698a84b81dfda0bacb6263f7dJack Jansenint CFURLRefObj_Convert(PyObject *v, CFURLRef *p_itself) 295350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 295450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 2955c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (v == Py_None) { *p_itself = NULL; return 1; } 2956c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Check for other CF objects here */ 295750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 2958c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!CFURLRefObj_Check(v)) 2959c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 2960c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_TypeError, "CFURLRef required"); 2961c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 2962c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 2963c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou *p_itself = ((CFURLRefObject *)v)->ob_itself; 2964c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 1; 296550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 296650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 296750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic void CFURLRefObj_dealloc(CFURLRefObject *self) 296850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2969c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (self->ob_freeit && self->ob_itself) 2970c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 2971c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou self->ob_freeit((CFTypeRef)self->ob_itself); 2972c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou self->ob_itself = NULL; 2973c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 2974c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRef_Type.tp_dealloc((PyObject *)self); 297550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 297650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 297750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFURLRefObj_CFURLCreateData(CFURLRefObject *_self, PyObject *_args) 297850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 2979c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2980c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRef _rv; 2981c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding encoding; 2982c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Boolean escapeWhitespace; 2983c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "ll", 2984c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &encoding, 2985c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &escapeWhitespace)) 2986c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 2987c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCreateData((CFAllocatorRef)NULL, 2988c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _self->ob_itself, 2989c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou encoding, 2990c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou escapeWhitespace); 2991c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 2992c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRefObj_New, _rv); 2993c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 299450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 299550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 29962168e9d602cffbb6975a11353707a921455c05f7Jack Jansenstatic PyObject *CFURLRefObj_CFURLGetFileSystemRepresentation(CFURLRefObject *_self, PyObject *_args) 29972168e9d602cffbb6975a11353707a921455c05f7Jack Jansen{ 2998c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 2999c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Boolean _rv; 3000c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Boolean resolveAgainstBase; 3001c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou UInt8 buffer; 3002c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex maxBufLen; 30032168e9d602cffbb6975a11353707a921455c05f7Jack Jansen#ifndef CFURLGetFileSystemRepresentation 3004c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLGetFileSystemRepresentation); 30052168e9d602cffbb6975a11353707a921455c05f7Jack Jansen#endif 3006c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "ll", 3007c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &resolveAgainstBase, 3008c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &maxBufLen)) 3009c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3010c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLGetFileSystemRepresentation(_self->ob_itself, 3011c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou resolveAgainstBase, 3012c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &buffer, 3013c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou maxBufLen); 3014c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("lb", 3015c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv, 3016c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou buffer); 3017c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 30182168e9d602cffbb6975a11353707a921455c05f7Jack Jansen} 30192168e9d602cffbb6975a11353707a921455c05f7Jack Jansen 302050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFURLRefObj_CFURLCopyAbsoluteURL(CFURLRefObject *_self, PyObject *_args) 302150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3022c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3023c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRef _rv; 3024b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFURLCopyAbsoluteURL 3025c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLCopyAbsoluteURL); 3026b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3027c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 3028c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3029c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCopyAbsoluteURL(_self->ob_itself); 3030c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3031c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRefObj_New, _rv); 3032c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 303350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 303450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 303550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFURLRefObj_CFURLGetString(CFURLRefObject *_self, PyObject *_args) 303650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3037c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3038c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 3039b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFURLGetString 3040c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLGetString); 3041b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3042c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 3043c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3044c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLGetString(_self->ob_itself); 3045c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3046c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 3047c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 304850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 304950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 305050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFURLRefObj_CFURLGetBaseURL(CFURLRefObject *_self, PyObject *_args) 305150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3052c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3053c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRef _rv; 3054b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFURLGetBaseURL 3055c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLGetBaseURL); 3056b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3057c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 3058c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3059c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLGetBaseURL(_self->ob_itself); 3060c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3061c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRefObj_New, _rv); 3062c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 306350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 306450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 306550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFURLRefObj_CFURLCanBeDecomposed(CFURLRefObject *_self, PyObject *_args) 306650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3067c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3068c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Boolean _rv; 3069b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFURLCanBeDecomposed 3070c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLCanBeDecomposed); 3071b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3072c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 3073c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3074c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCanBeDecomposed(_self->ob_itself); 3075c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 3076c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 3077c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 307850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 307950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 308050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFURLRefObj_CFURLCopyScheme(CFURLRefObject *_self, PyObject *_args) 308150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3082c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3083c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 3084b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFURLCopyScheme 3085c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLCopyScheme); 3086b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3087c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 3088c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3089c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCopyScheme(_self->ob_itself); 3090c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3091c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 3092c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 309350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 309450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 309550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFURLRefObj_CFURLCopyNetLocation(CFURLRefObject *_self, PyObject *_args) 309650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3097c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3098c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 3099b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFURLCopyNetLocation 3100c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLCopyNetLocation); 3101b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3102c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 3103c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3104c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCopyNetLocation(_self->ob_itself); 3105c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3106c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 3107c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 310850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 310950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 311050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFURLRefObj_CFURLCopyPath(CFURLRefObject *_self, PyObject *_args) 311150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3112c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3113c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 3114b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFURLCopyPath 3115c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLCopyPath); 3116b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3117c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 3118c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3119c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCopyPath(_self->ob_itself); 3120c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3121c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 3122c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 312350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 312450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 31252168e9d602cffbb6975a11353707a921455c05f7Jack Jansenstatic PyObject *CFURLRefObj_CFURLCopyStrictPath(CFURLRefObject *_self, PyObject *_args) 31262168e9d602cffbb6975a11353707a921455c05f7Jack Jansen{ 3127c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3128c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 3129c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Boolean isAbsolute; 31302168e9d602cffbb6975a11353707a921455c05f7Jack Jansen#ifndef CFURLCopyStrictPath 3131c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLCopyStrictPath); 31322168e9d602cffbb6975a11353707a921455c05f7Jack Jansen#endif 3133c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 3134c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3135c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCopyStrictPath(_self->ob_itself, 3136c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &isAbsolute); 3137c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&l", 3138c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv, 3139c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou isAbsolute); 3140c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 31412168e9d602cffbb6975a11353707a921455c05f7Jack Jansen} 31422168e9d602cffbb6975a11353707a921455c05f7Jack Jansen 31432168e9d602cffbb6975a11353707a921455c05f7Jack Jansenstatic PyObject *CFURLRefObj_CFURLCopyFileSystemPath(CFURLRefObject *_self, PyObject *_args) 31442168e9d602cffbb6975a11353707a921455c05f7Jack Jansen{ 3145c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3146c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 3147c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLPathStyle pathStyle; 31482168e9d602cffbb6975a11353707a921455c05f7Jack Jansen#ifndef CFURLCopyFileSystemPath 3149c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLCopyFileSystemPath); 31502168e9d602cffbb6975a11353707a921455c05f7Jack Jansen#endif 3151c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "l", 3152c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &pathStyle)) 3153c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3154c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCopyFileSystemPath(_self->ob_itself, 3155c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou pathStyle); 3156c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3157c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 3158c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 31592168e9d602cffbb6975a11353707a921455c05f7Jack Jansen} 31602168e9d602cffbb6975a11353707a921455c05f7Jack Jansen 316150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFURLRefObj_CFURLHasDirectoryPath(CFURLRefObject *_self, PyObject *_args) 316250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3163c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3164c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Boolean _rv; 3165b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFURLHasDirectoryPath 3166c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLHasDirectoryPath); 3167b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3168c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 3169c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3170c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLHasDirectoryPath(_self->ob_itself); 3171c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 3172c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 3173c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 317450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 317550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 317650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFURLRefObj_CFURLCopyResourceSpecifier(CFURLRefObject *_self, PyObject *_args) 317750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3178c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3179c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 3180b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFURLCopyResourceSpecifier 3181c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLCopyResourceSpecifier); 3182b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3183c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 3184c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3185c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCopyResourceSpecifier(_self->ob_itself); 3186c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3187c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 3188c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 318950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 319050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 319150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFURLRefObj_CFURLCopyHostName(CFURLRefObject *_self, PyObject *_args) 319250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3193c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3194c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 3195b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFURLCopyHostName 3196c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLCopyHostName); 3197b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3198c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 3199c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3200c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCopyHostName(_self->ob_itself); 3201c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3202c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 3203c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 320450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 320550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 320650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFURLRefObj_CFURLGetPortNumber(CFURLRefObject *_self, PyObject *_args) 320750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3208c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3209c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou SInt32 _rv; 3210b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFURLGetPortNumber 3211c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLGetPortNumber); 3212b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3213c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 3214c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3215c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLGetPortNumber(_self->ob_itself); 3216c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 3217c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 3218c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 321950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 322050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 322150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFURLRefObj_CFURLCopyUserName(CFURLRefObject *_self, PyObject *_args) 322250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3223c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3224c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 3225b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFURLCopyUserName 3226c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLCopyUserName); 3227b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3228c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 3229c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3230c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCopyUserName(_self->ob_itself); 3231c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3232c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 3233c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 323450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 323550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 323650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFURLRefObj_CFURLCopyPassword(CFURLRefObject *_self, PyObject *_args) 323750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3238c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3239c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 3240b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFURLCopyPassword 3241c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLCopyPassword); 3242b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3243c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 3244c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3245c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCopyPassword(_self->ob_itself); 3246c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3247c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 3248c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 324950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 325050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 325150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFURLRefObj_CFURLCopyParameterString(CFURLRefObject *_self, PyObject *_args) 325250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3253c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3254c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 3255c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef charactersToLeaveEscaped; 3256b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFURLCopyParameterString 3257c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLCopyParameterString); 3258b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3259c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&", 3260c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &charactersToLeaveEscaped)) 3261c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3262c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCopyParameterString(_self->ob_itself, 3263c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou charactersToLeaveEscaped); 3264c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3265c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 3266c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 326750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 326850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 326950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFURLRefObj_CFURLCopyQueryString(CFURLRefObject *_self, PyObject *_args) 327050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3271c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3272c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 3273c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef charactersToLeaveEscaped; 3274b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFURLCopyQueryString 3275c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLCopyQueryString); 3276b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3277c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&", 3278c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &charactersToLeaveEscaped)) 3279c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3280c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCopyQueryString(_self->ob_itself, 3281c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou charactersToLeaveEscaped); 3282c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3283c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 3284c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 328550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 328650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 328750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CFURLRefObj_CFURLCopyFragment(CFURLRefObject *_self, PyObject *_args) 328850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3289c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3290c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 3291c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef charactersToLeaveEscaped; 3292b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFURLCopyFragment 3293c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLCopyFragment); 3294b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3295c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&", 3296c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &charactersToLeaveEscaped)) 3297c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3298c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCopyFragment(_self->ob_itself, 3299c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou charactersToLeaveEscaped); 3300c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3301c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 3302c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 330350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 330450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 33052168e9d602cffbb6975a11353707a921455c05f7Jack Jansenstatic PyObject *CFURLRefObj_CFURLCopyLastPathComponent(CFURLRefObject *_self, PyObject *_args) 33062168e9d602cffbb6975a11353707a921455c05f7Jack Jansen{ 3307c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3308c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 33092168e9d602cffbb6975a11353707a921455c05f7Jack Jansen#ifndef CFURLCopyLastPathComponent 3310c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLCopyLastPathComponent); 33112168e9d602cffbb6975a11353707a921455c05f7Jack Jansen#endif 3312c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 3313c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3314c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCopyLastPathComponent(_self->ob_itself); 3315c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3316c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 3317c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 33182168e9d602cffbb6975a11353707a921455c05f7Jack Jansen} 33192168e9d602cffbb6975a11353707a921455c05f7Jack Jansen 33202168e9d602cffbb6975a11353707a921455c05f7Jack Jansenstatic PyObject *CFURLRefObj_CFURLCopyPathExtension(CFURLRefObject *_self, PyObject *_args) 33212168e9d602cffbb6975a11353707a921455c05f7Jack Jansen{ 3322c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3323c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 33242168e9d602cffbb6975a11353707a921455c05f7Jack Jansen#ifndef CFURLCopyPathExtension 3325c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLCopyPathExtension); 33262168e9d602cffbb6975a11353707a921455c05f7Jack Jansen#endif 3327c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 3328c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3329c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCopyPathExtension(_self->ob_itself); 3330c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3331c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 3332c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 33332168e9d602cffbb6975a11353707a921455c05f7Jack Jansen} 33342168e9d602cffbb6975a11353707a921455c05f7Jack Jansen 33352168e9d602cffbb6975a11353707a921455c05f7Jack Jansenstatic PyObject *CFURLRefObj_CFURLCreateCopyAppendingPathComponent(CFURLRefObject *_self, PyObject *_args) 33362168e9d602cffbb6975a11353707a921455c05f7Jack Jansen{ 3337c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3338c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRef _rv; 3339c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef pathComponent; 3340c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Boolean isDirectory; 3341c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&l", 3342c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &pathComponent, 3343c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &isDirectory)) 3344c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3345c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCreateCopyAppendingPathComponent((CFAllocatorRef)NULL, 3346c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _self->ob_itself, 3347c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou pathComponent, 3348c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou isDirectory); 3349c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3350c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRefObj_New, _rv); 3351c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 33522168e9d602cffbb6975a11353707a921455c05f7Jack Jansen} 33532168e9d602cffbb6975a11353707a921455c05f7Jack Jansen 33542168e9d602cffbb6975a11353707a921455c05f7Jack Jansenstatic PyObject *CFURLRefObj_CFURLCreateCopyDeletingLastPathComponent(CFURLRefObject *_self, PyObject *_args) 33552168e9d602cffbb6975a11353707a921455c05f7Jack Jansen{ 3356c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3357c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRef _rv; 3358c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 3359c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3360c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCreateCopyDeletingLastPathComponent((CFAllocatorRef)NULL, 3361c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _self->ob_itself); 3362c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3363c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRefObj_New, _rv); 3364c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 33652168e9d602cffbb6975a11353707a921455c05f7Jack Jansen} 33662168e9d602cffbb6975a11353707a921455c05f7Jack Jansen 33672168e9d602cffbb6975a11353707a921455c05f7Jack Jansenstatic PyObject *CFURLRefObj_CFURLCreateCopyAppendingPathExtension(CFURLRefObject *_self, PyObject *_args) 33682168e9d602cffbb6975a11353707a921455c05f7Jack Jansen{ 3369c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3370c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRef _rv; 3371c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef extension; 3372c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&", 3373c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &extension)) 3374c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3375c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCreateCopyAppendingPathExtension((CFAllocatorRef)NULL, 3376c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _self->ob_itself, 3377c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou extension); 3378c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3379c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRefObj_New, _rv); 3380c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 33812168e9d602cffbb6975a11353707a921455c05f7Jack Jansen} 33822168e9d602cffbb6975a11353707a921455c05f7Jack Jansen 33832168e9d602cffbb6975a11353707a921455c05f7Jack Jansenstatic PyObject *CFURLRefObj_CFURLCreateCopyDeletingPathExtension(CFURLRefObject *_self, PyObject *_args) 33842168e9d602cffbb6975a11353707a921455c05f7Jack Jansen{ 3385c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3386c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRef _rv; 3387c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 3388c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3389c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCreateCopyDeletingPathExtension((CFAllocatorRef)NULL, 3390c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _self->ob_itself); 3391c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3392c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRefObj_New, _rv); 3393c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 33942168e9d602cffbb6975a11353707a921455c05f7Jack Jansen} 33952168e9d602cffbb6975a11353707a921455c05f7Jack Jansen 33962168e9d602cffbb6975a11353707a921455c05f7Jack Jansenstatic PyObject *CFURLRefObj_CFURLGetFSRef(CFURLRefObject *_self, PyObject *_args) 33972168e9d602cffbb6975a11353707a921455c05f7Jack Jansen{ 3398c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3399c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Boolean _rv; 3400c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou FSRef fsRef; 34012168e9d602cffbb6975a11353707a921455c05f7Jack Jansen#ifndef CFURLGetFSRef 3402c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLGetFSRef); 34032168e9d602cffbb6975a11353707a921455c05f7Jack Jansen#endif 3404c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 3405c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3406c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLGetFSRef(_self->ob_itself, 3407c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &fsRef); 3408c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("lO&", 3409c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv, 3410c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_BuildFSRef, &fsRef); 3411c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 34122168e9d602cffbb6975a11353707a921455c05f7Jack Jansen} 34132168e9d602cffbb6975a11353707a921455c05f7Jack Jansen 341450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyMethodDef CFURLRefObj_methods[] = { 3415c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCreateData", (PyCFunction)CFURLRefObj_CFURLCreateData, 1, 3416c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringEncoding encoding, Boolean escapeWhitespace) -> (CFDataRef _rv)")}, 3417c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLGetFileSystemRepresentation", (PyCFunction)CFURLRefObj_CFURLGetFileSystemRepresentation, 1, 3418c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(Boolean resolveAgainstBase, CFIndex maxBufLen) -> (Boolean _rv, UInt8 buffer)")}, 3419c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCopyAbsoluteURL", (PyCFunction)CFURLRefObj_CFURLCopyAbsoluteURL, 1, 3420c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFURLRef _rv)")}, 3421c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLGetString", (PyCFunction)CFURLRefObj_CFURLGetString, 1, 3422c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFStringRef _rv)")}, 3423c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLGetBaseURL", (PyCFunction)CFURLRefObj_CFURLGetBaseURL, 1, 3424c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFURLRef _rv)")}, 3425c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCanBeDecomposed", (PyCFunction)CFURLRefObj_CFURLCanBeDecomposed, 1, 3426c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (Boolean _rv)")}, 3427c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCopyScheme", (PyCFunction)CFURLRefObj_CFURLCopyScheme, 1, 3428c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFStringRef _rv)")}, 3429c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCopyNetLocation", (PyCFunction)CFURLRefObj_CFURLCopyNetLocation, 1, 3430c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFStringRef _rv)")}, 3431c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCopyPath", (PyCFunction)CFURLRefObj_CFURLCopyPath, 1, 3432c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFStringRef _rv)")}, 3433c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCopyStrictPath", (PyCFunction)CFURLRefObj_CFURLCopyStrictPath, 1, 3434c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFStringRef _rv, Boolean isAbsolute)")}, 3435c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCopyFileSystemPath", (PyCFunction)CFURLRefObj_CFURLCopyFileSystemPath, 1, 3436c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFURLPathStyle pathStyle) -> (CFStringRef _rv)")}, 3437c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLHasDirectoryPath", (PyCFunction)CFURLRefObj_CFURLHasDirectoryPath, 1, 3438c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (Boolean _rv)")}, 3439c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCopyResourceSpecifier", (PyCFunction)CFURLRefObj_CFURLCopyResourceSpecifier, 1, 3440c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFStringRef _rv)")}, 3441c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCopyHostName", (PyCFunction)CFURLRefObj_CFURLCopyHostName, 1, 3442c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFStringRef _rv)")}, 3443c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLGetPortNumber", (PyCFunction)CFURLRefObj_CFURLGetPortNumber, 1, 3444c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (SInt32 _rv)")}, 3445c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCopyUserName", (PyCFunction)CFURLRefObj_CFURLCopyUserName, 1, 3446c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFStringRef _rv)")}, 3447c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCopyPassword", (PyCFunction)CFURLRefObj_CFURLCopyPassword, 1, 3448c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFStringRef _rv)")}, 3449c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCopyParameterString", (PyCFunction)CFURLRefObj_CFURLCopyParameterString, 1, 3450c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef charactersToLeaveEscaped) -> (CFStringRef _rv)")}, 3451c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCopyQueryString", (PyCFunction)CFURLRefObj_CFURLCopyQueryString, 1, 3452c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef charactersToLeaveEscaped) -> (CFStringRef _rv)")}, 3453c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCopyFragment", (PyCFunction)CFURLRefObj_CFURLCopyFragment, 1, 3454c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef charactersToLeaveEscaped) -> (CFStringRef _rv)")}, 3455c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCopyLastPathComponent", (PyCFunction)CFURLRefObj_CFURLCopyLastPathComponent, 1, 3456c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFStringRef _rv)")}, 3457c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCopyPathExtension", (PyCFunction)CFURLRefObj_CFURLCopyPathExtension, 1, 3458c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFStringRef _rv)")}, 3459c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCreateCopyAppendingPathComponent", (PyCFunction)CFURLRefObj_CFURLCreateCopyAppendingPathComponent, 1, 3460c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef pathComponent, Boolean isDirectory) -> (CFURLRef _rv)")}, 3461c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCreateCopyDeletingLastPathComponent", (PyCFunction)CFURLRefObj_CFURLCreateCopyDeletingLastPathComponent, 1, 3462c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFURLRef _rv)")}, 3463c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCreateCopyAppendingPathExtension", (PyCFunction)CFURLRefObj_CFURLCreateCopyAppendingPathExtension, 1, 3464c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef extension) -> (CFURLRef _rv)")}, 3465c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCreateCopyDeletingPathExtension", (PyCFunction)CFURLRefObj_CFURLCreateCopyDeletingPathExtension, 1, 3466c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFURLRef _rv)")}, 3467c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLGetFSRef", (PyCFunction)CFURLRefObj_CFURLGetFSRef, 1, 3468c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (Boolean _rv, FSRef fsRef)")}, 3469c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL, 0} 347050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen}; 347150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 34723bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFURLRefObj_getsetlist NULL 347350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 347450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 347550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic int CFURLRefObj_compare(CFURLRefObject *self, CFURLRefObject *other) 347650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3477c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Or should we use CFEqual?? */ 3478c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ( self->ob_itself > other->ob_itself ) return 1; 3479c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ( self->ob_itself < other->ob_itself ) return -1; 3480c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 348150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 348250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 348350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject * CFURLRefObj_repr(CFURLRefObject *self) 348450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3485c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char buf[100]; 3486c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou sprintf(buf, "<CFURL object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself); 3487c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return PyString_FromString(buf); 348850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 348950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 349050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic int CFURLRefObj_hash(CFURLRefObject *self) 349150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3492c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Or should we use CFHash?? */ 3493c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return (int)self->ob_itself; 349450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 3495918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansenstatic int CFURLRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds) 34963bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen{ 3497c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRef itself; 3498c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char *kw[] = {"itself", 0}; 34993bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 3500c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFURLRefObj_Convert, &itself)) 3501c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 3502c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFURLRefObject *)_self)->ob_itself = itself; 3503c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 3504c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 35053bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 3506c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Any CFTypeRef descendent is allowed as initializer too */ 3507c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself)) 3508c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 3509c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFURLRefObject *)_self)->ob_itself = itself; 3510c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 3511c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 3512c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return -1; 35133bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen} 35143bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 35153bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFURLRefObj_tp_alloc PyType_GenericAlloc 35163bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 3517918a9e2f63a037de2a32e2b009944a0e5c693742Jack Jansenstatic PyObject *CFURLRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds) 35183bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen{ 3519c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *self; 3520c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if ((self = type->tp_alloc(type, 0)) == NULL) return NULL; 3521c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFURLRefObject *)self)->ob_itself = NULL; 3522c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou ((CFURLRefObject *)self)->ob_freeit = CFRelease; 3523c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return self; 35243bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen} 35253bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 35263bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen#define CFURLRefObj_tp_free PyObject_Del 35273bfc28c12f3627470d9e4d1ff18c76cfce54cc02Jack Jansen 352850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 352950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack JansenPyTypeObject CFURLRef_Type = { 3530c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_HEAD_INIT(NULL) 3531c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*ob_size*/ 3532c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou "_CF.CFURLRef", /*tp_name*/ 3533c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou sizeof(CFURLRefObject), /*tp_basicsize*/ 3534c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_itemsize*/ 3535c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* methods */ 3536c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (destructor) CFURLRefObj_dealloc, /*tp_dealloc*/ 3537c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_print*/ 3538c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (getattrfunc)0, /*tp_getattr*/ 3539c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (setattrfunc)0, /*tp_setattr*/ 3540c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (cmpfunc) CFURLRefObj_compare, /*tp_compare*/ 3541c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (reprfunc) CFURLRefObj_repr, /*tp_repr*/ 3542c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PyNumberMethods *)0, /* tp_as_number */ 3543c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PySequenceMethods *)0, /* tp_as_sequence */ 3544c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (PyMappingMethods *)0, /* tp_as_mapping */ 3545c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (hashfunc) CFURLRefObj_hash, /*tp_hash*/ 3546c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_call*/ 3547c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_str*/ 3548c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_GenericGetAttr, /*tp_getattro*/ 3549c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject_GenericSetAttr, /*tp_setattro */ 3550c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_as_buffer*/ 3551c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */ 3552c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_doc*/ 3553c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_traverse*/ 3554c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_clear*/ 3555c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_richcompare*/ 3556c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_weaklistoffset*/ 3557c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_iter*/ 3558c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_iternext*/ 3559c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRefObj_methods, /* tp_methods */ 3560c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_members*/ 3561c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRefObj_getsetlist, /*tp_getset*/ 3562c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_base*/ 3563c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_dict*/ 3564c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_descr_get*/ 3565c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_descr_set*/ 3566c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 0, /*tp_dictoffset*/ 3567c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRefObj_tp_init, /* tp_init */ 3568c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRefObj_tp_alloc, /* tp_alloc */ 3569c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRefObj_tp_new, /* tp_new */ 3570c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRefObj_tp_free, /* tp_free */ 357150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen}; 357250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 357350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* -------------------- End object type CFURLRef -------------------- */ 357450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 357550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 35762168e9d602cffbb6975a11353707a921455c05f7Jack Jansenstatic PyObject *CF___CFRangeMake(PyObject *_self, PyObject *_args) 35772168e9d602cffbb6975a11353707a921455c05f7Jack Jansen{ 3578c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3579c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange _rv; 3580c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex loc; 3581c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex len; 35822168e9d602cffbb6975a11353707a921455c05f7Jack Jansen#ifndef __CFRangeMake 3583c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(__CFRangeMake); 35842168e9d602cffbb6975a11353707a921455c05f7Jack Jansen#endif 3585c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "ll", 3586c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &loc, 3587c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &len)) 3588c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3589c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = __CFRangeMake(loc, 3590c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou len); 3591c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3592c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFRange_New, _rv); 3593c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 35942168e9d602cffbb6975a11353707a921455c05f7Jack Jansen} 35952168e9d602cffbb6975a11353707a921455c05f7Jack Jansen 359650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFAllocatorGetTypeID(PyObject *_self, PyObject *_args) 359750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3598c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3599c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeID _rv; 3600b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFAllocatorGetTypeID 3601c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFAllocatorGetTypeID); 3602b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3603c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 3604c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3605c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFAllocatorGetTypeID(); 3606c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 3607c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 3608c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 360950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 361050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 361150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFAllocatorGetPreferredSizeForSize(PyObject *_self, PyObject *_args) 361250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3613c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3614c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex _rv; 3615c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex size; 3616c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFOptionFlags hint; 3617b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFAllocatorGetPreferredSizeForSize 3618c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFAllocatorGetPreferredSizeForSize); 3619b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3620c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "ll", 3621c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &size, 3622c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &hint)) 3623c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3624c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFAllocatorGetPreferredSizeForSize((CFAllocatorRef)NULL, 3625c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou size, 3626c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou hint); 3627c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 3628c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 3629c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 363050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 363150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 363250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFCopyTypeIDDescription(PyObject *_self, PyObject *_args) 363350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3634c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3635c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 3636c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeID type_id; 3637b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFCopyTypeIDDescription 3638c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFCopyTypeIDDescription); 3639b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3640c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "l", 3641c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &type_id)) 3642c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3643c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFCopyTypeIDDescription(type_id); 3644c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3645c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 3646c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 364750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 364850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 364950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFArrayGetTypeID(PyObject *_self, PyObject *_args) 365050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3651c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3652c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeID _rv; 3653b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFArrayGetTypeID 3654c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFArrayGetTypeID); 3655b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3656c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 3657c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3658c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFArrayGetTypeID(); 3659c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 3660c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 3661c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 366250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 366350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 366450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFArrayCreateMutable(PyObject *_self, PyObject *_args) 366550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3666c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3667c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableArrayRef _rv; 3668c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex capacity; 3669b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFArrayCreateMutable 3670c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFArrayCreateMutable); 3671b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3672c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "l", 3673c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &capacity)) 3674c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3675c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFArrayCreateMutable((CFAllocatorRef)NULL, 3676c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou capacity, 3677c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &kCFTypeArrayCallBacks); 3678c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3679c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableArrayRefObj_New, _rv); 3680c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 368150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 368250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 368350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFArrayCreateMutableCopy(PyObject *_self, PyObject *_args) 368450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3685c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3686c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableArrayRef _rv; 3687c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex capacity; 3688c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRef theArray; 3689b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFArrayCreateMutableCopy 3690c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFArrayCreateMutableCopy); 3691b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3692c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "lO&", 3693c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &capacity, 3694c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRefObj_Convert, &theArray)) 3695c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3696c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFArrayCreateMutableCopy((CFAllocatorRef)NULL, 3697c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou capacity, 3698c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou theArray); 3699c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3700c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableArrayRefObj_New, _rv); 3701c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 370250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 370350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 370450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFDataGetTypeID(PyObject *_self, PyObject *_args) 370550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3706c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3707c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeID _rv; 3708b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFDataGetTypeID 3709c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFDataGetTypeID); 3710b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3711c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 3712c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3713c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFDataGetTypeID(); 3714c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 3715c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 3716c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 371750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 371850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 371950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFDataCreate(PyObject *_self, PyObject *_args) 372050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3721c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3722c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRef _rv; 3723c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou unsigned char *bytes__in__; 3724c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou long bytes__len__; 3725c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int bytes__in_len__; 3726b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFDataCreate 3727c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFDataCreate); 3728b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3729c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "s#", 3730c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &bytes__in__, &bytes__in_len__)) 3731c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3732c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou bytes__len__ = bytes__in_len__; 3733c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFDataCreate((CFAllocatorRef)NULL, 3734c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou bytes__in__, bytes__len__); 3735c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3736c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRefObj_New, _rv); 3737c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 373850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 373950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 374050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFDataCreateWithBytesNoCopy(PyObject *_self, PyObject *_args) 374150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3742c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3743c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRef _rv; 3744c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou unsigned char *bytes__in__; 3745c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou long bytes__len__; 3746c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int bytes__in_len__; 3747b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFDataCreateWithBytesNoCopy 3748c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFDataCreateWithBytesNoCopy); 3749b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3750c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "s#", 3751c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &bytes__in__, &bytes__in_len__)) 3752c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3753c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou bytes__len__ = bytes__in_len__; 3754c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFDataCreateWithBytesNoCopy((CFAllocatorRef)NULL, 3755c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou bytes__in__, bytes__len__, 3756c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (CFAllocatorRef)NULL); 3757c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3758c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRefObj_New, _rv); 3759c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 376050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 376150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 376250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFDataCreateMutable(PyObject *_self, PyObject *_args) 376350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3764c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3765c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDataRef _rv; 3766c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex capacity; 3767b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFDataCreateMutable 3768c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFDataCreateMutable); 3769b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3770c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "l", 3771c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &capacity)) 3772c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3773c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFDataCreateMutable((CFAllocatorRef)NULL, 3774c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou capacity); 3775c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3776c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDataRefObj_New, _rv); 3777c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 377850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 377950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 378050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFDataCreateMutableCopy(PyObject *_self, PyObject *_args) 378150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3782c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3783c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDataRef _rv; 3784c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex capacity; 3785c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRef theData; 3786b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFDataCreateMutableCopy 3787c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFDataCreateMutableCopy); 3788b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3789c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "lO&", 3790c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &capacity, 3791c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRefObj_Convert, &theData)) 3792c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3793c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFDataCreateMutableCopy((CFAllocatorRef)NULL, 3794c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou capacity, 3795c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou theData); 3796c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3797c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDataRefObj_New, _rv); 3798c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 379950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 380050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 380150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFDictionaryGetTypeID(PyObject *_self, PyObject *_args) 380250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3803c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3804c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeID _rv; 3805b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFDictionaryGetTypeID 3806c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFDictionaryGetTypeID); 3807b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3808c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 3809c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3810c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFDictionaryGetTypeID(); 3811c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 3812c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 3813c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 381450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 381550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 381650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFDictionaryCreateMutable(PyObject *_self, PyObject *_args) 381750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3818c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3819c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDictionaryRef _rv; 3820c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex capacity; 3821b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFDictionaryCreateMutable 3822c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFDictionaryCreateMutable); 3823b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3824c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "l", 3825c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &capacity)) 3826c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3827c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFDictionaryCreateMutable((CFAllocatorRef)NULL, 3828c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou capacity, 3829c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &kCFTypeDictionaryKeyCallBacks, 3830c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &kCFTypeDictionaryValueCallBacks); 3831c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3832c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDictionaryRefObj_New, _rv); 3833c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 383450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 383550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 383650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFDictionaryCreateMutableCopy(PyObject *_self, PyObject *_args) 383750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 3838c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3839c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDictionaryRef _rv; 3840c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex capacity; 3841c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDictionaryRef theDict; 3842b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFDictionaryCreateMutableCopy 3843c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFDictionaryCreateMutableCopy); 3844b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 3845c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "lO&", 3846c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &capacity, 3847c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDictionaryRefObj_Convert, &theDict)) 3848c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3849c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFDictionaryCreateMutableCopy((CFAllocatorRef)NULL, 3850c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou capacity, 3851c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou theDict); 3852c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3853c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDictionaryRefObj_New, _rv); 3854c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 385550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 385650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 385723be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansenstatic PyObject *CF_CFPreferencesCopyAppValue(PyObject *_self, PyObject *_args) 385823be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen{ 3859c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3860c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRef _rv; 3861c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef key; 3862c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef applicationID; 386323be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#ifndef CFPreferencesCopyAppValue 3864c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFPreferencesCopyAppValue); 386523be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#endif 3866c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&O&", 3867c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &key, 3868c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &applicationID)) 3869c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3870c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFPreferencesCopyAppValue(key, 3871c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou applicationID); 3872c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 3873c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRefObj_New, _rv); 3874c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 387523be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen} 387623be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen 387723be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansenstatic PyObject *CF_CFPreferencesGetAppBooleanValue(PyObject *_self, PyObject *_args) 387823be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen{ 3879c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3880c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Boolean _rv; 3881c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef key; 3882c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef applicationID; 3883c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Boolean keyExistsAndHasValidFormat; 388423be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#ifndef CFPreferencesGetAppBooleanValue 3885c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFPreferencesGetAppBooleanValue); 388623be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#endif 3887c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&O&", 3888c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &key, 3889c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &applicationID)) 3890c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3891c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFPreferencesGetAppBooleanValue(key, 3892c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou applicationID, 3893c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &keyExistsAndHasValidFormat); 3894c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("ll", 3895c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv, 3896c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou keyExistsAndHasValidFormat); 3897c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 389823be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen} 389923be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen 390023be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansenstatic PyObject *CF_CFPreferencesGetAppIntegerValue(PyObject *_self, PyObject *_args) 390123be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen{ 3902c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3903c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex _rv; 3904c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef key; 3905c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef applicationID; 3906c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Boolean keyExistsAndHasValidFormat; 390723be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#ifndef CFPreferencesGetAppIntegerValue 3908c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFPreferencesGetAppIntegerValue); 390923be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#endif 3910c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&O&", 3911c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &key, 3912c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &applicationID)) 3913c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3914c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFPreferencesGetAppIntegerValue(key, 3915c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou applicationID, 3916c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &keyExistsAndHasValidFormat); 3917c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("ll", 3918c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv, 3919c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou keyExistsAndHasValidFormat); 3920c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 392123be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen} 392223be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen 392323be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansenstatic PyObject *CF_CFPreferencesSetAppValue(PyObject *_self, PyObject *_args) 392423be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen{ 3925c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3926c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef key; 3927c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRef value; 3928c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef applicationID; 392923be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#ifndef CFPreferencesSetAppValue 3930c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFPreferencesSetAppValue); 393123be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#endif 3932c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&O&O&", 3933c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &key, 3934c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRefObj_Convert, &value, 3935c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &applicationID)) 3936c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3937c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFPreferencesSetAppValue(key, 3938c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou value, 3939c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou applicationID); 3940c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 3941c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 3942c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 394323be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen} 394423be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen 394523be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansenstatic PyObject *CF_CFPreferencesAddSuitePreferencesToApp(PyObject *_self, PyObject *_args) 394623be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen{ 3947c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3948c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef applicationID; 3949c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef suiteID; 395023be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#ifndef CFPreferencesAddSuitePreferencesToApp 3951c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFPreferencesAddSuitePreferencesToApp); 395223be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#endif 3953c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&O&", 3954c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &applicationID, 3955c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &suiteID)) 3956c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3957c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFPreferencesAddSuitePreferencesToApp(applicationID, 3958c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou suiteID); 3959c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 3960c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 3961c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 396223be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen} 396323be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen 396423be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansenstatic PyObject *CF_CFPreferencesRemoveSuitePreferencesFromApp(PyObject *_self, PyObject *_args) 396523be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen{ 3966c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3967c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef applicationID; 3968c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef suiteID; 396923be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#ifndef CFPreferencesRemoveSuitePreferencesFromApp 3970c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFPreferencesRemoveSuitePreferencesFromApp); 397123be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#endif 3972c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&O&", 3973c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &applicationID, 3974c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &suiteID)) 3975c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3976c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFPreferencesRemoveSuitePreferencesFromApp(applicationID, 3977c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou suiteID); 3978c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 3979c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 3980c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 398123be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen} 398223be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen 398323be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansenstatic PyObject *CF_CFPreferencesAppSynchronize(PyObject *_self, PyObject *_args) 398423be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen{ 3985c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 3986c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Boolean _rv; 3987c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef applicationID; 398823be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#ifndef CFPreferencesAppSynchronize 3989c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFPreferencesAppSynchronize); 399023be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#endif 3991c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&", 3992c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &applicationID)) 3993c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 3994c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFPreferencesAppSynchronize(applicationID); 3995c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 3996c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 3997c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 399823be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen} 399923be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen 400023be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansenstatic PyObject *CF_CFPreferencesCopyValue(PyObject *_self, PyObject *_args) 400123be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen{ 4002c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4003c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRef _rv; 4004c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef key; 4005c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef applicationID; 4006c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef userName; 4007c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef hostName; 400823be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#ifndef CFPreferencesCopyValue 4009c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFPreferencesCopyValue); 401023be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#endif 4011c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&O&O&O&", 4012c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &key, 4013c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &applicationID, 4014c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &userName, 4015c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &hostName)) 4016c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4017c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFPreferencesCopyValue(key, 4018c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou applicationID, 4019c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou userName, 4020c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou hostName); 4021c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 4022c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRefObj_New, _rv); 4023c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 402423be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen} 402523be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen 402623be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansenstatic PyObject *CF_CFPreferencesCopyMultiple(PyObject *_self, PyObject *_args) 402723be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen{ 4028c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4029c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDictionaryRef _rv; 4030c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRef keysToFetch; 4031c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef applicationID; 4032c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef userName; 4033c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef hostName; 403423be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#ifndef CFPreferencesCopyMultiple 4035c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFPreferencesCopyMultiple); 403623be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#endif 4037c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&O&O&O&", 4038c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRefObj_Convert, &keysToFetch, 4039c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &applicationID, 4040c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &userName, 4041c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &hostName)) 4042c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4043c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFPreferencesCopyMultiple(keysToFetch, 4044c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou applicationID, 4045c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou userName, 4046c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou hostName); 4047c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 4048c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDictionaryRefObj_New, _rv); 4049c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 405023be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen} 405123be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen 405223be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansenstatic PyObject *CF_CFPreferencesSetValue(PyObject *_self, PyObject *_args) 405323be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen{ 4054c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4055c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef key; 4056c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRef value; 4057c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef applicationID; 4058c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef userName; 4059c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef hostName; 406023be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#ifndef CFPreferencesSetValue 4061c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFPreferencesSetValue); 406223be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#endif 4063c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&O&O&O&O&", 4064c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &key, 4065c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRefObj_Convert, &value, 4066c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &applicationID, 4067c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &userName, 4068c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &hostName)) 4069c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4070c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFPreferencesSetValue(key, 4071c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou value, 4072c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou applicationID, 4073c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou userName, 4074c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou hostName); 4075c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 4076c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 4077c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 407823be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen} 407923be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen 408023be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansenstatic PyObject *CF_CFPreferencesSetMultiple(PyObject *_self, PyObject *_args) 408123be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen{ 4082c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4083c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDictionaryRef keysToSet; 4084c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRef keysToRemove; 4085c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef applicationID; 4086c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef userName; 4087c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef hostName; 408823be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#ifndef CFPreferencesSetMultiple 4089c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFPreferencesSetMultiple); 409023be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#endif 4091c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&O&O&O&O&", 4092c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDictionaryRefObj_Convert, &keysToSet, 4093c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRefObj_Convert, &keysToRemove, 4094c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &applicationID, 4095c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &userName, 4096c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &hostName)) 4097c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4098c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFPreferencesSetMultiple(keysToSet, 4099c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou keysToRemove, 4100c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou applicationID, 4101c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou userName, 4102c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou hostName); 4103c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(Py_None); 4104c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_None; 4105c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 410623be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen} 410723be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen 410823be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansenstatic PyObject *CF_CFPreferencesSynchronize(PyObject *_self, PyObject *_args) 410923be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen{ 4110c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4111c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Boolean _rv; 4112c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef applicationID; 4113c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef userName; 4114c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef hostName; 411523be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#ifndef CFPreferencesSynchronize 4116c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFPreferencesSynchronize); 411723be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#endif 4118c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&O&O&", 4119c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &applicationID, 4120c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &userName, 4121c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &hostName)) 4122c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4123c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFPreferencesSynchronize(applicationID, 4124c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou userName, 4125c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou hostName); 4126c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 4127c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 4128c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 412923be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen} 413023be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen 413123be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansenstatic PyObject *CF_CFPreferencesCopyApplicationList(PyObject *_self, PyObject *_args) 413223be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen{ 4133c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4134c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRef _rv; 4135c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef userName; 4136c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef hostName; 413723be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#ifndef CFPreferencesCopyApplicationList 4138c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFPreferencesCopyApplicationList); 413923be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#endif 4140c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&O&", 4141c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &userName, 4142c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &hostName)) 4143c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4144c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFPreferencesCopyApplicationList(userName, 4145c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou hostName); 4146c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 4147c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRefObj_New, _rv); 4148c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 414923be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen} 415023be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen 415123be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansenstatic PyObject *CF_CFPreferencesCopyKeyList(PyObject *_self, PyObject *_args) 415223be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen{ 4153c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4154c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRef _rv; 4155c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef applicationID; 4156c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef userName; 4157c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef hostName; 415823be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#ifndef CFPreferencesCopyKeyList 4159c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFPreferencesCopyKeyList); 416023be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#endif 4161c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&O&O&", 4162c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &applicationID, 4163c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &userName, 4164c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &hostName)) 4165c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4166c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFPreferencesCopyKeyList(applicationID, 4167c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou userName, 4168c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou hostName); 4169c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 4170c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRefObj_New, _rv); 4171c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 417223be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen} 417323be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen 417450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFStringGetTypeID(PyObject *_self, PyObject *_args) 417550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 4176c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4177c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeID _rv; 4178b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringGetTypeID 4179c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringGetTypeID); 4180b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 4181c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 4182c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4183c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringGetTypeID(); 4184c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 4185c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 4186c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 418750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 418850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 418950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFStringCreateWithPascalString(PyObject *_self, PyObject *_args) 419050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 4191c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4192c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 4193c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Str255 pStr; 4194c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding encoding; 4195b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringCreateWithPascalString 4196c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringCreateWithPascalString); 4197b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 4198c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&l", 4199c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_GetStr255, pStr, 4200c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &encoding)) 4201c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4202c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringCreateWithPascalString((CFAllocatorRef)NULL, 4203c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou pStr, 4204c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou encoding); 4205c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 4206c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 4207c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 420850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 420950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 421050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFStringCreateWithCString(PyObject *_self, PyObject *_args) 421150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 4212c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4213c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 4214c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char* cStr; 4215c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding encoding; 4216b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringCreateWithCString 4217c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringCreateWithCString); 4218b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 4219c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "sl", 4220c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &cStr, 4221c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &encoding)) 4222c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4223c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringCreateWithCString((CFAllocatorRef)NULL, 4224c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou cStr, 4225c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou encoding); 4226c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 4227c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 4228c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 422950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 423050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 423169ac361cb54c2134a13bd27b685ba8d01e3c9aa9Jack Jansenstatic PyObject *CF_CFStringCreateWithCharacters(PyObject *_self, PyObject *_args) 423269ac361cb54c2134a13bd27b685ba8d01e3c9aa9Jack Jansen{ 4233c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4234c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 4235c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou UniChar *chars__in__; 4236c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou UniCharCount chars__len__; 4237c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int chars__in_len__; 423869ac361cb54c2134a13bd27b685ba8d01e3c9aa9Jack Jansen#ifndef CFStringCreateWithCharacters 4239c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringCreateWithCharacters); 424069ac361cb54c2134a13bd27b685ba8d01e3c9aa9Jack Jansen#endif 4241c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "u#", 4242c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &chars__in__, &chars__in_len__)) 4243c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4244c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou chars__len__ = chars__in_len__; 4245c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringCreateWithCharacters((CFAllocatorRef)NULL, 4246c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou chars__in__, chars__len__); 4247c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 4248c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 4249c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 425069ac361cb54c2134a13bd27b685ba8d01e3c9aa9Jack Jansen} 425169ac361cb54c2134a13bd27b685ba8d01e3c9aa9Jack Jansen 425250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFStringCreateWithPascalStringNoCopy(PyObject *_self, PyObject *_args) 425350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 4254c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4255c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 4256c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Str255 pStr; 4257c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding encoding; 4258b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringCreateWithPascalStringNoCopy 4259c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringCreateWithPascalStringNoCopy); 4260b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 4261c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&l", 4262c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_GetStr255, pStr, 4263c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &encoding)) 4264c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4265c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringCreateWithPascalStringNoCopy((CFAllocatorRef)NULL, 4266c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou pStr, 4267c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou encoding, 4268c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (CFAllocatorRef)NULL); 4269c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 4270c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 4271c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 427250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 427350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 427450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFStringCreateWithCStringNoCopy(PyObject *_self, PyObject *_args) 427550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 4276c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4277c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 4278c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char* cStr; 4279c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding encoding; 4280b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringCreateWithCStringNoCopy 4281c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringCreateWithCStringNoCopy); 4282b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 4283c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "sl", 4284c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &cStr, 4285c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &encoding)) 4286c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4287c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringCreateWithCStringNoCopy((CFAllocatorRef)NULL, 4288c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou cStr, 4289c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou encoding, 4290c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (CFAllocatorRef)NULL); 4291c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 4292c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 4293c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 429450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 429550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 429669ac361cb54c2134a13bd27b685ba8d01e3c9aa9Jack Jansenstatic PyObject *CF_CFStringCreateWithCharactersNoCopy(PyObject *_self, PyObject *_args) 429769ac361cb54c2134a13bd27b685ba8d01e3c9aa9Jack Jansen{ 4298c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4299c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 4300c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou UniChar *chars__in__; 4301c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou UniCharCount chars__len__; 4302c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int chars__in_len__; 430369ac361cb54c2134a13bd27b685ba8d01e3c9aa9Jack Jansen#ifndef CFStringCreateWithCharactersNoCopy 4304c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringCreateWithCharactersNoCopy); 430569ac361cb54c2134a13bd27b685ba8d01e3c9aa9Jack Jansen#endif 4306c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "u#", 4307c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &chars__in__, &chars__in_len__)) 4308c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4309c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou chars__len__ = chars__in_len__; 4310c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringCreateWithCharactersNoCopy((CFAllocatorRef)NULL, 4311c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou chars__in__, chars__len__, 4312c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou (CFAllocatorRef)NULL); 4313c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 4314c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 4315c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 431669ac361cb54c2134a13bd27b685ba8d01e3c9aa9Jack Jansen} 431769ac361cb54c2134a13bd27b685ba8d01e3c9aa9Jack Jansen 431850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFStringCreateMutable(PyObject *_self, PyObject *_args) 431950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 4320c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4321c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableStringRef _rv; 4322c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex maxLength; 4323b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringCreateMutable 4324c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringCreateMutable); 4325b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 4326c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "l", 4327c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &maxLength)) 4328c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4329c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringCreateMutable((CFAllocatorRef)NULL, 4330c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou maxLength); 4331c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 4332c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableStringRefObj_New, _rv); 4333c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 433450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 433550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 433650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFStringCreateMutableCopy(PyObject *_self, PyObject *_args) 433750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 4338c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4339c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableStringRef _rv; 4340c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex maxLength; 4341c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef theString; 4342b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringCreateMutableCopy 4343c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringCreateMutableCopy); 4344b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 4345c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "lO&", 4346c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &maxLength, 4347c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_Convert, &theString)) 4348c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4349c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringCreateMutableCopy((CFAllocatorRef)NULL, 4350c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou maxLength, 4351c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou theString); 4352c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 4353c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableStringRefObj_New, _rv); 4354c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 435550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 435650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 435750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFStringCreateWithBytes(PyObject *_self, PyObject *_args) 435850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 4359c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4360c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 4361c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou unsigned char *bytes__in__; 4362c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou long bytes__len__; 4363c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int bytes__in_len__; 4364c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding encoding; 4365c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Boolean isExternalRepresentation; 4366b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringCreateWithBytes 4367c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringCreateWithBytes); 4368b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 4369c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "s#ll", 4370c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &bytes__in__, &bytes__in_len__, 4371c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &encoding, 4372c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &isExternalRepresentation)) 4373c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4374c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou bytes__len__ = bytes__in_len__; 4375c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringCreateWithBytes((CFAllocatorRef)NULL, 4376c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou bytes__in__, bytes__len__, 4377c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou encoding, 4378c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou isExternalRepresentation); 4379c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 4380c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 4381c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 438250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 438350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 438450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFStringGetSystemEncoding(PyObject *_self, PyObject *_args) 438550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 4386c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4387c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding _rv; 4388b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringGetSystemEncoding 4389c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringGetSystemEncoding); 4390b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 4391c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 4392c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4393c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringGetSystemEncoding(); 4394c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 4395c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 4396c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 439750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 439850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 439950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFStringGetMaximumSizeForEncoding(PyObject *_self, PyObject *_args) 440050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 4401c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4402c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex _rv; 4403c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFIndex length; 4404c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding encoding; 4405b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringGetMaximumSizeForEncoding 4406c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringGetMaximumSizeForEncoding); 4407b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 4408c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "ll", 4409c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &length, 4410c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &encoding)) 4411c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4412c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringGetMaximumSizeForEncoding(length, 4413c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou encoding); 4414c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 4415c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 4416c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 441750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 441850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 441950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFStringIsEncodingAvailable(PyObject *_self, PyObject *_args) 442050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 4421c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4422c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Boolean _rv; 4423c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding encoding; 4424b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringIsEncodingAvailable 4425c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringIsEncodingAvailable); 4426b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 4427c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "l", 4428c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &encoding)) 4429c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4430c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringIsEncodingAvailable(encoding); 4431c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 4432c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 4433c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 443450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 443550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 443650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFStringGetNameOfEncoding(PyObject *_self, PyObject *_args) 443750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 4438c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4439c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 4440c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding encoding; 4441b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringGetNameOfEncoding 4442c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringGetNameOfEncoding); 4443b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 4444c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "l", 4445c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &encoding)) 4446c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4447c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringGetNameOfEncoding(encoding); 4448c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 4449c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 4450c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 445150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 445250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 445350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFStringConvertEncodingToNSStringEncoding(PyObject *_self, PyObject *_args) 445450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 4455c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4456c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou UInt32 _rv; 4457c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding encoding; 4458b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringConvertEncodingToNSStringEncoding 4459c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringConvertEncodingToNSStringEncoding); 4460b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 4461c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "l", 4462c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &encoding)) 4463c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4464c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringConvertEncodingToNSStringEncoding(encoding); 4465c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 4466c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 4467c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 446850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 446950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 447050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFStringConvertNSStringEncodingToEncoding(PyObject *_self, PyObject *_args) 447150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 4472c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4473c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding _rv; 4474c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou UInt32 encoding; 4475b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringConvertNSStringEncodingToEncoding 4476c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringConvertNSStringEncodingToEncoding); 4477b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 4478c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "l", 4479c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &encoding)) 4480c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4481c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringConvertNSStringEncodingToEncoding(encoding); 4482c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 4483c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 4484c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 448550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 448650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 448750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFStringConvertEncodingToWindowsCodepage(PyObject *_self, PyObject *_args) 448850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 4489c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4490c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou UInt32 _rv; 4491c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding encoding; 4492b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringConvertEncodingToWindowsCodepage 4493c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringConvertEncodingToWindowsCodepage); 4494b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 4495c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "l", 4496c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &encoding)) 4497c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4498c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringConvertEncodingToWindowsCodepage(encoding); 4499c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 4500c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 4501c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 450250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 450350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 450450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFStringConvertWindowsCodepageToEncoding(PyObject *_self, PyObject *_args) 450550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 4506c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4507c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding _rv; 4508c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou UInt32 codepage; 4509b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringConvertWindowsCodepageToEncoding 4510c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringConvertWindowsCodepageToEncoding); 4511b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 4512c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "l", 4513c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &codepage)) 4514c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4515c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringConvertWindowsCodepageToEncoding(codepage); 4516c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 4517c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 4518c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 451950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 452050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 452150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFStringConvertEncodingToIANACharSetName(PyObject *_self, PyObject *_args) 452250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 4523c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4524c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 4525c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding encoding; 4526b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFStringConvertEncodingToIANACharSetName 4527c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringConvertEncodingToIANACharSetName); 4528b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 4529c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "l", 4530c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &encoding)) 4531c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4532c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringConvertEncodingToIANACharSetName(encoding); 4533c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 4534c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 4535c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 453650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 453750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 45382168e9d602cffbb6975a11353707a921455c05f7Jack Jansenstatic PyObject *CF_CFStringGetMostCompatibleMacStringEncoding(PyObject *_self, PyObject *_args) 45392168e9d602cffbb6975a11353707a921455c05f7Jack Jansen{ 4540c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4541c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding _rv; 4542c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding encoding; 45432168e9d602cffbb6975a11353707a921455c05f7Jack Jansen#ifndef CFStringGetMostCompatibleMacStringEncoding 4544c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFStringGetMostCompatibleMacStringEncoding); 45452168e9d602cffbb6975a11353707a921455c05f7Jack Jansen#endif 4546c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "l", 4547c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &encoding)) 4548c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4549c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFStringGetMostCompatibleMacStringEncoding(encoding); 4550c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 4551c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 4552c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 45532168e9d602cffbb6975a11353707a921455c05f7Jack Jansen} 45542168e9d602cffbb6975a11353707a921455c05f7Jack Jansen 455550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF___CFStringMakeConstantString(PyObject *_self, PyObject *_args) 455650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 4557c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4558c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef _rv; 4559c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou char* cStr; 4560b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef __CFStringMakeConstantString 4561c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(__CFStringMakeConstantString); 4562b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 4563c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "s", 4564c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &cStr)) 4565c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4566c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = __CFStringMakeConstantString(cStr); 4567c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 4568c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRefObj_New, _rv); 4569c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 457050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 457150ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 457250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFURLGetTypeID(PyObject *_self, PyObject *_args) 457350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 4574c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4575c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeID _rv; 4576b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFURLGetTypeID 4577c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLGetTypeID); 4578b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 4579c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "")) 4580c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4581c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLGetTypeID(); 4582c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("l", 4583c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv); 4584c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 458550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 458650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 458750ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyObject *CF_CFURLCreateWithBytes(PyObject *_self, PyObject *_args) 458850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 4589c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4590c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRef _rv; 4591c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou unsigned char *URLBytes__in__; 4592c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou long URLBytes__len__; 4593c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int URLBytes__in_len__; 4594c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringEncoding encoding; 4595c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRef baseURL; 4596b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#ifndef CFURLCreateWithBytes 4597c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLCreateWithBytes); 4598b3be216b41a4755556a887baa6ab440279fbe1dcJack Jansen#endif 4599c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "s#lO&", 4600c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &URLBytes__in__, &URLBytes__in_len__, 4601c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &encoding, 4602c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou OptionalCFURLRefObj_Convert, &baseURL)) 4603c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4604c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou URLBytes__len__ = URLBytes__in_len__; 4605c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCreateWithBytes((CFAllocatorRef)NULL, 4606c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou URLBytes__in__, URLBytes__len__, 4607c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou encoding, 4608c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou baseURL); 4609c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 4610c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRefObj_New, _rv); 4611c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 461250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 461350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 46142168e9d602cffbb6975a11353707a921455c05f7Jack Jansenstatic PyObject *CF_CFURLCreateFromFileSystemRepresentation(PyObject *_self, PyObject *_args) 46152168e9d602cffbb6975a11353707a921455c05f7Jack Jansen{ 4616c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4617c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRef _rv; 4618c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou unsigned char *buffer__in__; 4619c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou long buffer__len__; 4620c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int buffer__in_len__; 4621c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Boolean isDirectory; 46222168e9d602cffbb6975a11353707a921455c05f7Jack Jansen#ifndef CFURLCreateFromFileSystemRepresentation 4623c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLCreateFromFileSystemRepresentation); 46242168e9d602cffbb6975a11353707a921455c05f7Jack Jansen#endif 4625c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "s#l", 4626c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &buffer__in__, &buffer__in_len__, 4627c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &isDirectory)) 4628c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4629c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou buffer__len__ = buffer__in_len__; 4630c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCreateFromFileSystemRepresentation((CFAllocatorRef)NULL, 4631c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou buffer__in__, buffer__len__, 4632c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou isDirectory); 4633c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 4634c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRefObj_New, _rv); 4635c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 46362168e9d602cffbb6975a11353707a921455c05f7Jack Jansen} 46372168e9d602cffbb6975a11353707a921455c05f7Jack Jansen 46382168e9d602cffbb6975a11353707a921455c05f7Jack Jansenstatic PyObject *CF_CFURLCreateFromFileSystemRepresentationRelativeToBase(PyObject *_self, PyObject *_args) 46392168e9d602cffbb6975a11353707a921455c05f7Jack Jansen{ 4640c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4641c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRef _rv; 4642c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou unsigned char *buffer__in__; 4643c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou long buffer__len__; 4644c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou int buffer__in_len__; 4645c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Boolean isDirectory; 4646c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRef baseURL; 46472168e9d602cffbb6975a11353707a921455c05f7Jack Jansen#ifndef CFURLCreateFromFileSystemRepresentationRelativeToBase 4648c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLCreateFromFileSystemRepresentationRelativeToBase); 46492168e9d602cffbb6975a11353707a921455c05f7Jack Jansen#endif 4650c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "s#lO&", 4651c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &buffer__in__, &buffer__in_len__, 4652c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &isDirectory, 4653c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou OptionalCFURLRefObj_Convert, &baseURL)) 4654c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4655c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou buffer__len__ = buffer__in_len__; 4656c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCreateFromFileSystemRepresentationRelativeToBase((CFAllocatorRef)NULL, 4657c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou buffer__in__, buffer__len__, 4658c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou isDirectory, 4659c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou baseURL); 4660c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 4661c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRefObj_New, _rv); 4662c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 46632168e9d602cffbb6975a11353707a921455c05f7Jack Jansen} 46642168e9d602cffbb6975a11353707a921455c05f7Jack Jansen 46652168e9d602cffbb6975a11353707a921455c05f7Jack Jansenstatic PyObject *CF_CFURLCreateFromFSRef(PyObject *_self, PyObject *_args) 46662168e9d602cffbb6975a11353707a921455c05f7Jack Jansen{ 4667c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 4668c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRef _rv; 4669c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou FSRef fsRef; 46702168e9d602cffbb6975a11353707a921455c05f7Jack Jansen#ifndef CFURLCreateFromFSRef 4671c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_PRECHECK(CFURLCreateFromFSRef); 46722168e9d602cffbb6975a11353707a921455c05f7Jack Jansen#endif 4673c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&", 4674c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_GetFSRef, &fsRef)) 4675c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4676c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _rv = CFURLCreateFromFSRef((CFAllocatorRef)NULL, 4677c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou &fsRef); 4678c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", 4679c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRefObj_New, _rv); 4680c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 46812168e9d602cffbb6975a11353707a921455c05f7Jack Jansen} 46822168e9d602cffbb6975a11353707a921455c05f7Jack Jansen 46835ad6f7a3a9190df03583ff9c0426a97e15a63adaJack Jansenstatic PyObject *CF_toCF(PyObject *_self, PyObject *_args) 46845ad6f7a3a9190df03583ff9c0426a97e15a63adaJack Jansen{ 4685c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *_res = NULL; 46865ad6f7a3a9190df03583ff9c0426a97e15a63adaJack Jansen 4687c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRef rv; 4688c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeID typeid; 46895ad6f7a3a9190df03583ff9c0426a97e15a63adaJack Jansen 4690c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!PyArg_ParseTuple(_args, "O&", PyCF_Python2CF, &rv)) 4691c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4692c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou typeid = CFGetTypeID(rv); 46935ad6f7a3a9190df03583ff9c0426a97e15a63adaJack Jansen 4694c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (typeid == CFStringGetTypeID()) 4695c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_BuildValue("O&", CFStringRefObj_New, rv); 4696c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (typeid == CFArrayGetTypeID()) 4697c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_BuildValue("O&", CFArrayRefObj_New, rv); 4698c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (typeid == CFDictionaryGetTypeID()) 4699c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_BuildValue("O&", CFDictionaryRefObj_New, rv); 4700c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (typeid == CFURLGetTypeID()) 4701c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return Py_BuildValue("O&", CFURLRefObj_New, rv); 47025ad6f7a3a9190df03583ff9c0426a97e15a63adaJack Jansen 4703c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _res = Py_BuildValue("O&", CFTypeRefObj_New, rv); 4704c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return _res; 47055ad6f7a3a9190df03583ff9c0426a97e15a63adaJack Jansen 47065ad6f7a3a9190df03583ff9c0426a97e15a63adaJack Jansen} 47075ad6f7a3a9190df03583ff9c0426a97e15a63adaJack Jansen 470850ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenstatic PyMethodDef CF_methods[] = { 4709c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"__CFRangeMake", (PyCFunction)CF___CFRangeMake, 1, 4710c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFIndex loc, CFIndex len) -> (CFRange _rv)")}, 4711c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFAllocatorGetTypeID", (PyCFunction)CF_CFAllocatorGetTypeID, 1, 4712c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFTypeID _rv)")}, 4713c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFAllocatorGetPreferredSizeForSize", (PyCFunction)CF_CFAllocatorGetPreferredSizeForSize, 1, 4714c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFIndex size, CFOptionFlags hint) -> (CFIndex _rv)")}, 4715c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFCopyTypeIDDescription", (PyCFunction)CF_CFCopyTypeIDDescription, 1, 4716c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFTypeID type_id) -> (CFStringRef _rv)")}, 4717c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFArrayGetTypeID", (PyCFunction)CF_CFArrayGetTypeID, 1, 4718c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFTypeID _rv)")}, 4719c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFArrayCreateMutable", (PyCFunction)CF_CFArrayCreateMutable, 1, 4720c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFIndex capacity) -> (CFMutableArrayRef _rv)")}, 4721c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFArrayCreateMutableCopy", (PyCFunction)CF_CFArrayCreateMutableCopy, 1, 4722c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFIndex capacity, CFArrayRef theArray) -> (CFMutableArrayRef _rv)")}, 4723c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFDataGetTypeID", (PyCFunction)CF_CFDataGetTypeID, 1, 4724c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFTypeID _rv)")}, 4725c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFDataCreate", (PyCFunction)CF_CFDataCreate, 1, 4726c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(Buffer bytes) -> (CFDataRef _rv)")}, 4727c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFDataCreateWithBytesNoCopy", (PyCFunction)CF_CFDataCreateWithBytesNoCopy, 1, 4728c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(Buffer bytes) -> (CFDataRef _rv)")}, 4729c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFDataCreateMutable", (PyCFunction)CF_CFDataCreateMutable, 1, 4730c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFIndex capacity) -> (CFMutableDataRef _rv)")}, 4731c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFDataCreateMutableCopy", (PyCFunction)CF_CFDataCreateMutableCopy, 1, 4732c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFIndex capacity, CFDataRef theData) -> (CFMutableDataRef _rv)")}, 4733c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFDictionaryGetTypeID", (PyCFunction)CF_CFDictionaryGetTypeID, 1, 4734c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFTypeID _rv)")}, 4735c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFDictionaryCreateMutable", (PyCFunction)CF_CFDictionaryCreateMutable, 1, 4736c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFIndex capacity) -> (CFMutableDictionaryRef _rv)")}, 4737c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFDictionaryCreateMutableCopy", (PyCFunction)CF_CFDictionaryCreateMutableCopy, 1, 4738c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFIndex capacity, CFDictionaryRef theDict) -> (CFMutableDictionaryRef _rv)")}, 4739c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFPreferencesCopyAppValue", (PyCFunction)CF_CFPreferencesCopyAppValue, 1, 4740c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef key, CFStringRef applicationID) -> (CFTypeRef _rv)")}, 4741c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFPreferencesGetAppBooleanValue", (PyCFunction)CF_CFPreferencesGetAppBooleanValue, 1, 4742c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef key, CFStringRef applicationID) -> (Boolean _rv, Boolean keyExistsAndHasValidFormat)")}, 4743c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFPreferencesGetAppIntegerValue", (PyCFunction)CF_CFPreferencesGetAppIntegerValue, 1, 4744c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef key, CFStringRef applicationID) -> (CFIndex _rv, Boolean keyExistsAndHasValidFormat)")}, 4745c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFPreferencesSetAppValue", (PyCFunction)CF_CFPreferencesSetAppValue, 1, 4746c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef key, CFTypeRef value, CFStringRef applicationID) -> None")}, 4747c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFPreferencesAddSuitePreferencesToApp", (PyCFunction)CF_CFPreferencesAddSuitePreferencesToApp, 1, 4748c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef applicationID, CFStringRef suiteID) -> None")}, 4749c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFPreferencesRemoveSuitePreferencesFromApp", (PyCFunction)CF_CFPreferencesRemoveSuitePreferencesFromApp, 1, 4750c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef applicationID, CFStringRef suiteID) -> None")}, 4751c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFPreferencesAppSynchronize", (PyCFunction)CF_CFPreferencesAppSynchronize, 1, 4752c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef applicationID) -> (Boolean _rv)")}, 4753c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFPreferencesCopyValue", (PyCFunction)CF_CFPreferencesCopyValue, 1, 4754c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef key, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> (CFTypeRef _rv)")}, 4755c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFPreferencesCopyMultiple", (PyCFunction)CF_CFPreferencesCopyMultiple, 1, 4756c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFArrayRef keysToFetch, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> (CFDictionaryRef _rv)")}, 4757c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFPreferencesSetValue", (PyCFunction)CF_CFPreferencesSetValue, 1, 4758c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef key, CFTypeRef value, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> None")}, 4759c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFPreferencesSetMultiple", (PyCFunction)CF_CFPreferencesSetMultiple, 1, 4760c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFDictionaryRef keysToSet, CFArrayRef keysToRemove, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> None")}, 4761c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFPreferencesSynchronize", (PyCFunction)CF_CFPreferencesSynchronize, 1, 4762c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> (Boolean _rv)")}, 4763c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFPreferencesCopyApplicationList", (PyCFunction)CF_CFPreferencesCopyApplicationList, 1, 4764c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef userName, CFStringRef hostName) -> (CFArrayRef _rv)")}, 4765c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFPreferencesCopyKeyList", (PyCFunction)CF_CFPreferencesCopyKeyList, 1, 4766c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> (CFArrayRef _rv)")}, 4767c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringGetTypeID", (PyCFunction)CF_CFStringGetTypeID, 1, 4768c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFTypeID _rv)")}, 4769c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringCreateWithPascalString", (PyCFunction)CF_CFStringCreateWithPascalString, 1, 4770c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(Str255 pStr, CFStringEncoding encoding) -> (CFStringRef _rv)")}, 4771c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringCreateWithCString", (PyCFunction)CF_CFStringCreateWithCString, 1, 4772c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(char* cStr, CFStringEncoding encoding) -> (CFStringRef _rv)")}, 4773c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringCreateWithCharacters", (PyCFunction)CF_CFStringCreateWithCharacters, 1, 4774c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(Buffer chars) -> (CFStringRef _rv)")}, 4775c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringCreateWithPascalStringNoCopy", (PyCFunction)CF_CFStringCreateWithPascalStringNoCopy, 1, 4776c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(Str255 pStr, CFStringEncoding encoding) -> (CFStringRef _rv)")}, 4777c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringCreateWithCStringNoCopy", (PyCFunction)CF_CFStringCreateWithCStringNoCopy, 1, 4778c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(char* cStr, CFStringEncoding encoding) -> (CFStringRef _rv)")}, 4779c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringCreateWithCharactersNoCopy", (PyCFunction)CF_CFStringCreateWithCharactersNoCopy, 1, 4780c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(Buffer chars) -> (CFStringRef _rv)")}, 4781c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringCreateMutable", (PyCFunction)CF_CFStringCreateMutable, 1, 4782c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFIndex maxLength) -> (CFMutableStringRef _rv)")}, 4783c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringCreateMutableCopy", (PyCFunction)CF_CFStringCreateMutableCopy, 1, 4784c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFIndex maxLength, CFStringRef theString) -> (CFMutableStringRef _rv)")}, 4785c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringCreateWithBytes", (PyCFunction)CF_CFStringCreateWithBytes, 1, 4786c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(Buffer bytes, CFStringEncoding encoding, Boolean isExternalRepresentation) -> (CFStringRef _rv)")}, 4787c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringGetSystemEncoding", (PyCFunction)CF_CFStringGetSystemEncoding, 1, 4788c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFStringEncoding _rv)")}, 4789c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringGetMaximumSizeForEncoding", (PyCFunction)CF_CFStringGetMaximumSizeForEncoding, 1, 4790c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFIndex length, CFStringEncoding encoding) -> (CFIndex _rv)")}, 4791c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringIsEncodingAvailable", (PyCFunction)CF_CFStringIsEncodingAvailable, 1, 4792c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringEncoding encoding) -> (Boolean _rv)")}, 4793c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringGetNameOfEncoding", (PyCFunction)CF_CFStringGetNameOfEncoding, 1, 4794c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringEncoding encoding) -> (CFStringRef _rv)")}, 4795c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringConvertEncodingToNSStringEncoding", (PyCFunction)CF_CFStringConvertEncodingToNSStringEncoding, 1, 4796c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringEncoding encoding) -> (UInt32 _rv)")}, 4797c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringConvertNSStringEncodingToEncoding", (PyCFunction)CF_CFStringConvertNSStringEncodingToEncoding, 1, 4798c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(UInt32 encoding) -> (CFStringEncoding _rv)")}, 4799c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringConvertEncodingToWindowsCodepage", (PyCFunction)CF_CFStringConvertEncodingToWindowsCodepage, 1, 4800c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringEncoding encoding) -> (UInt32 _rv)")}, 4801c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringConvertWindowsCodepageToEncoding", (PyCFunction)CF_CFStringConvertWindowsCodepageToEncoding, 1, 4802c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(UInt32 codepage) -> (CFStringEncoding _rv)")}, 4803c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringConvertEncodingToIANACharSetName", (PyCFunction)CF_CFStringConvertEncodingToIANACharSetName, 1, 4804c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringEncoding encoding) -> (CFStringRef _rv)")}, 4805c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFStringGetMostCompatibleMacStringEncoding", (PyCFunction)CF_CFStringGetMostCompatibleMacStringEncoding, 1, 4806c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(CFStringEncoding encoding) -> (CFStringEncoding _rv)")}, 4807c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"__CFStringMakeConstantString", (PyCFunction)CF___CFStringMakeConstantString, 1, 4808c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(char* cStr) -> (CFStringRef _rv)")}, 4809c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLGetTypeID", (PyCFunction)CF_CFURLGetTypeID, 1, 4810c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("() -> (CFTypeID _rv)")}, 4811c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCreateWithBytes", (PyCFunction)CF_CFURLCreateWithBytes, 1, 4812c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(Buffer URLBytes, CFStringEncoding encoding, CFURLRef baseURL) -> (CFURLRef _rv)")}, 4813c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCreateFromFileSystemRepresentation", (PyCFunction)CF_CFURLCreateFromFileSystemRepresentation, 1, 4814c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(Buffer buffer, Boolean isDirectory) -> (CFURLRef _rv)")}, 4815c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCreateFromFileSystemRepresentationRelativeToBase", (PyCFunction)CF_CFURLCreateFromFileSystemRepresentationRelativeToBase, 1, 4816c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(Buffer buffer, Boolean isDirectory, CFURLRef baseURL) -> (CFURLRef _rv)")}, 4817c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"CFURLCreateFromFSRef", (PyCFunction)CF_CFURLCreateFromFSRef, 1, 4818c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(FSRef fsRef) -> (CFURLRef _rv)")}, 4819c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {"toCF", (PyCFunction)CF_toCF, 1, 4820c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDoc_STR("(python_object) -> (CF_object)")}, 4821c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou {NULL, NULL, 0} 482250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen}; 482350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 482450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 482550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 482650ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 48274eb45e7804e312b19860b15dcdac904afe407c9bJack Jansen/* Routines to convert any CF type to/from the corresponding CFxxxObj */ 48284eb45e7804e312b19860b15dcdac904afe407c9bJack JansenPyObject *CFObj_New(CFTypeRef itself) 48294eb45e7804e312b19860b15dcdac904afe407c9bJack Jansen{ 4830c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (itself == NULL) 4831c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 4832c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL"); 4833c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return NULL; 4834c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 4835c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (CFGetTypeID(itself) == CFArrayGetTypeID()) return CFArrayRefObj_New((CFArrayRef)itself); 4836c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (CFGetTypeID(itself) == CFDictionaryGetTypeID()) return CFDictionaryRefObj_New((CFDictionaryRef)itself); 4837c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (CFGetTypeID(itself) == CFDataGetTypeID()) return CFDataRefObj_New((CFDataRef)itself); 4838c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (CFGetTypeID(itself) == CFStringGetTypeID()) return CFStringRefObj_New((CFStringRef)itself); 4839c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (CFGetTypeID(itself) == CFURLGetTypeID()) return CFURLRefObj_New((CFURLRef)itself); 4840c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Or should we use PyCF_CF2Python here?? */ 4841c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return CFTypeRefObj_New(itself); 48424eb45e7804e312b19860b15dcdac904afe407c9bJack Jansen} 48434eb45e7804e312b19860b15dcdac904afe407c9bJack Jansenint CFObj_Convert(PyObject *v, CFTypeRef *p_itself) 48444eb45e7804e312b19860b15dcdac904afe407c9bJack Jansen{ 48454eb45e7804e312b19860b15dcdac904afe407c9bJack Jansen 4846c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (v == Py_None) { *p_itself = NULL; return 1; } 4847c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Check for other CF objects here */ 4848c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 4849c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (!CFTypeRefObj_Check(v) && 4850c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou !CFArrayRefObj_Check(v) && 4851c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou !CFMutableArrayRefObj_Check(v) && 4852c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou !CFDictionaryRefObj_Check(v) && 4853c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou !CFMutableDictionaryRefObj_Check(v) && 4854c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou !CFDataRefObj_Check(v) && 4855c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou !CFMutableDataRefObj_Check(v) && 4856c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou !CFStringRefObj_Check(v) && 4857c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou !CFMutableStringRefObj_Check(v) && 4858c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou !CFURLRefObj_Check(v) ) 4859c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou { 4860c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* XXXX Or should we use PyCF_Python2CF here?? */ 4861c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyErr_SetString(PyExc_TypeError, "CF object required"); 4862c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 0; 4863c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou } 4864c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou *p_itself = ((CFTypeRefObject *)v)->ob_itself; 4865c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return 1; 48664eb45e7804e312b19860b15dcdac904afe407c9bJack Jansen} 48674eb45e7804e312b19860b15dcdac904afe407c9bJack Jansen 48684eb45e7804e312b19860b15dcdac904afe407c9bJack Jansen 486950ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansenvoid init_CF(void) 487050ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen{ 4871c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *m; 4872c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyObject *d; 4873c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 4874c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 4875c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 4876c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_INIT_TOOLBOX_OBJECT_NEW(CFTypeRef, CFObj_New); 4877c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFTypeRef, CFObj_Convert); 4878c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_INIT_TOOLBOX_OBJECT_NEW(CFTypeRef, CFTypeRefObj_New); 4879c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFTypeRef, CFTypeRefObj_Convert); 4880c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_INIT_TOOLBOX_OBJECT_NEW(CFStringRef, CFStringRefObj_New); 4881c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFStringRef, CFStringRefObj_Convert); 4882c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_INIT_TOOLBOX_OBJECT_NEW(CFMutableStringRef, CFMutableStringRefObj_New); 4883c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFMutableStringRef, CFMutableStringRefObj_Convert); 4884c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_INIT_TOOLBOX_OBJECT_NEW(CFArrayRef, CFArrayRefObj_New); 4885c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFArrayRef, CFArrayRefObj_Convert); 4886c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_INIT_TOOLBOX_OBJECT_NEW(CFMutableArrayRef, CFMutableArrayRefObj_New); 4887c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFMutableArrayRef, CFMutableArrayRefObj_Convert); 4888c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_INIT_TOOLBOX_OBJECT_NEW(CFDictionaryRef, CFDictionaryRefObj_New); 4889c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFDictionaryRef, CFDictionaryRefObj_Convert); 4890c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_INIT_TOOLBOX_OBJECT_NEW(CFMutableDictionaryRef, CFMutableDictionaryRefObj_New); 4891c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFMutableDictionaryRef, CFMutableDictionaryRefObj_Convert); 4892c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_INIT_TOOLBOX_OBJECT_NEW(CFURLRef, CFURLRefObj_New); 4893c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFURLRef, CFURLRefObj_Convert); 4894c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 4895c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou 4896c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou m = Py_InitModule("_CF", CF_methods); 4897c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou d = PyModule_GetDict(m); 4898c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CF_Error = PyMac_GetOSErrException(); 4899c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (CF_Error == NULL || 4900c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyDict_SetItemString(d, "Error", CF_Error) != 0) 4901c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou return; 4902c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFTypeRef_Type.ob_type = &PyType_Type; 4903c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyType_Ready(&CFTypeRef_Type) < 0) return; 4904c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(&CFTypeRef_Type); 4905c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyModule_AddObject(m, "CFTypeRef", (PyObject *)&CFTypeRef_Type); 4906c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Backward-compatible name */ 4907c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(&CFTypeRef_Type); 4908c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyModule_AddObject(m, "CFTypeRefType", (PyObject *)&CFTypeRef_Type); 4909c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRef_Type.ob_type = &PyType_Type; 4910c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFArrayRef_Type.tp_base = &CFTypeRef_Type; 4911c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyType_Ready(&CFArrayRef_Type) < 0) return; 4912c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(&CFArrayRef_Type); 4913c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyModule_AddObject(m, "CFArrayRef", (PyObject *)&CFArrayRef_Type); 4914c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Backward-compatible name */ 4915c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(&CFArrayRef_Type); 4916c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyModule_AddObject(m, "CFArrayRefType", (PyObject *)&CFArrayRef_Type); 4917c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableArrayRef_Type.ob_type = &PyType_Type; 4918c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableArrayRef_Type.tp_base = &CFArrayRef_Type; 4919c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyType_Ready(&CFMutableArrayRef_Type) < 0) return; 4920c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(&CFMutableArrayRef_Type); 4921c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyModule_AddObject(m, "CFMutableArrayRef", (PyObject *)&CFMutableArrayRef_Type); 4922c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Backward-compatible name */ 4923c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(&CFMutableArrayRef_Type); 4924c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyModule_AddObject(m, "CFMutableArrayRefType", (PyObject *)&CFMutableArrayRef_Type); 4925c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDictionaryRef_Type.ob_type = &PyType_Type; 4926c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDictionaryRef_Type.tp_base = &CFTypeRef_Type; 4927c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyType_Ready(&CFDictionaryRef_Type) < 0) return; 4928c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(&CFDictionaryRef_Type); 4929c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyModule_AddObject(m, "CFDictionaryRef", (PyObject *)&CFDictionaryRef_Type); 4930c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Backward-compatible name */ 4931c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(&CFDictionaryRef_Type); 4932c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyModule_AddObject(m, "CFDictionaryRefType", (PyObject *)&CFDictionaryRef_Type); 4933c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDictionaryRef_Type.ob_type = &PyType_Type; 4934c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDictionaryRef_Type.tp_base = &CFDictionaryRef_Type; 4935c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyType_Ready(&CFMutableDictionaryRef_Type) < 0) return; 4936c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(&CFMutableDictionaryRef_Type); 4937c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyModule_AddObject(m, "CFMutableDictionaryRef", (PyObject *)&CFMutableDictionaryRef_Type); 4938c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Backward-compatible name */ 4939c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(&CFMutableDictionaryRef_Type); 4940c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyModule_AddObject(m, "CFMutableDictionaryRefType", (PyObject *)&CFMutableDictionaryRef_Type); 4941c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRef_Type.ob_type = &PyType_Type; 4942c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFDataRef_Type.tp_base = &CFTypeRef_Type; 4943c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyType_Ready(&CFDataRef_Type) < 0) return; 4944c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(&CFDataRef_Type); 4945c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyModule_AddObject(m, "CFDataRef", (PyObject *)&CFDataRef_Type); 4946c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Backward-compatible name */ 4947c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(&CFDataRef_Type); 4948c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyModule_AddObject(m, "CFDataRefType", (PyObject *)&CFDataRef_Type); 4949c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDataRef_Type.ob_type = &PyType_Type; 4950c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableDataRef_Type.tp_base = &CFDataRef_Type; 4951c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyType_Ready(&CFMutableDataRef_Type) < 0) return; 4952c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(&CFMutableDataRef_Type); 4953c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyModule_AddObject(m, "CFMutableDataRef", (PyObject *)&CFMutableDataRef_Type); 4954c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Backward-compatible name */ 4955c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(&CFMutableDataRef_Type); 4956c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyModule_AddObject(m, "CFMutableDataRefType", (PyObject *)&CFMutableDataRef_Type); 4957c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef_Type.ob_type = &PyType_Type; 4958c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFStringRef_Type.tp_base = &CFTypeRef_Type; 4959c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyType_Ready(&CFStringRef_Type) < 0) return; 4960c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(&CFStringRef_Type); 4961c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyModule_AddObject(m, "CFStringRef", (PyObject *)&CFStringRef_Type); 4962c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Backward-compatible name */ 4963c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(&CFStringRef_Type); 4964c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyModule_AddObject(m, "CFStringRefType", (PyObject *)&CFStringRef_Type); 4965c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableStringRef_Type.ob_type = &PyType_Type; 4966c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFMutableStringRef_Type.tp_base = &CFStringRef_Type; 4967c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyType_Ready(&CFMutableStringRef_Type) < 0) return; 4968c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(&CFMutableStringRef_Type); 4969c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyModule_AddObject(m, "CFMutableStringRef", (PyObject *)&CFMutableStringRef_Type); 4970c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Backward-compatible name */ 4971c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(&CFMutableStringRef_Type); 4972c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyModule_AddObject(m, "CFMutableStringRefType", (PyObject *)&CFMutableStringRef_Type); 4973c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRef_Type.ob_type = &PyType_Type; 4974c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou CFURLRef_Type.tp_base = &CFTypeRef_Type; 4975c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou if (PyType_Ready(&CFURLRef_Type) < 0) return; 4976c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(&CFURLRef_Type); 4977c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyModule_AddObject(m, "CFURLRef", (PyObject *)&CFURLRef_Type); 4978c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou /* Backward-compatible name */ 4979c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou Py_INCREF(&CFURLRef_Type); 4980c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou PyModule_AddObject(m, "CFURLRefType", (PyObject *)&CFURLRef_Type); 498123be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen 498223be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen#define _STRINGCONST(name) PyModule_AddObject(m, #name, CFStringRefObj_New(name)) 4983c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _STRINGCONST(kCFPreferencesAnyApplication); 4984c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _STRINGCONST(kCFPreferencesCurrentApplication); 4985c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _STRINGCONST(kCFPreferencesAnyHost); 4986c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _STRINGCONST(kCFPreferencesCurrentHost); 4987c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _STRINGCONST(kCFPreferencesAnyUser); 4988c83ea137d7e717f764e2f31fc2544f522de7d857Antoine Pitrou _STRINGCONST(kCFPreferencesCurrentUser); 498923be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen 499023be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen 499123be1ceb512ad8244dfd08b97e6a0dab8404f213Jack Jansen 499250ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen} 499350ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 499450ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen/* ========================= End module _CF ========================= */ 499550ecb0ad835480e6a3446613ceeffa78a7bd2de3Jack Jansen 4996