mirror of
https://github.com/python/cpython.git
synced 2025-10-30 01:47:38 +00:00
svn+ssh://pythondev@svn.python.org/python/trunk ........ r58096 | brett.cannon | 2007-09-10 23:38:27 +0200 (Mon, 10 Sep 2007) | 4 lines Fix a possible segfault from recursing too deep to get the repr of a list. Closes issue #1096. ........ r58097 | bill.janssen | 2007-09-10 23:51:02 +0200 (Mon, 10 Sep 2007) | 33 lines More work on SSL support. * Much expanded test suite: All protocols tested against all other protocols. All protocols tested with all certificate options. Tests for bad key and bad cert. Test of STARTTLS functionality. Test of RAND_* functions. * Fixes for threading/malloc bug. * Issue 1065 fixed: sslsocket class renamed to SSLSocket. sslerror class renamed to SSLError. Function "wrap_socket" now used to wrap an existing socket. * Issue 1583946 finally fixed: Support for subjectAltName added. Subject name now returned as proper DN list of RDNs. * SSLError exported from socket as "sslerror". * RAND_* functions properly exported from ssl.py. * Documentation improved: Example of how to create a self-signed certificate. Better indexing. ........ r58098 | guido.van.rossum | 2007-09-11 00:02:25 +0200 (Tue, 11 Sep 2007) | 9 lines Patch # 1140 (my code, approved by Effbot). Make sure the type of the return value of re.sub(x, y, z) is the type of y+x (i.e. unicode if either is unicode, str if they are both str) even if there are no substitutions or if x==z (which triggered various special cases in join_list()). Could be backported to 2.5; no need to port to 3.0. ........ r58099 | guido.van.rossum | 2007-09-11 00:36:02 +0200 (Tue, 11 Sep 2007) | 8 lines Patch # 1026 by Benjamin Aranguren (with Alex Martelli): Backport abc.py and isinstance/issubclass overloading to 2.6. I had to backport test_typechecks.py myself, and make one small change to abc.py to avoid duplicate work when x.__class__ and type(x) are the same. ........ r58100 | bill.janssen | 2007-09-11 01:41:24 +0200 (Tue, 11 Sep 2007) | 3 lines A better way of finding an open port to test with. ........ r58101 | bill.janssen | 2007-09-11 03:09:19 +0200 (Tue, 11 Sep 2007) | 4 lines Make sure test_ssl doesn't reference the ssl module in a context where it can't be imported. ........ r58102 | bill.janssen | 2007-09-11 04:42:07 +0200 (Tue, 11 Sep 2007) | 3 lines Fix some documentation bugs. ........ r58103 | nick.coghlan | 2007-09-11 16:01:18 +0200 (Tue, 11 Sep 2007) | 1 line Always use the -E flag when spawning subprocesses in test_cmd_line (Issue 1056) ........ r58106 | thomas.heller | 2007-09-11 21:17:48 +0200 (Tue, 11 Sep 2007) | 3 lines Disable some tests that fail on the 'ppc Debian unstable' buildbot to find out if they cause the segfault on the 'alpha Debian' machine. ........ r58108 | brett.cannon | 2007-09-11 23:02:28 +0200 (Tue, 11 Sep 2007) | 6 lines Generators had their throw() method allowing string exceptions. That's a no-no. Fixes issue #1147. Need to fix 2.5 to raise a proper warning if a string exception is passed in. ........ r58112 | georg.brandl | 2007-09-12 20:03:51 +0200 (Wed, 12 Sep 2007) | 3 lines New documentation page for the bdb module. (This doesn't need to be merged to Py3k.) ........ r58114 | georg.brandl | 2007-09-12 20:05:57 +0200 (Wed, 12 Sep 2007) | 2 lines Bug #1152: use non-deprecated name in example. ........ r58115 | georg.brandl | 2007-09-12 20:08:33 +0200 (Wed, 12 Sep 2007) | 2 lines Fix #1122: wrong return type documented for various _Size() functions. ........ r58117 | georg.brandl | 2007-09-12 20:10:56 +0200 (Wed, 12 Sep 2007) | 2 lines Fix #1139: PyFile_Encoding really is PyFile_SetEncoding. ........ r58119 | georg.brandl | 2007-09-12 20:29:18 +0200 (Wed, 12 Sep 2007) | 2 lines bug #1154: release memory allocated by "es" PyArg_ParseTuple format specifier. ........ r58121 | bill.janssen | 2007-09-12 20:52:05 +0200 (Wed, 12 Sep 2007) | 1 line root certificate for https://svn.python.org/, used in test_ssl ........ r58122 | georg.brandl | 2007-09-12 21:00:07 +0200 (Wed, 12 Sep 2007) | 3 lines Bug #1153: repr.repr() now doesn't require set and dictionary items to be orderable to properly represent them. ........ r58125 | georg.brandl | 2007-09-12 21:29:28 +0200 (Wed, 12 Sep 2007) | 4 lines #1120: put explicit version in the shebang lines of pydoc, idle and smtpd.py scripts that are installed by setup.py. That way, they work when only "make altinstall" is used. ........ r58139 | mark.summerfield | 2007-09-13 16:54:30 +0200 (Thu, 13 Sep 2007) | 9 lines Replaced variable o with obj in operator.rst because o is easy to confuse. Added a note about Python 3's collections.Mapping etc., above section that describes isMappingType() etc. Added xrefs between os, os.path, fileinput, and open(). ........ r58143 | facundo.batista | 2007-09-13 20:13:15 +0200 (Thu, 13 Sep 2007) | 7 lines Merged the decimal-branch (revisions 54886 to 58140). Decimal is now fully updated to the latests Decimal Specification (v1.66) and the latests test cases (v2.56). Thanks to Mark Dickinson for all his help during this process. ........ r58145 | facundo.batista | 2007-09-13 20:42:09 +0200 (Thu, 13 Sep 2007) | 7 lines Put the parameter watchexp back in (changed watchexp from an int to a bool). Also second argument to watchexp is now converted to Decimal, just as with all the other two-argument operations. Thanks Mark Dickinson. ........ r58147 | andrew.kuchling | 2007-09-14 00:49:34 +0200 (Fri, 14 Sep 2007) | 1 line Add various items ........ r58148 | andrew.kuchling | 2007-09-14 00:50:10 +0200 (Fri, 14 Sep 2007) | 1 line Make target unique ........ r58154 | facundo.batista | 2007-09-14 20:58:34 +0200 (Fri, 14 Sep 2007) | 3 lines Included the new functions, and new descriptions. ........ r58155 | thomas.heller | 2007-09-14 21:40:35 +0200 (Fri, 14 Sep 2007) | 2 lines ctypes.util.find_library uses dump(1) instead of objdump(1) on Solaris. Fixes issue #1777530; will backport to release25-maint. ........ r58159 | facundo.batista | 2007-09-14 23:29:52 +0200 (Fri, 14 Sep 2007) | 3 lines Some additions (examples and a bit on the tutorial). ........ r58160 | georg.brandl | 2007-09-15 18:53:36 +0200 (Sat, 15 Sep 2007) | 2 lines Remove bdb from the "undocumented modules" list. ........ r58164 | bill.janssen | 2007-09-17 00:06:00 +0200 (Mon, 17 Sep 2007) | 15 lines Add support for asyncore server-side SSL support. This requires adding the 'makefile' method to ssl.SSLSocket, and importing the requisite fakefile class from socket.py, and making the appropriate changes to it to make it use the SSL connection. Added sample HTTPS server to test_ssl.py, and test that uses it. Change SSL tests to use https://svn.python.org/, instead of www.sf.net and pop.gmail.com. Added utility function to ssl module, get_server_certificate, to wrap up the several things to be done to pull a certificate from a remote server. ........ r58173 | bill.janssen | 2007-09-17 01:16:46 +0200 (Mon, 17 Sep 2007) | 1 line use binary mode when reading files for testAsyncore to make Windows happy ........ r58175 | raymond.hettinger | 2007-09-17 02:55:00 +0200 (Mon, 17 Sep 2007) | 7 lines Sync-up named tuples with the latest version of the ASPN recipe. Allows optional commas in the field-name spec (help when named tuples are used in conjuction with sql queries). Adds the __fields__ attribute for introspection and to support conversion to dictionary form. Adds a __replace__() method similar to str.replace() but using a named field as a target. Clean-up spelling and presentation in doc-strings. ........ r58176 | brett.cannon | 2007-09-17 05:28:34 +0200 (Mon, 17 Sep 2007) | 5 lines Add a bunch of GIL release/acquire points in tp_print implementations and for PyObject_Print(). Closes issue #1164. ........ r58177 | sean.reifschneider | 2007-09-17 07:45:04 +0200 (Mon, 17 Sep 2007) | 2 lines issue1597011: Fix for bz2 module corner-case error due to error checking bug. ........ r58180 | facundo.batista | 2007-09-17 18:26:50 +0200 (Mon, 17 Sep 2007) | 3 lines Decimal is updated, :) ........ r58181 | facundo.batista | 2007-09-17 19:30:13 +0200 (Mon, 17 Sep 2007) | 5 lines The methods always return Decimal classes, even if they're executed through a subclass (thanks Mark Dickinson). Added a bit of testing for this. ........ r58183 | sean.reifschneider | 2007-09-17 22:53:21 +0200 (Mon, 17 Sep 2007) | 2 lines issue1082: Fixing platform and system for Vista. ........ r58185 | andrew.kuchling | 2007-09-18 03:36:16 +0200 (Tue, 18 Sep 2007) | 1 line Add item; sort properly ........ r58186 | raymond.hettinger | 2007-09-18 05:33:19 +0200 (Tue, 18 Sep 2007) | 1 line Handle corner cased on 0-tuples and 1-tuples. Add verbose option so people can see how it works. ........ r58192 | georg.brandl | 2007-09-18 09:24:40 +0200 (Tue, 18 Sep 2007) | 2 lines A bit of reordering, also show more subheadings in the lang ref index. ........ r58193 | facundo.batista | 2007-09-18 18:53:18 +0200 (Tue, 18 Sep 2007) | 4 lines Speed up of the various division operations (remainder, divide, divideint and divmod). Thanks Mark Dickinson. ........ r58197 | raymond.hettinger | 2007-09-19 00:18:02 +0200 (Wed, 19 Sep 2007) | 1 line Cleanup docs for NamedTuple. ........
4986 lines
155 KiB
C
4986 lines
155 KiB
C
|
|
/* =========================== Module _CF =========================== */
|
|
|
|
#include "Python.h"
|
|
|
|
|
|
|
|
#include "pymactoolbox.h"
|
|
|
|
/* Macro to test whether a weak-loaded CFM function exists */
|
|
#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\
|
|
PyErr_SetString(PyExc_NotImplementedError, \
|
|
"Not available in this shared library/OS version"); \
|
|
return NULL; \
|
|
}} while(0)
|
|
|
|
|
|
#include <CoreServices/CoreServices.h>
|
|
|
|
#include "pycfbridge.h"
|
|
|
|
#ifdef USE_TOOLBOX_OBJECT_GLUE
|
|
extern PyObject *_CFObj_New(CFTypeRef);
|
|
extern int _CFObj_Convert(PyObject *, CFTypeRef *);
|
|
#define CFObj_New _CFObj_New
|
|
#define CFObj_Convert _CFObj_Convert
|
|
|
|
extern PyObject *_CFTypeRefObj_New(CFTypeRef);
|
|
extern int _CFTypeRefObj_Convert(PyObject *, CFTypeRef *);
|
|
#define CFTypeRefObj_New _CFTypeRefObj_New
|
|
#define CFTypeRefObj_Convert _CFTypeRefObj_Convert
|
|
|
|
extern PyObject *_CFStringRefObj_New(CFStringRef);
|
|
extern int _CFStringRefObj_Convert(PyObject *, CFStringRef *);
|
|
#define CFStringRefObj_New _CFStringRefObj_New
|
|
#define CFStringRefObj_Convert _CFStringRefObj_Convert
|
|
|
|
extern PyObject *_CFMutableStringRefObj_New(CFMutableStringRef);
|
|
extern int _CFMutableStringRefObj_Convert(PyObject *, CFMutableStringRef *);
|
|
#define CFMutableStringRefObj_New _CFMutableStringRefObj_New
|
|
#define CFMutableStringRefObj_Convert _CFMutableStringRefObj_Convert
|
|
|
|
extern PyObject *_CFArrayRefObj_New(CFArrayRef);
|
|
extern int _CFArrayRefObj_Convert(PyObject *, CFArrayRef *);
|
|
#define CFArrayRefObj_New _CFArrayRefObj_New
|
|
#define CFArrayRefObj_Convert _CFArrayRefObj_Convert
|
|
|
|
extern PyObject *_CFMutableArrayRefObj_New(CFMutableArrayRef);
|
|
extern int _CFMutableArrayRefObj_Convert(PyObject *, CFMutableArrayRef *);
|
|
#define CFMutableArrayRefObj_New _CFMutableArrayRefObj_New
|
|
#define CFMutableArrayRefObj_Convert _CFMutableArrayRefObj_Convert
|
|
|
|
extern PyObject *_CFDataRefObj_New(CFDataRef);
|
|
extern int _CFDataRefObj_Convert(PyObject *, CFDataRef *);
|
|
#define CFDataRefObj_New _CFDataRefObj_New
|
|
#define CFDataRefObj_Convert _CFDataRefObj_Convert
|
|
|
|
extern PyObject *_CFMutableDataRefObj_New(CFMutableDataRef);
|
|
extern int _CFMutableDataRefObj_Convert(PyObject *, CFMutableDataRef *);
|
|
#define CFMutableDataRefObj_New _CFMutableDataRefObj_New
|
|
#define CFMutableDataRefObj_Convert _CFMutableDataRefObj_Convert
|
|
|
|
extern PyObject *_CFDictionaryRefObj_New(CFDictionaryRef);
|
|
extern int _CFDictionaryRefObj_Convert(PyObject *, CFDictionaryRef *);
|
|
#define CFDictionaryRefObj_New _CFDictionaryRefObj_New
|
|
#define CFDictionaryRefObj_Convert _CFDictionaryRefObj_Convert
|
|
|
|
extern PyObject *_CFMutableDictionaryRefObj_New(CFMutableDictionaryRef);
|
|
extern int _CFMutableDictionaryRefObj_Convert(PyObject *, CFMutableDictionaryRef *);
|
|
#define CFMutableDictionaryRefObj_New _CFMutableDictionaryRefObj_New
|
|
#define CFMutableDictionaryRefObj_Convert _CFMutableDictionaryRefObj_Convert
|
|
|
|
extern PyObject *_CFURLRefObj_New(CFURLRef);
|
|
extern int _CFURLRefObj_Convert(PyObject *, CFURLRef *);
|
|
extern int _OptionalCFURLRefObj_Convert(PyObject *, CFURLRef *);
|
|
#define CFURLRefObj_New _CFURLRefObj_New
|
|
#define CFURLRefObj_Convert _CFURLRefObj_Convert
|
|
#define OptionalCFURLRefObj_Convert _OptionalCFURLRefObj_Convert
|
|
#endif
|
|
|
|
/*
|
|
** Parse/generate CFRange records
|
|
*/
|
|
PyObject *CFRange_New(CFRange *itself)
|
|
{
|
|
|
|
return Py_BuildValue("ll", (long)itself->location, (long)itself->length);
|
|
}
|
|
|
|
int
|
|
CFRange_Convert(PyObject *v, CFRange *p_itself)
|
|
{
|
|
long location, length;
|
|
|
|
if( !PyArg_ParseTuple(v, "ll", &location, &length) )
|
|
return 0;
|
|
p_itself->location = (CFIndex)location;
|
|
p_itself->length = (CFIndex)length;
|
|
return 1;
|
|
}
|
|
|
|
/* Optional CFURL argument or None (passed as NULL) */
|
|
int
|
|
OptionalCFURLRefObj_Convert(PyObject *v, CFURLRef *p_itself)
|
|
{
|
|
if ( v == Py_None ) {
|
|
p_itself = NULL;
|
|
return 1;
|
|
}
|
|
return CFURLRefObj_Convert(v, p_itself);
|
|
}
|
|
|
|
static PyObject *CF_Error;
|
|
|
|
/* --------------------- Object type CFTypeRef ---------------------- */
|
|
|
|
PyTypeObject CFTypeRef_Type;
|
|
|
|
#define CFTypeRefObj_Check(x) (Py_Type(x) == &CFTypeRef_Type || PyObject_TypeCheck((x), &CFTypeRef_Type))
|
|
|
|
typedef struct CFTypeRefObject {
|
|
PyObject_HEAD
|
|
CFTypeRef ob_itself;
|
|
void (*ob_freeit)(CFTypeRef ptr);
|
|
} CFTypeRefObject;
|
|
|
|
PyObject *CFTypeRefObj_New(CFTypeRef itself)
|
|
{
|
|
CFTypeRefObject *it;
|
|
if (itself == NULL)
|
|
{
|
|
PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");
|
|
return NULL;
|
|
}
|
|
it = PyObject_NEW(CFTypeRefObject, &CFTypeRef_Type);
|
|
if (it == NULL) return NULL;
|
|
it->ob_itself = itself;
|
|
it->ob_freeit = CFRelease;
|
|
return (PyObject *)it;
|
|
}
|
|
|
|
int CFTypeRefObj_Convert(PyObject *v, CFTypeRef *p_itself)
|
|
{
|
|
|
|
if (v == Py_None) { *p_itself = NULL; return 1; }
|
|
/* Check for other CF objects here */
|
|
|
|
if (!CFTypeRefObj_Check(v))
|
|
{
|
|
PyErr_SetString(PyExc_TypeError, "CFTypeRef required");
|
|
return 0;
|
|
}
|
|
*p_itself = ((CFTypeRefObject *)v)->ob_itself;
|
|
return 1;
|
|
}
|
|
|
|
static void CFTypeRefObj_dealloc(CFTypeRefObject *self)
|
|
{
|
|
if (self->ob_freeit && self->ob_itself)
|
|
{
|
|
self->ob_freeit((CFTypeRef)self->ob_itself);
|
|
self->ob_itself = NULL;
|
|
}
|
|
Py_Type(self)->tp_free((PyObject *)self);
|
|
}
|
|
|
|
static PyObject *CFTypeRefObj_CFGetTypeID(CFTypeRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFTypeID _rv;
|
|
#ifndef CFGetTypeID
|
|
PyMac_PRECHECK(CFGetTypeID);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFGetTypeID(_self->ob_itself);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFTypeRefObj_CFRetain(CFTypeRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFTypeRef _rv;
|
|
#ifndef CFRetain
|
|
PyMac_PRECHECK(CFRetain);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFRetain(_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
CFTypeRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFTypeRefObj_CFRelease(CFTypeRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
#ifndef CFRelease
|
|
PyMac_PRECHECK(CFRelease);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
CFRelease(_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFTypeRefObj_CFGetRetainCount(CFTypeRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFIndex _rv;
|
|
#ifndef CFGetRetainCount
|
|
PyMac_PRECHECK(CFGetRetainCount);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFGetRetainCount(_self->ob_itself);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFTypeRefObj_CFEqual(CFTypeRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
Boolean _rv;
|
|
CFTypeRef cf2;
|
|
#ifndef CFEqual
|
|
PyMac_PRECHECK(CFEqual);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
CFTypeRefObj_Convert, &cf2))
|
|
return NULL;
|
|
_rv = CFEqual(_self->ob_itself,
|
|
cf2);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFTypeRefObj_CFHash(CFTypeRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFHashCode _rv;
|
|
#ifndef CFHash
|
|
PyMac_PRECHECK(CFHash);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFHash(_self->ob_itself);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFTypeRefObj_CFCopyDescription(CFTypeRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
#ifndef CFCopyDescription
|
|
PyMac_PRECHECK(CFCopyDescription);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFCopyDescription(_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFTypeRefObj_CFPropertyListCreateXMLData(CFTypeRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFDataRef _rv;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFPropertyListCreateXMLData((CFAllocatorRef)NULL,
|
|
_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
CFDataRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFTypeRefObj_CFPropertyListCreateDeepCopy(CFTypeRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFTypeRef _rv;
|
|
CFOptionFlags mutabilityOption;
|
|
if (!PyArg_ParseTuple(_args, "l",
|
|
&mutabilityOption))
|
|
return NULL;
|
|
_rv = CFPropertyListCreateDeepCopy((CFAllocatorRef)NULL,
|
|
_self->ob_itself,
|
|
mutabilityOption);
|
|
_res = Py_BuildValue("O&",
|
|
CFTypeRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFTypeRefObj_CFShow(CFTypeRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
#ifndef CFShow
|
|
PyMac_PRECHECK(CFShow);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
CFShow(_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFTypeRefObj_CFPropertyListCreateFromXMLData(CFTypeRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
|
|
CFTypeRef _rv;
|
|
CFOptionFlags mutabilityOption;
|
|
CFStringRef errorString;
|
|
if (!PyArg_ParseTuple(_args, "l",
|
|
&mutabilityOption))
|
|
return NULL;
|
|
_rv = CFPropertyListCreateFromXMLData((CFAllocatorRef)NULL,
|
|
_self->ob_itself,
|
|
mutabilityOption,
|
|
&errorString);
|
|
if (errorString)
|
|
CFRelease(errorString);
|
|
if (_rv == NULL) {
|
|
PyErr_SetString(PyExc_RuntimeError, "Parse error in XML data");
|
|
return NULL;
|
|
}
|
|
_res = Py_BuildValue("O&",
|
|
CFTypeRefObj_New, _rv);
|
|
return _res;
|
|
|
|
}
|
|
|
|
static PyObject *CFTypeRefObj_toPython(CFTypeRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
|
|
_res = PyCF_CF2Python(_self->ob_itself);
|
|
return _res;
|
|
|
|
}
|
|
|
|
static PyMethodDef CFTypeRefObj_methods[] = {
|
|
{"CFGetTypeID", (PyCFunction)CFTypeRefObj_CFGetTypeID, 1,
|
|
PyDoc_STR("() -> (CFTypeID _rv)")},
|
|
{"CFRetain", (PyCFunction)CFTypeRefObj_CFRetain, 1,
|
|
PyDoc_STR("() -> (CFTypeRef _rv)")},
|
|
{"CFRelease", (PyCFunction)CFTypeRefObj_CFRelease, 1,
|
|
PyDoc_STR("() -> None")},
|
|
{"CFGetRetainCount", (PyCFunction)CFTypeRefObj_CFGetRetainCount, 1,
|
|
PyDoc_STR("() -> (CFIndex _rv)")},
|
|
{"CFEqual", (PyCFunction)CFTypeRefObj_CFEqual, 1,
|
|
PyDoc_STR("(CFTypeRef cf2) -> (Boolean _rv)")},
|
|
{"CFHash", (PyCFunction)CFTypeRefObj_CFHash, 1,
|
|
PyDoc_STR("() -> (CFHashCode _rv)")},
|
|
{"CFCopyDescription", (PyCFunction)CFTypeRefObj_CFCopyDescription, 1,
|
|
PyDoc_STR("() -> (CFStringRef _rv)")},
|
|
{"CFPropertyListCreateXMLData", (PyCFunction)CFTypeRefObj_CFPropertyListCreateXMLData, 1,
|
|
PyDoc_STR("() -> (CFDataRef _rv)")},
|
|
{"CFPropertyListCreateDeepCopy", (PyCFunction)CFTypeRefObj_CFPropertyListCreateDeepCopy, 1,
|
|
PyDoc_STR("(CFOptionFlags mutabilityOption) -> (CFTypeRef _rv)")},
|
|
{"CFShow", (PyCFunction)CFTypeRefObj_CFShow, 1,
|
|
PyDoc_STR("() -> None")},
|
|
{"CFPropertyListCreateFromXMLData", (PyCFunction)CFTypeRefObj_CFPropertyListCreateFromXMLData, 1,
|
|
PyDoc_STR("(CFOptionFlags mutabilityOption) -> (CFTypeRefObj)")},
|
|
{"toPython", (PyCFunction)CFTypeRefObj_toPython, 1,
|
|
PyDoc_STR("() -> (python_object)")},
|
|
{NULL, NULL, 0}
|
|
};
|
|
|
|
#define CFTypeRefObj_getsetlist NULL
|
|
|
|
|
|
static int CFTypeRefObj_compare(CFTypeRefObject *self, CFTypeRefObject *other)
|
|
{
|
|
/* XXXX Or should we use CFEqual?? */
|
|
if ( self->ob_itself > other->ob_itself ) return 1;
|
|
if ( self->ob_itself < other->ob_itself ) return -1;
|
|
return 0;
|
|
}
|
|
|
|
static PyObject * CFTypeRefObj_repr(CFTypeRefObject *self)
|
|
{
|
|
char buf[100];
|
|
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);
|
|
return PyUnicode_FromString(buf);
|
|
}
|
|
|
|
static int CFTypeRefObj_hash(CFTypeRefObject *self)
|
|
{
|
|
/* XXXX Or should we use CFHash?? */
|
|
return (int)self->ob_itself;
|
|
}
|
|
static int CFTypeRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds)
|
|
{
|
|
CFTypeRef itself;
|
|
char *kw[] = {"itself", 0};
|
|
|
|
if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself))
|
|
{
|
|
((CFTypeRefObject *)_self)->ob_itself = itself;
|
|
return 0;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
#define CFTypeRefObj_tp_alloc PyType_GenericAlloc
|
|
|
|
static PyObject *CFTypeRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)
|
|
{
|
|
PyObject *self;
|
|
if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;
|
|
((CFTypeRefObject *)self)->ob_itself = NULL;
|
|
((CFTypeRefObject *)self)->ob_freeit = CFRelease;
|
|
return self;
|
|
}
|
|
|
|
#define CFTypeRefObj_tp_free PyObject_Del
|
|
|
|
|
|
PyTypeObject CFTypeRef_Type = {
|
|
PyVarObject_HEAD_INIT(NULL, 0)
|
|
"_CF.CFTypeRef", /*tp_name*/
|
|
sizeof(CFTypeRefObject), /*tp_basicsize*/
|
|
0, /*tp_itemsize*/
|
|
/* methods */
|
|
(destructor) CFTypeRefObj_dealloc, /*tp_dealloc*/
|
|
0, /*tp_print*/
|
|
(getattrfunc)0, /*tp_getattr*/
|
|
(setattrfunc)0, /*tp_setattr*/
|
|
(cmpfunc) CFTypeRefObj_compare, /*tp_compare*/
|
|
(reprfunc) CFTypeRefObj_repr, /*tp_repr*/
|
|
(PyNumberMethods *)0, /* tp_as_number */
|
|
(PySequenceMethods *)0, /* tp_as_sequence */
|
|
(PyMappingMethods *)0, /* tp_as_mapping */
|
|
(hashfunc) CFTypeRefObj_hash, /*tp_hash*/
|
|
0, /*tp_call*/
|
|
0, /*tp_str*/
|
|
PyObject_GenericGetAttr, /*tp_getattro*/
|
|
PyObject_GenericSetAttr, /*tp_setattro */
|
|
0, /*tp_as_buffer*/
|
|
Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */
|
|
0, /*tp_doc*/
|
|
0, /*tp_traverse*/
|
|
0, /*tp_clear*/
|
|
0, /*tp_richcompare*/
|
|
0, /*tp_weaklistoffset*/
|
|
0, /*tp_iter*/
|
|
0, /*tp_iternext*/
|
|
CFTypeRefObj_methods, /* tp_methods */
|
|
0, /*tp_members*/
|
|
CFTypeRefObj_getsetlist, /*tp_getset*/
|
|
0, /*tp_base*/
|
|
0, /*tp_dict*/
|
|
0, /*tp_descr_get*/
|
|
0, /*tp_descr_set*/
|
|
0, /*tp_dictoffset*/
|
|
CFTypeRefObj_tp_init, /* tp_init */
|
|
CFTypeRefObj_tp_alloc, /* tp_alloc */
|
|
CFTypeRefObj_tp_new, /* tp_new */
|
|
CFTypeRefObj_tp_free, /* tp_free */
|
|
};
|
|
|
|
/* ------------------- End object type CFTypeRef -------------------- */
|
|
|
|
|
|
/* --------------------- Object type CFArrayRef --------------------- */
|
|
|
|
PyTypeObject CFArrayRef_Type;
|
|
|
|
#define CFArrayRefObj_Check(x) (Py_Type(x) == &CFArrayRef_Type || PyObject_TypeCheck((x), &CFArrayRef_Type))
|
|
|
|
typedef struct CFArrayRefObject {
|
|
PyObject_HEAD
|
|
CFArrayRef ob_itself;
|
|
void (*ob_freeit)(CFTypeRef ptr);
|
|
} CFArrayRefObject;
|
|
|
|
PyObject *CFArrayRefObj_New(CFArrayRef itself)
|
|
{
|
|
CFArrayRefObject *it;
|
|
if (itself == NULL)
|
|
{
|
|
PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");
|
|
return NULL;
|
|
}
|
|
it = PyObject_NEW(CFArrayRefObject, &CFArrayRef_Type);
|
|
if (it == NULL) return NULL;
|
|
/* XXXX Should we tp_init or tp_new our basetype? */
|
|
it->ob_itself = itself;
|
|
it->ob_freeit = CFRelease;
|
|
return (PyObject *)it;
|
|
}
|
|
|
|
int CFArrayRefObj_Convert(PyObject *v, CFArrayRef *p_itself)
|
|
{
|
|
|
|
if (v == Py_None) { *p_itself = NULL; return 1; }
|
|
/* Check for other CF objects here */
|
|
|
|
if (!CFArrayRefObj_Check(v))
|
|
{
|
|
PyErr_SetString(PyExc_TypeError, "CFArrayRef required");
|
|
return 0;
|
|
}
|
|
*p_itself = ((CFArrayRefObject *)v)->ob_itself;
|
|
return 1;
|
|
}
|
|
|
|
static void CFArrayRefObj_dealloc(CFArrayRefObject *self)
|
|
{
|
|
if (self->ob_freeit && self->ob_itself)
|
|
{
|
|
self->ob_freeit((CFTypeRef)self->ob_itself);
|
|
self->ob_itself = NULL;
|
|
}
|
|
CFTypeRef_Type.tp_dealloc((PyObject *)self);
|
|
}
|
|
|
|
static PyObject *CFArrayRefObj_CFArrayCreateCopy(CFArrayRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFArrayRef _rv;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFArrayCreateCopy((CFAllocatorRef)NULL,
|
|
_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
CFArrayRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFArrayRefObj_CFArrayGetCount(CFArrayRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFIndex _rv;
|
|
#ifndef CFArrayGetCount
|
|
PyMac_PRECHECK(CFArrayGetCount);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFArrayGetCount(_self->ob_itself);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFArrayRefObj_CFStringCreateByCombiningStrings(CFArrayRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
CFStringRef separatorString;
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
CFStringRefObj_Convert, &separatorString))
|
|
return NULL;
|
|
_rv = CFStringCreateByCombiningStrings((CFAllocatorRef)NULL,
|
|
_self->ob_itself,
|
|
separatorString);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyMethodDef CFArrayRefObj_methods[] = {
|
|
{"CFArrayCreateCopy", (PyCFunction)CFArrayRefObj_CFArrayCreateCopy, 1,
|
|
PyDoc_STR("() -> (CFArrayRef _rv)")},
|
|
{"CFArrayGetCount", (PyCFunction)CFArrayRefObj_CFArrayGetCount, 1,
|
|
PyDoc_STR("() -> (CFIndex _rv)")},
|
|
{"CFStringCreateByCombiningStrings", (PyCFunction)CFArrayRefObj_CFStringCreateByCombiningStrings, 1,
|
|
PyDoc_STR("(CFStringRef separatorString) -> (CFStringRef _rv)")},
|
|
{NULL, NULL, 0}
|
|
};
|
|
|
|
#define CFArrayRefObj_getsetlist NULL
|
|
|
|
|
|
static int CFArrayRefObj_compare(CFArrayRefObject *self, CFArrayRefObject *other)
|
|
{
|
|
/* XXXX Or should we use CFEqual?? */
|
|
if ( self->ob_itself > other->ob_itself ) return 1;
|
|
if ( self->ob_itself < other->ob_itself ) return -1;
|
|
return 0;
|
|
}
|
|
|
|
static PyObject * CFArrayRefObj_repr(CFArrayRefObject *self)
|
|
{
|
|
char buf[100];
|
|
sprintf(buf, "<CFArrayRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself);
|
|
return PyUnicode_FromString(buf);
|
|
}
|
|
|
|
static int CFArrayRefObj_hash(CFArrayRefObject *self)
|
|
{
|
|
/* XXXX Or should we use CFHash?? */
|
|
return (int)self->ob_itself;
|
|
}
|
|
static int CFArrayRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds)
|
|
{
|
|
CFArrayRef itself;
|
|
char *kw[] = {"itself", 0};
|
|
|
|
if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFArrayRefObj_Convert, &itself))
|
|
{
|
|
((CFArrayRefObject *)_self)->ob_itself = itself;
|
|
return 0;
|
|
}
|
|
|
|
/* Any CFTypeRef descendent is allowed as initializer too */
|
|
if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself))
|
|
{
|
|
((CFArrayRefObject *)_self)->ob_itself = itself;
|
|
return 0;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
#define CFArrayRefObj_tp_alloc PyType_GenericAlloc
|
|
|
|
static PyObject *CFArrayRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)
|
|
{
|
|
PyObject *self;
|
|
if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;
|
|
((CFArrayRefObject *)self)->ob_itself = NULL;
|
|
((CFArrayRefObject *)self)->ob_freeit = CFRelease;
|
|
return self;
|
|
}
|
|
|
|
#define CFArrayRefObj_tp_free PyObject_Del
|
|
|
|
|
|
PyTypeObject CFArrayRef_Type = {
|
|
PyVarObject_HEAD_INIT(NULL, 0)
|
|
"_CF.CFArrayRef", /*tp_name*/
|
|
sizeof(CFArrayRefObject), /*tp_basicsize*/
|
|
0, /*tp_itemsize*/
|
|
/* methods */
|
|
(destructor) CFArrayRefObj_dealloc, /*tp_dealloc*/
|
|
0, /*tp_print*/
|
|
(getattrfunc)0, /*tp_getattr*/
|
|
(setattrfunc)0, /*tp_setattr*/
|
|
(cmpfunc) CFArrayRefObj_compare, /*tp_compare*/
|
|
(reprfunc) CFArrayRefObj_repr, /*tp_repr*/
|
|
(PyNumberMethods *)0, /* tp_as_number */
|
|
(PySequenceMethods *)0, /* tp_as_sequence */
|
|
(PyMappingMethods *)0, /* tp_as_mapping */
|
|
(hashfunc) CFArrayRefObj_hash, /*tp_hash*/
|
|
0, /*tp_call*/
|
|
0, /*tp_str*/
|
|
PyObject_GenericGetAttr, /*tp_getattro*/
|
|
PyObject_GenericSetAttr, /*tp_setattro */
|
|
0, /*tp_as_buffer*/
|
|
Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */
|
|
0, /*tp_doc*/
|
|
0, /*tp_traverse*/
|
|
0, /*tp_clear*/
|
|
0, /*tp_richcompare*/
|
|
0, /*tp_weaklistoffset*/
|
|
0, /*tp_iter*/
|
|
0, /*tp_iternext*/
|
|
CFArrayRefObj_methods, /* tp_methods */
|
|
0, /*tp_members*/
|
|
CFArrayRefObj_getsetlist, /*tp_getset*/
|
|
0, /*tp_base*/
|
|
0, /*tp_dict*/
|
|
0, /*tp_descr_get*/
|
|
0, /*tp_descr_set*/
|
|
0, /*tp_dictoffset*/
|
|
CFArrayRefObj_tp_init, /* tp_init */
|
|
CFArrayRefObj_tp_alloc, /* tp_alloc */
|
|
CFArrayRefObj_tp_new, /* tp_new */
|
|
CFArrayRefObj_tp_free, /* tp_free */
|
|
};
|
|
|
|
/* ------------------- End object type CFArrayRef ------------------- */
|
|
|
|
|
|
/* ----------------- Object type CFMutableArrayRef ------------------ */
|
|
|
|
PyTypeObject CFMutableArrayRef_Type;
|
|
|
|
#define CFMutableArrayRefObj_Check(x) (Py_Type(x) == &CFMutableArrayRef_Type || PyObject_TypeCheck((x), &CFMutableArrayRef_Type))
|
|
|
|
typedef struct CFMutableArrayRefObject {
|
|
PyObject_HEAD
|
|
CFMutableArrayRef ob_itself;
|
|
void (*ob_freeit)(CFTypeRef ptr);
|
|
} CFMutableArrayRefObject;
|
|
|
|
PyObject *CFMutableArrayRefObj_New(CFMutableArrayRef itself)
|
|
{
|
|
CFMutableArrayRefObject *it;
|
|
if (itself == NULL)
|
|
{
|
|
PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");
|
|
return NULL;
|
|
}
|
|
it = PyObject_NEW(CFMutableArrayRefObject, &CFMutableArrayRef_Type);
|
|
if (it == NULL) return NULL;
|
|
/* XXXX Should we tp_init or tp_new our basetype? */
|
|
it->ob_itself = itself;
|
|
it->ob_freeit = CFRelease;
|
|
return (PyObject *)it;
|
|
}
|
|
|
|
int CFMutableArrayRefObj_Convert(PyObject *v, CFMutableArrayRef *p_itself)
|
|
{
|
|
|
|
if (v == Py_None) { *p_itself = NULL; return 1; }
|
|
/* Check for other CF objects here */
|
|
|
|
if (!CFMutableArrayRefObj_Check(v))
|
|
{
|
|
PyErr_SetString(PyExc_TypeError, "CFMutableArrayRef required");
|
|
return 0;
|
|
}
|
|
*p_itself = ((CFMutableArrayRefObject *)v)->ob_itself;
|
|
return 1;
|
|
}
|
|
|
|
static void CFMutableArrayRefObj_dealloc(CFMutableArrayRefObject *self)
|
|
{
|
|
if (self->ob_freeit && self->ob_itself)
|
|
{
|
|
self->ob_freeit((CFTypeRef)self->ob_itself);
|
|
self->ob_itself = NULL;
|
|
}
|
|
CFArrayRef_Type.tp_dealloc((PyObject *)self);
|
|
}
|
|
|
|
static PyObject *CFMutableArrayRefObj_CFArrayRemoveValueAtIndex(CFMutableArrayRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFIndex idx;
|
|
#ifndef CFArrayRemoveValueAtIndex
|
|
PyMac_PRECHECK(CFArrayRemoveValueAtIndex);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "l",
|
|
&idx))
|
|
return NULL;
|
|
CFArrayRemoveValueAtIndex(_self->ob_itself,
|
|
idx);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFMutableArrayRefObj_CFArrayRemoveAllValues(CFMutableArrayRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
#ifndef CFArrayRemoveAllValues
|
|
PyMac_PRECHECK(CFArrayRemoveAllValues);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
CFArrayRemoveAllValues(_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFMutableArrayRefObj_CFArrayExchangeValuesAtIndices(CFMutableArrayRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFIndex idx1;
|
|
CFIndex idx2;
|
|
#ifndef CFArrayExchangeValuesAtIndices
|
|
PyMac_PRECHECK(CFArrayExchangeValuesAtIndices);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "ll",
|
|
&idx1,
|
|
&idx2))
|
|
return NULL;
|
|
CFArrayExchangeValuesAtIndices(_self->ob_itself,
|
|
idx1,
|
|
idx2);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFMutableArrayRefObj_CFArrayAppendArray(CFMutableArrayRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFArrayRef otherArray;
|
|
CFRange otherRange;
|
|
#ifndef CFArrayAppendArray
|
|
PyMac_PRECHECK(CFArrayAppendArray);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&O&",
|
|
CFArrayRefObj_Convert, &otherArray,
|
|
CFRange_Convert, &otherRange))
|
|
return NULL;
|
|
CFArrayAppendArray(_self->ob_itself,
|
|
otherArray,
|
|
otherRange);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyMethodDef CFMutableArrayRefObj_methods[] = {
|
|
{"CFArrayRemoveValueAtIndex", (PyCFunction)CFMutableArrayRefObj_CFArrayRemoveValueAtIndex, 1,
|
|
PyDoc_STR("(CFIndex idx) -> None")},
|
|
{"CFArrayRemoveAllValues", (PyCFunction)CFMutableArrayRefObj_CFArrayRemoveAllValues, 1,
|
|
PyDoc_STR("() -> None")},
|
|
{"CFArrayExchangeValuesAtIndices", (PyCFunction)CFMutableArrayRefObj_CFArrayExchangeValuesAtIndices, 1,
|
|
PyDoc_STR("(CFIndex idx1, CFIndex idx2) -> None")},
|
|
{"CFArrayAppendArray", (PyCFunction)CFMutableArrayRefObj_CFArrayAppendArray, 1,
|
|
PyDoc_STR("(CFArrayRef otherArray, CFRange otherRange) -> None")},
|
|
{NULL, NULL, 0}
|
|
};
|
|
|
|
#define CFMutableArrayRefObj_getsetlist NULL
|
|
|
|
|
|
static int CFMutableArrayRefObj_compare(CFMutableArrayRefObject *self, CFMutableArrayRefObject *other)
|
|
{
|
|
/* XXXX Or should we use CFEqual?? */
|
|
if ( self->ob_itself > other->ob_itself ) return 1;
|
|
if ( self->ob_itself < other->ob_itself ) return -1;
|
|
return 0;
|
|
}
|
|
|
|
static PyObject * CFMutableArrayRefObj_repr(CFMutableArrayRefObject *self)
|
|
{
|
|
char buf[100];
|
|
sprintf(buf, "<CFMutableArrayRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself);
|
|
return PyUnicode_FromString(buf);
|
|
}
|
|
|
|
static int CFMutableArrayRefObj_hash(CFMutableArrayRefObject *self)
|
|
{
|
|
/* XXXX Or should we use CFHash?? */
|
|
return (int)self->ob_itself;
|
|
}
|
|
static int CFMutableArrayRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds)
|
|
{
|
|
CFMutableArrayRef itself;
|
|
char *kw[] = {"itself", 0};
|
|
|
|
if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFMutableArrayRefObj_Convert, &itself))
|
|
{
|
|
((CFMutableArrayRefObject *)_self)->ob_itself = itself;
|
|
return 0;
|
|
}
|
|
|
|
/* Any CFTypeRef descendent is allowed as initializer too */
|
|
if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself))
|
|
{
|
|
((CFMutableArrayRefObject *)_self)->ob_itself = itself;
|
|
return 0;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
#define CFMutableArrayRefObj_tp_alloc PyType_GenericAlloc
|
|
|
|
static PyObject *CFMutableArrayRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)
|
|
{
|
|
PyObject *self;
|
|
if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;
|
|
((CFMutableArrayRefObject *)self)->ob_itself = NULL;
|
|
((CFMutableArrayRefObject *)self)->ob_freeit = CFRelease;
|
|
return self;
|
|
}
|
|
|
|
#define CFMutableArrayRefObj_tp_free PyObject_Del
|
|
|
|
|
|
PyTypeObject CFMutableArrayRef_Type = {
|
|
PyVarObject_HEAD_INIT(NULL, 0)
|
|
"_CF.CFMutableArrayRef", /*tp_name*/
|
|
sizeof(CFMutableArrayRefObject), /*tp_basicsize*/
|
|
0, /*tp_itemsize*/
|
|
/* methods */
|
|
(destructor) CFMutableArrayRefObj_dealloc, /*tp_dealloc*/
|
|
0, /*tp_print*/
|
|
(getattrfunc)0, /*tp_getattr*/
|
|
(setattrfunc)0, /*tp_setattr*/
|
|
(cmpfunc) CFMutableArrayRefObj_compare, /*tp_compare*/
|
|
(reprfunc) CFMutableArrayRefObj_repr, /*tp_repr*/
|
|
(PyNumberMethods *)0, /* tp_as_number */
|
|
(PySequenceMethods *)0, /* tp_as_sequence */
|
|
(PyMappingMethods *)0, /* tp_as_mapping */
|
|
(hashfunc) CFMutableArrayRefObj_hash, /*tp_hash*/
|
|
0, /*tp_call*/
|
|
0, /*tp_str*/
|
|
PyObject_GenericGetAttr, /*tp_getattro*/
|
|
PyObject_GenericSetAttr, /*tp_setattro */
|
|
0, /*tp_as_buffer*/
|
|
Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */
|
|
0, /*tp_doc*/
|
|
0, /*tp_traverse*/
|
|
0, /*tp_clear*/
|
|
0, /*tp_richcompare*/
|
|
0, /*tp_weaklistoffset*/
|
|
0, /*tp_iter*/
|
|
0, /*tp_iternext*/
|
|
CFMutableArrayRefObj_methods, /* tp_methods */
|
|
0, /*tp_members*/
|
|
CFMutableArrayRefObj_getsetlist, /*tp_getset*/
|
|
0, /*tp_base*/
|
|
0, /*tp_dict*/
|
|
0, /*tp_descr_get*/
|
|
0, /*tp_descr_set*/
|
|
0, /*tp_dictoffset*/
|
|
CFMutableArrayRefObj_tp_init, /* tp_init */
|
|
CFMutableArrayRefObj_tp_alloc, /* tp_alloc */
|
|
CFMutableArrayRefObj_tp_new, /* tp_new */
|
|
CFMutableArrayRefObj_tp_free, /* tp_free */
|
|
};
|
|
|
|
/* --------------- End object type CFMutableArrayRef ---------------- */
|
|
|
|
|
|
/* ------------------ Object type CFDictionaryRef ------------------- */
|
|
|
|
PyTypeObject CFDictionaryRef_Type;
|
|
|
|
#define CFDictionaryRefObj_Check(x) (Py_Type(x) == &CFDictionaryRef_Type || PyObject_TypeCheck((x), &CFDictionaryRef_Type))
|
|
|
|
typedef struct CFDictionaryRefObject {
|
|
PyObject_HEAD
|
|
CFDictionaryRef ob_itself;
|
|
void (*ob_freeit)(CFTypeRef ptr);
|
|
} CFDictionaryRefObject;
|
|
|
|
PyObject *CFDictionaryRefObj_New(CFDictionaryRef itself)
|
|
{
|
|
CFDictionaryRefObject *it;
|
|
if (itself == NULL)
|
|
{
|
|
PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");
|
|
return NULL;
|
|
}
|
|
it = PyObject_NEW(CFDictionaryRefObject, &CFDictionaryRef_Type);
|
|
if (it == NULL) return NULL;
|
|
/* XXXX Should we tp_init or tp_new our basetype? */
|
|
it->ob_itself = itself;
|
|
it->ob_freeit = CFRelease;
|
|
return (PyObject *)it;
|
|
}
|
|
|
|
int CFDictionaryRefObj_Convert(PyObject *v, CFDictionaryRef *p_itself)
|
|
{
|
|
|
|
if (v == Py_None) { *p_itself = NULL; return 1; }
|
|
/* Check for other CF objects here */
|
|
|
|
if (!CFDictionaryRefObj_Check(v))
|
|
{
|
|
PyErr_SetString(PyExc_TypeError, "CFDictionaryRef required");
|
|
return 0;
|
|
}
|
|
*p_itself = ((CFDictionaryRefObject *)v)->ob_itself;
|
|
return 1;
|
|
}
|
|
|
|
static void CFDictionaryRefObj_dealloc(CFDictionaryRefObject *self)
|
|
{
|
|
if (self->ob_freeit && self->ob_itself)
|
|
{
|
|
self->ob_freeit((CFTypeRef)self->ob_itself);
|
|
self->ob_itself = NULL;
|
|
}
|
|
CFTypeRef_Type.tp_dealloc((PyObject *)self);
|
|
}
|
|
|
|
static PyObject *CFDictionaryRefObj_CFDictionaryCreateCopy(CFDictionaryRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFDictionaryRef _rv;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFDictionaryCreateCopy((CFAllocatorRef)NULL,
|
|
_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
CFDictionaryRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFDictionaryRefObj_CFDictionaryGetCount(CFDictionaryRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFIndex _rv;
|
|
#ifndef CFDictionaryGetCount
|
|
PyMac_PRECHECK(CFDictionaryGetCount);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFDictionaryGetCount(_self->ob_itself);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyMethodDef CFDictionaryRefObj_methods[] = {
|
|
{"CFDictionaryCreateCopy", (PyCFunction)CFDictionaryRefObj_CFDictionaryCreateCopy, 1,
|
|
PyDoc_STR("() -> (CFDictionaryRef _rv)")},
|
|
{"CFDictionaryGetCount", (PyCFunction)CFDictionaryRefObj_CFDictionaryGetCount, 1,
|
|
PyDoc_STR("() -> (CFIndex _rv)")},
|
|
{NULL, NULL, 0}
|
|
};
|
|
|
|
#define CFDictionaryRefObj_getsetlist NULL
|
|
|
|
|
|
static int CFDictionaryRefObj_compare(CFDictionaryRefObject *self, CFDictionaryRefObject *other)
|
|
{
|
|
/* XXXX Or should we use CFEqual?? */
|
|
if ( self->ob_itself > other->ob_itself ) return 1;
|
|
if ( self->ob_itself < other->ob_itself ) return -1;
|
|
return 0;
|
|
}
|
|
|
|
static PyObject * CFDictionaryRefObj_repr(CFDictionaryRefObject *self)
|
|
{
|
|
char buf[100];
|
|
sprintf(buf, "<CFDictionaryRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself);
|
|
return PyUnicode_FromString(buf);
|
|
}
|
|
|
|
static int CFDictionaryRefObj_hash(CFDictionaryRefObject *self)
|
|
{
|
|
/* XXXX Or should we use CFHash?? */
|
|
return (int)self->ob_itself;
|
|
}
|
|
static int CFDictionaryRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds)
|
|
{
|
|
CFDictionaryRef itself;
|
|
char *kw[] = {"itself", 0};
|
|
|
|
if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFDictionaryRefObj_Convert, &itself))
|
|
{
|
|
((CFDictionaryRefObject *)_self)->ob_itself = itself;
|
|
return 0;
|
|
}
|
|
|
|
/* Any CFTypeRef descendent is allowed as initializer too */
|
|
if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself))
|
|
{
|
|
((CFDictionaryRefObject *)_self)->ob_itself = itself;
|
|
return 0;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
#define CFDictionaryRefObj_tp_alloc PyType_GenericAlloc
|
|
|
|
static PyObject *CFDictionaryRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)
|
|
{
|
|
PyObject *self;
|
|
if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;
|
|
((CFDictionaryRefObject *)self)->ob_itself = NULL;
|
|
((CFDictionaryRefObject *)self)->ob_freeit = CFRelease;
|
|
return self;
|
|
}
|
|
|
|
#define CFDictionaryRefObj_tp_free PyObject_Del
|
|
|
|
|
|
PyTypeObject CFDictionaryRef_Type = {
|
|
PyVarObject_HEAD_INIT(NULL, 0)
|
|
"_CF.CFDictionaryRef", /*tp_name*/
|
|
sizeof(CFDictionaryRefObject), /*tp_basicsize*/
|
|
0, /*tp_itemsize*/
|
|
/* methods */
|
|
(destructor) CFDictionaryRefObj_dealloc, /*tp_dealloc*/
|
|
0, /*tp_print*/
|
|
(getattrfunc)0, /*tp_getattr*/
|
|
(setattrfunc)0, /*tp_setattr*/
|
|
(cmpfunc) CFDictionaryRefObj_compare, /*tp_compare*/
|
|
(reprfunc) CFDictionaryRefObj_repr, /*tp_repr*/
|
|
(PyNumberMethods *)0, /* tp_as_number */
|
|
(PySequenceMethods *)0, /* tp_as_sequence */
|
|
(PyMappingMethods *)0, /* tp_as_mapping */
|
|
(hashfunc) CFDictionaryRefObj_hash, /*tp_hash*/
|
|
0, /*tp_call*/
|
|
0, /*tp_str*/
|
|
PyObject_GenericGetAttr, /*tp_getattro*/
|
|
PyObject_GenericSetAttr, /*tp_setattro */
|
|
0, /*tp_as_buffer*/
|
|
Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */
|
|
0, /*tp_doc*/
|
|
0, /*tp_traverse*/
|
|
0, /*tp_clear*/
|
|
0, /*tp_richcompare*/
|
|
0, /*tp_weaklistoffset*/
|
|
0, /*tp_iter*/
|
|
0, /*tp_iternext*/
|
|
CFDictionaryRefObj_methods, /* tp_methods */
|
|
0, /*tp_members*/
|
|
CFDictionaryRefObj_getsetlist, /*tp_getset*/
|
|
0, /*tp_base*/
|
|
0, /*tp_dict*/
|
|
0, /*tp_descr_get*/
|
|
0, /*tp_descr_set*/
|
|
0, /*tp_dictoffset*/
|
|
CFDictionaryRefObj_tp_init, /* tp_init */
|
|
CFDictionaryRefObj_tp_alloc, /* tp_alloc */
|
|
CFDictionaryRefObj_tp_new, /* tp_new */
|
|
CFDictionaryRefObj_tp_free, /* tp_free */
|
|
};
|
|
|
|
/* ---------------- End object type CFDictionaryRef ----------------- */
|
|
|
|
|
|
/* --------------- Object type CFMutableDictionaryRef --------------- */
|
|
|
|
PyTypeObject CFMutableDictionaryRef_Type;
|
|
|
|
#define CFMutableDictionaryRefObj_Check(x) (Py_Type(x) == &CFMutableDictionaryRef_Type || PyObject_TypeCheck((x), &CFMutableDictionaryRef_Type))
|
|
|
|
typedef struct CFMutableDictionaryRefObject {
|
|
PyObject_HEAD
|
|
CFMutableDictionaryRef ob_itself;
|
|
void (*ob_freeit)(CFTypeRef ptr);
|
|
} CFMutableDictionaryRefObject;
|
|
|
|
PyObject *CFMutableDictionaryRefObj_New(CFMutableDictionaryRef itself)
|
|
{
|
|
CFMutableDictionaryRefObject *it;
|
|
if (itself == NULL)
|
|
{
|
|
PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");
|
|
return NULL;
|
|
}
|
|
it = PyObject_NEW(CFMutableDictionaryRefObject, &CFMutableDictionaryRef_Type);
|
|
if (it == NULL) return NULL;
|
|
/* XXXX Should we tp_init or tp_new our basetype? */
|
|
it->ob_itself = itself;
|
|
it->ob_freeit = CFRelease;
|
|
return (PyObject *)it;
|
|
}
|
|
|
|
int CFMutableDictionaryRefObj_Convert(PyObject *v, CFMutableDictionaryRef *p_itself)
|
|
{
|
|
|
|
if (v == Py_None) { *p_itself = NULL; return 1; }
|
|
/* Check for other CF objects here */
|
|
|
|
if (!CFMutableDictionaryRefObj_Check(v))
|
|
{
|
|
PyErr_SetString(PyExc_TypeError, "CFMutableDictionaryRef required");
|
|
return 0;
|
|
}
|
|
*p_itself = ((CFMutableDictionaryRefObject *)v)->ob_itself;
|
|
return 1;
|
|
}
|
|
|
|
static void CFMutableDictionaryRefObj_dealloc(CFMutableDictionaryRefObject *self)
|
|
{
|
|
if (self->ob_freeit && self->ob_itself)
|
|
{
|
|
self->ob_freeit((CFTypeRef)self->ob_itself);
|
|
self->ob_itself = NULL;
|
|
}
|
|
CFDictionaryRef_Type.tp_dealloc((PyObject *)self);
|
|
}
|
|
|
|
static PyObject *CFMutableDictionaryRefObj_CFDictionaryRemoveAllValues(CFMutableDictionaryRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
#ifndef CFDictionaryRemoveAllValues
|
|
PyMac_PRECHECK(CFDictionaryRemoveAllValues);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
CFDictionaryRemoveAllValues(_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyMethodDef CFMutableDictionaryRefObj_methods[] = {
|
|
{"CFDictionaryRemoveAllValues", (PyCFunction)CFMutableDictionaryRefObj_CFDictionaryRemoveAllValues, 1,
|
|
PyDoc_STR("() -> None")},
|
|
{NULL, NULL, 0}
|
|
};
|
|
|
|
#define CFMutableDictionaryRefObj_getsetlist NULL
|
|
|
|
|
|
static int CFMutableDictionaryRefObj_compare(CFMutableDictionaryRefObject *self, CFMutableDictionaryRefObject *other)
|
|
{
|
|
/* XXXX Or should we use CFEqual?? */
|
|
if ( self->ob_itself > other->ob_itself ) return 1;
|
|
if ( self->ob_itself < other->ob_itself ) return -1;
|
|
return 0;
|
|
}
|
|
|
|
static PyObject * CFMutableDictionaryRefObj_repr(CFMutableDictionaryRefObject *self)
|
|
{
|
|
char buf[100];
|
|
sprintf(buf, "<CFMutableDictionaryRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself);
|
|
return PyUnicode_FromString(buf);
|
|
}
|
|
|
|
static int CFMutableDictionaryRefObj_hash(CFMutableDictionaryRefObject *self)
|
|
{
|
|
/* XXXX Or should we use CFHash?? */
|
|
return (int)self->ob_itself;
|
|
}
|
|
static int CFMutableDictionaryRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds)
|
|
{
|
|
CFMutableDictionaryRef itself;
|
|
char *kw[] = {"itself", 0};
|
|
|
|
if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFMutableDictionaryRefObj_Convert, &itself))
|
|
{
|
|
((CFMutableDictionaryRefObject *)_self)->ob_itself = itself;
|
|
return 0;
|
|
}
|
|
|
|
/* Any CFTypeRef descendent is allowed as initializer too */
|
|
if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself))
|
|
{
|
|
((CFMutableDictionaryRefObject *)_self)->ob_itself = itself;
|
|
return 0;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
#define CFMutableDictionaryRefObj_tp_alloc PyType_GenericAlloc
|
|
|
|
static PyObject *CFMutableDictionaryRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)
|
|
{
|
|
PyObject *self;
|
|
if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;
|
|
((CFMutableDictionaryRefObject *)self)->ob_itself = NULL;
|
|
((CFMutableDictionaryRefObject *)self)->ob_freeit = CFRelease;
|
|
return self;
|
|
}
|
|
|
|
#define CFMutableDictionaryRefObj_tp_free PyObject_Del
|
|
|
|
|
|
PyTypeObject CFMutableDictionaryRef_Type = {
|
|
PyVarObject_HEAD_INIT(NULL, 0)
|
|
"_CF.CFMutableDictionaryRef", /*tp_name*/
|
|
sizeof(CFMutableDictionaryRefObject), /*tp_basicsize*/
|
|
0, /*tp_itemsize*/
|
|
/* methods */
|
|
(destructor) CFMutableDictionaryRefObj_dealloc, /*tp_dealloc*/
|
|
0, /*tp_print*/
|
|
(getattrfunc)0, /*tp_getattr*/
|
|
(setattrfunc)0, /*tp_setattr*/
|
|
(cmpfunc) CFMutableDictionaryRefObj_compare, /*tp_compare*/
|
|
(reprfunc) CFMutableDictionaryRefObj_repr, /*tp_repr*/
|
|
(PyNumberMethods *)0, /* tp_as_number */
|
|
(PySequenceMethods *)0, /* tp_as_sequence */
|
|
(PyMappingMethods *)0, /* tp_as_mapping */
|
|
(hashfunc) CFMutableDictionaryRefObj_hash, /*tp_hash*/
|
|
0, /*tp_call*/
|
|
0, /*tp_str*/
|
|
PyObject_GenericGetAttr, /*tp_getattro*/
|
|
PyObject_GenericSetAttr, /*tp_setattro */
|
|
0, /*tp_as_buffer*/
|
|
Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */
|
|
0, /*tp_doc*/
|
|
0, /*tp_traverse*/
|
|
0, /*tp_clear*/
|
|
0, /*tp_richcompare*/
|
|
0, /*tp_weaklistoffset*/
|
|
0, /*tp_iter*/
|
|
0, /*tp_iternext*/
|
|
CFMutableDictionaryRefObj_methods, /* tp_methods */
|
|
0, /*tp_members*/
|
|
CFMutableDictionaryRefObj_getsetlist, /*tp_getset*/
|
|
0, /*tp_base*/
|
|
0, /*tp_dict*/
|
|
0, /*tp_descr_get*/
|
|
0, /*tp_descr_set*/
|
|
0, /*tp_dictoffset*/
|
|
CFMutableDictionaryRefObj_tp_init, /* tp_init */
|
|
CFMutableDictionaryRefObj_tp_alloc, /* tp_alloc */
|
|
CFMutableDictionaryRefObj_tp_new, /* tp_new */
|
|
CFMutableDictionaryRefObj_tp_free, /* tp_free */
|
|
};
|
|
|
|
/* ------------- End object type CFMutableDictionaryRef ------------- */
|
|
|
|
|
|
/* --------------------- Object type CFDataRef ---------------------- */
|
|
|
|
PyTypeObject CFDataRef_Type;
|
|
|
|
#define CFDataRefObj_Check(x) (Py_Type(x) == &CFDataRef_Type || PyObject_TypeCheck((x), &CFDataRef_Type))
|
|
|
|
typedef struct CFDataRefObject {
|
|
PyObject_HEAD
|
|
CFDataRef ob_itself;
|
|
void (*ob_freeit)(CFTypeRef ptr);
|
|
} CFDataRefObject;
|
|
|
|
PyObject *CFDataRefObj_New(CFDataRef itself)
|
|
{
|
|
CFDataRefObject *it;
|
|
if (itself == NULL)
|
|
{
|
|
PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");
|
|
return NULL;
|
|
}
|
|
it = PyObject_NEW(CFDataRefObject, &CFDataRef_Type);
|
|
if (it == NULL) return NULL;
|
|
/* XXXX Should we tp_init or tp_new our basetype? */
|
|
it->ob_itself = itself;
|
|
it->ob_freeit = CFRelease;
|
|
return (PyObject *)it;
|
|
}
|
|
|
|
int CFDataRefObj_Convert(PyObject *v, CFDataRef *p_itself)
|
|
{
|
|
|
|
if (v == Py_None) { *p_itself = NULL; return 1; }
|
|
if (PyString_Check(v)) {
|
|
char *cStr;
|
|
Py_ssize_t cLen;
|
|
if( PyString_AsStringAndSize(v, &cStr, &cLen) < 0 ) return 0;
|
|
*p_itself = CFDataCreate((CFAllocatorRef)NULL, (unsigned char *)cStr, cLen);
|
|
return 1;
|
|
}
|
|
|
|
if (!CFDataRefObj_Check(v))
|
|
{
|
|
PyErr_SetString(PyExc_TypeError, "CFDataRef required");
|
|
return 0;
|
|
}
|
|
*p_itself = ((CFDataRefObject *)v)->ob_itself;
|
|
return 1;
|
|
}
|
|
|
|
static void CFDataRefObj_dealloc(CFDataRefObject *self)
|
|
{
|
|
if (self->ob_freeit && self->ob_itself)
|
|
{
|
|
self->ob_freeit((CFTypeRef)self->ob_itself);
|
|
self->ob_itself = NULL;
|
|
}
|
|
CFTypeRef_Type.tp_dealloc((PyObject *)self);
|
|
}
|
|
|
|
static PyObject *CFDataRefObj_CFDataCreateCopy(CFDataRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFDataRef _rv;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFDataCreateCopy((CFAllocatorRef)NULL,
|
|
_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
CFDataRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFDataRefObj_CFDataGetLength(CFDataRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFIndex _rv;
|
|
#ifndef CFDataGetLength
|
|
PyMac_PRECHECK(CFDataGetLength);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFDataGetLength(_self->ob_itself);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFDataRefObj_CFStringCreateFromExternalRepresentation(CFDataRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
CFStringEncoding encoding;
|
|
if (!PyArg_ParseTuple(_args, "l",
|
|
&encoding))
|
|
return NULL;
|
|
_rv = CFStringCreateFromExternalRepresentation((CFAllocatorRef)NULL,
|
|
_self->ob_itself,
|
|
encoding);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFDataRefObj_CFDataGetData(CFDataRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
|
|
int size = CFDataGetLength(_self->ob_itself);
|
|
char *data = (char *)CFDataGetBytePtr(_self->ob_itself);
|
|
|
|
_res = (PyObject *)PyString_FromStringAndSize(data, size);
|
|
return _res;
|
|
|
|
}
|
|
|
|
static PyMethodDef CFDataRefObj_methods[] = {
|
|
{"CFDataCreateCopy", (PyCFunction)CFDataRefObj_CFDataCreateCopy, 1,
|
|
PyDoc_STR("() -> (CFDataRef _rv)")},
|
|
{"CFDataGetLength", (PyCFunction)CFDataRefObj_CFDataGetLength, 1,
|
|
PyDoc_STR("() -> (CFIndex _rv)")},
|
|
{"CFStringCreateFromExternalRepresentation", (PyCFunction)CFDataRefObj_CFStringCreateFromExternalRepresentation, 1,
|
|
PyDoc_STR("(CFStringEncoding encoding) -> (CFStringRef _rv)")},
|
|
{"CFDataGetData", (PyCFunction)CFDataRefObj_CFDataGetData, 1,
|
|
PyDoc_STR("() -> (string _rv)")},
|
|
{NULL, NULL, 0}
|
|
};
|
|
|
|
#define CFDataRefObj_getsetlist NULL
|
|
|
|
|
|
static int CFDataRefObj_compare(CFDataRefObject *self, CFDataRefObject *other)
|
|
{
|
|
/* XXXX Or should we use CFEqual?? */
|
|
if ( self->ob_itself > other->ob_itself ) return 1;
|
|
if ( self->ob_itself < other->ob_itself ) return -1;
|
|
return 0;
|
|
}
|
|
|
|
static PyObject * CFDataRefObj_repr(CFDataRefObject *self)
|
|
{
|
|
char buf[100];
|
|
sprintf(buf, "<CFDataRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself);
|
|
return PyUnicode_FromString(buf);
|
|
}
|
|
|
|
static int CFDataRefObj_hash(CFDataRefObject *self)
|
|
{
|
|
/* XXXX Or should we use CFHash?? */
|
|
return (int)self->ob_itself;
|
|
}
|
|
static int CFDataRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds)
|
|
{
|
|
CFDataRef itself;
|
|
char *kw[] = {"itself", 0};
|
|
|
|
if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFDataRefObj_Convert, &itself))
|
|
{
|
|
((CFDataRefObject *)_self)->ob_itself = itself;
|
|
return 0;
|
|
}
|
|
|
|
/* Any CFTypeRef descendent is allowed as initializer too */
|
|
if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself))
|
|
{
|
|
((CFDataRefObject *)_self)->ob_itself = itself;
|
|
return 0;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
#define CFDataRefObj_tp_alloc PyType_GenericAlloc
|
|
|
|
static PyObject *CFDataRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)
|
|
{
|
|
PyObject *self;
|
|
if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;
|
|
((CFDataRefObject *)self)->ob_itself = NULL;
|
|
((CFDataRefObject *)self)->ob_freeit = CFRelease;
|
|
return self;
|
|
}
|
|
|
|
#define CFDataRefObj_tp_free PyObject_Del
|
|
|
|
|
|
PyTypeObject CFDataRef_Type = {
|
|
PyVarObject_HEAD_INIT(NULL, 0)
|
|
"_CF.CFDataRef", /*tp_name*/
|
|
sizeof(CFDataRefObject), /*tp_basicsize*/
|
|
0, /*tp_itemsize*/
|
|
/* methods */
|
|
(destructor) CFDataRefObj_dealloc, /*tp_dealloc*/
|
|
0, /*tp_print*/
|
|
(getattrfunc)0, /*tp_getattr*/
|
|
(setattrfunc)0, /*tp_setattr*/
|
|
(cmpfunc) CFDataRefObj_compare, /*tp_compare*/
|
|
(reprfunc) CFDataRefObj_repr, /*tp_repr*/
|
|
(PyNumberMethods *)0, /* tp_as_number */
|
|
(PySequenceMethods *)0, /* tp_as_sequence */
|
|
(PyMappingMethods *)0, /* tp_as_mapping */
|
|
(hashfunc) CFDataRefObj_hash, /*tp_hash*/
|
|
0, /*tp_call*/
|
|
0, /*tp_str*/
|
|
PyObject_GenericGetAttr, /*tp_getattro*/
|
|
PyObject_GenericSetAttr, /*tp_setattro */
|
|
0, /*tp_as_buffer*/
|
|
Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */
|
|
0, /*tp_doc*/
|
|
0, /*tp_traverse*/
|
|
0, /*tp_clear*/
|
|
0, /*tp_richcompare*/
|
|
0, /*tp_weaklistoffset*/
|
|
0, /*tp_iter*/
|
|
0, /*tp_iternext*/
|
|
CFDataRefObj_methods, /* tp_methods */
|
|
0, /*tp_members*/
|
|
CFDataRefObj_getsetlist, /*tp_getset*/
|
|
0, /*tp_base*/
|
|
0, /*tp_dict*/
|
|
0, /*tp_descr_get*/
|
|
0, /*tp_descr_set*/
|
|
0, /*tp_dictoffset*/
|
|
CFDataRefObj_tp_init, /* tp_init */
|
|
CFDataRefObj_tp_alloc, /* tp_alloc */
|
|
CFDataRefObj_tp_new, /* tp_new */
|
|
CFDataRefObj_tp_free, /* tp_free */
|
|
};
|
|
|
|
/* ------------------- End object type CFDataRef -------------------- */
|
|
|
|
|
|
/* ------------------ Object type CFMutableDataRef ------------------ */
|
|
|
|
PyTypeObject CFMutableDataRef_Type;
|
|
|
|
#define CFMutableDataRefObj_Check(x) (Py_Type(x) == &CFMutableDataRef_Type || PyObject_TypeCheck((x), &CFMutableDataRef_Type))
|
|
|
|
typedef struct CFMutableDataRefObject {
|
|
PyObject_HEAD
|
|
CFMutableDataRef ob_itself;
|
|
void (*ob_freeit)(CFTypeRef ptr);
|
|
} CFMutableDataRefObject;
|
|
|
|
PyObject *CFMutableDataRefObj_New(CFMutableDataRef itself)
|
|
{
|
|
CFMutableDataRefObject *it;
|
|
if (itself == NULL)
|
|
{
|
|
PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");
|
|
return NULL;
|
|
}
|
|
it = PyObject_NEW(CFMutableDataRefObject, &CFMutableDataRef_Type);
|
|
if (it == NULL) return NULL;
|
|
/* XXXX Should we tp_init or tp_new our basetype? */
|
|
it->ob_itself = itself;
|
|
it->ob_freeit = CFRelease;
|
|
return (PyObject *)it;
|
|
}
|
|
|
|
int CFMutableDataRefObj_Convert(PyObject *v, CFMutableDataRef *p_itself)
|
|
{
|
|
|
|
if (v == Py_None) { *p_itself = NULL; return 1; }
|
|
/* Check for other CF objects here */
|
|
|
|
if (!CFMutableDataRefObj_Check(v))
|
|
{
|
|
PyErr_SetString(PyExc_TypeError, "CFMutableDataRef required");
|
|
return 0;
|
|
}
|
|
*p_itself = ((CFMutableDataRefObject *)v)->ob_itself;
|
|
return 1;
|
|
}
|
|
|
|
static void CFMutableDataRefObj_dealloc(CFMutableDataRefObject *self)
|
|
{
|
|
if (self->ob_freeit && self->ob_itself)
|
|
{
|
|
self->ob_freeit((CFTypeRef)self->ob_itself);
|
|
self->ob_itself = NULL;
|
|
}
|
|
CFDataRef_Type.tp_dealloc((PyObject *)self);
|
|
}
|
|
|
|
static PyObject *CFMutableDataRefObj_CFDataSetLength(CFMutableDataRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFIndex length;
|
|
#ifndef CFDataSetLength
|
|
PyMac_PRECHECK(CFDataSetLength);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "l",
|
|
&length))
|
|
return NULL;
|
|
CFDataSetLength(_self->ob_itself,
|
|
length);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFMutableDataRefObj_CFDataIncreaseLength(CFMutableDataRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFIndex extraLength;
|
|
#ifndef CFDataIncreaseLength
|
|
PyMac_PRECHECK(CFDataIncreaseLength);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "l",
|
|
&extraLength))
|
|
return NULL;
|
|
CFDataIncreaseLength(_self->ob_itself,
|
|
extraLength);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFMutableDataRefObj_CFDataAppendBytes(CFMutableDataRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
unsigned char *bytes__in__;
|
|
long bytes__len__;
|
|
int bytes__in_len__;
|
|
#ifndef CFDataAppendBytes
|
|
PyMac_PRECHECK(CFDataAppendBytes);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "s#",
|
|
&bytes__in__, &bytes__in_len__))
|
|
return NULL;
|
|
bytes__len__ = bytes__in_len__;
|
|
CFDataAppendBytes(_self->ob_itself,
|
|
bytes__in__, bytes__len__);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFMutableDataRefObj_CFDataReplaceBytes(CFMutableDataRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFRange range;
|
|
unsigned char *newBytes__in__;
|
|
long newBytes__len__;
|
|
int newBytes__in_len__;
|
|
#ifndef CFDataReplaceBytes
|
|
PyMac_PRECHECK(CFDataReplaceBytes);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&s#",
|
|
CFRange_Convert, &range,
|
|
&newBytes__in__, &newBytes__in_len__))
|
|
return NULL;
|
|
newBytes__len__ = newBytes__in_len__;
|
|
CFDataReplaceBytes(_self->ob_itself,
|
|
range,
|
|
newBytes__in__, newBytes__len__);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFMutableDataRefObj_CFDataDeleteBytes(CFMutableDataRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFRange range;
|
|
#ifndef CFDataDeleteBytes
|
|
PyMac_PRECHECK(CFDataDeleteBytes);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
CFRange_Convert, &range))
|
|
return NULL;
|
|
CFDataDeleteBytes(_self->ob_itself,
|
|
range);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyMethodDef CFMutableDataRefObj_methods[] = {
|
|
{"CFDataSetLength", (PyCFunction)CFMutableDataRefObj_CFDataSetLength, 1,
|
|
PyDoc_STR("(CFIndex length) -> None")},
|
|
{"CFDataIncreaseLength", (PyCFunction)CFMutableDataRefObj_CFDataIncreaseLength, 1,
|
|
PyDoc_STR("(CFIndex extraLength) -> None")},
|
|
{"CFDataAppendBytes", (PyCFunction)CFMutableDataRefObj_CFDataAppendBytes, 1,
|
|
PyDoc_STR("(Buffer bytes) -> None")},
|
|
{"CFDataReplaceBytes", (PyCFunction)CFMutableDataRefObj_CFDataReplaceBytes, 1,
|
|
PyDoc_STR("(CFRange range, Buffer newBytes) -> None")},
|
|
{"CFDataDeleteBytes", (PyCFunction)CFMutableDataRefObj_CFDataDeleteBytes, 1,
|
|
PyDoc_STR("(CFRange range) -> None")},
|
|
{NULL, NULL, 0}
|
|
};
|
|
|
|
#define CFMutableDataRefObj_getsetlist NULL
|
|
|
|
|
|
static int CFMutableDataRefObj_compare(CFMutableDataRefObject *self, CFMutableDataRefObject *other)
|
|
{
|
|
/* XXXX Or should we use CFEqual?? */
|
|
if ( self->ob_itself > other->ob_itself ) return 1;
|
|
if ( self->ob_itself < other->ob_itself ) return -1;
|
|
return 0;
|
|
}
|
|
|
|
static PyObject * CFMutableDataRefObj_repr(CFMutableDataRefObject *self)
|
|
{
|
|
char buf[100];
|
|
sprintf(buf, "<CFMutableDataRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself);
|
|
return PyUnicode_FromString(buf);
|
|
}
|
|
|
|
static int CFMutableDataRefObj_hash(CFMutableDataRefObject *self)
|
|
{
|
|
/* XXXX Or should we use CFHash?? */
|
|
return (int)self->ob_itself;
|
|
}
|
|
static int CFMutableDataRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds)
|
|
{
|
|
CFMutableDataRef itself;
|
|
char *kw[] = {"itself", 0};
|
|
|
|
if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFMutableDataRefObj_Convert, &itself))
|
|
{
|
|
((CFMutableDataRefObject *)_self)->ob_itself = itself;
|
|
return 0;
|
|
}
|
|
|
|
/* Any CFTypeRef descendent is allowed as initializer too */
|
|
if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself))
|
|
{
|
|
((CFMutableDataRefObject *)_self)->ob_itself = itself;
|
|
return 0;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
#define CFMutableDataRefObj_tp_alloc PyType_GenericAlloc
|
|
|
|
static PyObject *CFMutableDataRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)
|
|
{
|
|
PyObject *self;
|
|
if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;
|
|
((CFMutableDataRefObject *)self)->ob_itself = NULL;
|
|
((CFMutableDataRefObject *)self)->ob_freeit = CFRelease;
|
|
return self;
|
|
}
|
|
|
|
#define CFMutableDataRefObj_tp_free PyObject_Del
|
|
|
|
|
|
PyTypeObject CFMutableDataRef_Type = {
|
|
PyVarObject_HEAD_INIT(NULL, 0)
|
|
"_CF.CFMutableDataRef", /*tp_name*/
|
|
sizeof(CFMutableDataRefObject), /*tp_basicsize*/
|
|
0, /*tp_itemsize*/
|
|
/* methods */
|
|
(destructor) CFMutableDataRefObj_dealloc, /*tp_dealloc*/
|
|
0, /*tp_print*/
|
|
(getattrfunc)0, /*tp_getattr*/
|
|
(setattrfunc)0, /*tp_setattr*/
|
|
(cmpfunc) CFMutableDataRefObj_compare, /*tp_compare*/
|
|
(reprfunc) CFMutableDataRefObj_repr, /*tp_repr*/
|
|
(PyNumberMethods *)0, /* tp_as_number */
|
|
(PySequenceMethods *)0, /* tp_as_sequence */
|
|
(PyMappingMethods *)0, /* tp_as_mapping */
|
|
(hashfunc) CFMutableDataRefObj_hash, /*tp_hash*/
|
|
0, /*tp_call*/
|
|
0, /*tp_str*/
|
|
PyObject_GenericGetAttr, /*tp_getattro*/
|
|
PyObject_GenericSetAttr, /*tp_setattro */
|
|
0, /*tp_as_buffer*/
|
|
Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */
|
|
0, /*tp_doc*/
|
|
0, /*tp_traverse*/
|
|
0, /*tp_clear*/
|
|
0, /*tp_richcompare*/
|
|
0, /*tp_weaklistoffset*/
|
|
0, /*tp_iter*/
|
|
0, /*tp_iternext*/
|
|
CFMutableDataRefObj_methods, /* tp_methods */
|
|
0, /*tp_members*/
|
|
CFMutableDataRefObj_getsetlist, /*tp_getset*/
|
|
0, /*tp_base*/
|
|
0, /*tp_dict*/
|
|
0, /*tp_descr_get*/
|
|
0, /*tp_descr_set*/
|
|
0, /*tp_dictoffset*/
|
|
CFMutableDataRefObj_tp_init, /* tp_init */
|
|
CFMutableDataRefObj_tp_alloc, /* tp_alloc */
|
|
CFMutableDataRefObj_tp_new, /* tp_new */
|
|
CFMutableDataRefObj_tp_free, /* tp_free */
|
|
};
|
|
|
|
/* ---------------- End object type CFMutableDataRef ---------------- */
|
|
|
|
|
|
/* -------------------- Object type CFStringRef --------------------- */
|
|
|
|
PyTypeObject CFStringRef_Type;
|
|
|
|
#define CFStringRefObj_Check(x) (Py_Type(x) == &CFStringRef_Type || PyObject_TypeCheck((x), &CFStringRef_Type))
|
|
|
|
typedef struct CFStringRefObject {
|
|
PyObject_HEAD
|
|
CFStringRef ob_itself;
|
|
void (*ob_freeit)(CFTypeRef ptr);
|
|
} CFStringRefObject;
|
|
|
|
PyObject *CFStringRefObj_New(CFStringRef itself)
|
|
{
|
|
CFStringRefObject *it;
|
|
if (itself == NULL)
|
|
{
|
|
PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");
|
|
return NULL;
|
|
}
|
|
it = PyObject_NEW(CFStringRefObject, &CFStringRef_Type);
|
|
if (it == NULL) return NULL;
|
|
/* XXXX Should we tp_init or tp_new our basetype? */
|
|
it->ob_itself = itself;
|
|
it->ob_freeit = CFRelease;
|
|
return (PyObject *)it;
|
|
}
|
|
|
|
int CFStringRefObj_Convert(PyObject *v, CFStringRef *p_itself)
|
|
{
|
|
|
|
if (v == Py_None) { *p_itself = NULL; return 1; }
|
|
if (PyString_Check(v)) {
|
|
char *cStr;
|
|
if (!PyArg_Parse(v, "es", "ascii", &cStr))
|
|
return 0;
|
|
*p_itself = CFStringCreateWithCString((CFAllocatorRef)NULL, cStr, kCFStringEncodingASCII);
|
|
PyMem_Free(cStr);
|
|
return 1;
|
|
}
|
|
if (PyUnicode_Check(v)) {
|
|
/* We use the CF types here, if Python was configured differently that will give an error */
|
|
CFIndex size = PyUnicode_GetSize(v);
|
|
UniChar *unichars = PyUnicode_AsUnicode(v);
|
|
if (!unichars) return 0;
|
|
*p_itself = CFStringCreateWithCharacters((CFAllocatorRef)NULL, unichars, size);
|
|
return 1;
|
|
}
|
|
|
|
|
|
if (!CFStringRefObj_Check(v))
|
|
{
|
|
PyErr_SetString(PyExc_TypeError, "CFStringRef required");
|
|
return 0;
|
|
}
|
|
*p_itself = ((CFStringRefObject *)v)->ob_itself;
|
|
return 1;
|
|
}
|
|
|
|
static void CFStringRefObj_dealloc(CFStringRefObject *self)
|
|
{
|
|
if (self->ob_freeit && self->ob_itself)
|
|
{
|
|
self->ob_freeit((CFTypeRef)self->ob_itself);
|
|
self->ob_itself = NULL;
|
|
}
|
|
CFTypeRef_Type.tp_dealloc((PyObject *)self);
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFStringCreateWithSubstring(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
CFRange range;
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
CFRange_Convert, &range))
|
|
return NULL;
|
|
_rv = CFStringCreateWithSubstring((CFAllocatorRef)NULL,
|
|
_self->ob_itself,
|
|
range);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFStringCreateCopy(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFStringCreateCopy((CFAllocatorRef)NULL,
|
|
_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFStringGetLength(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFIndex _rv;
|
|
#ifndef CFStringGetLength
|
|
PyMac_PRECHECK(CFStringGetLength);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFStringGetLength(_self->ob_itself);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFStringGetBytes(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFIndex _rv;
|
|
CFRange range;
|
|
CFStringEncoding encoding;
|
|
UInt8 lossByte;
|
|
Boolean isExternalRepresentation;
|
|
UInt8 buffer;
|
|
CFIndex maxBufLen;
|
|
CFIndex usedBufLen;
|
|
#ifndef CFStringGetBytes
|
|
PyMac_PRECHECK(CFStringGetBytes);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&lbll",
|
|
CFRange_Convert, &range,
|
|
&encoding,
|
|
&lossByte,
|
|
&isExternalRepresentation,
|
|
&maxBufLen))
|
|
return NULL;
|
|
_rv = CFStringGetBytes(_self->ob_itself,
|
|
range,
|
|
encoding,
|
|
lossByte,
|
|
isExternalRepresentation,
|
|
&buffer,
|
|
maxBufLen,
|
|
&usedBufLen);
|
|
_res = Py_BuildValue("lbl",
|
|
_rv,
|
|
buffer,
|
|
usedBufLen);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFStringCreateExternalRepresentation(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFDataRef _rv;
|
|
CFStringEncoding encoding;
|
|
UInt8 lossByte;
|
|
if (!PyArg_ParseTuple(_args, "lb",
|
|
&encoding,
|
|
&lossByte))
|
|
return NULL;
|
|
_rv = CFStringCreateExternalRepresentation((CFAllocatorRef)NULL,
|
|
_self->ob_itself,
|
|
encoding,
|
|
lossByte);
|
|
_res = Py_BuildValue("O&",
|
|
CFDataRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFStringGetSmallestEncoding(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringEncoding _rv;
|
|
#ifndef CFStringGetSmallestEncoding
|
|
PyMac_PRECHECK(CFStringGetSmallestEncoding);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFStringGetSmallestEncoding(_self->ob_itself);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFStringGetFastestEncoding(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringEncoding _rv;
|
|
#ifndef CFStringGetFastestEncoding
|
|
PyMac_PRECHECK(CFStringGetFastestEncoding);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFStringGetFastestEncoding(_self->ob_itself);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFStringCompareWithOptions(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFComparisonResult _rv;
|
|
CFStringRef theString2;
|
|
CFRange rangeToCompare;
|
|
CFOptionFlags compareOptions;
|
|
#ifndef CFStringCompareWithOptions
|
|
PyMac_PRECHECK(CFStringCompareWithOptions);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&O&l",
|
|
CFStringRefObj_Convert, &theString2,
|
|
CFRange_Convert, &rangeToCompare,
|
|
&compareOptions))
|
|
return NULL;
|
|
_rv = CFStringCompareWithOptions(_self->ob_itself,
|
|
theString2,
|
|
rangeToCompare,
|
|
compareOptions);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFStringCompare(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFComparisonResult _rv;
|
|
CFStringRef theString2;
|
|
CFOptionFlags compareOptions;
|
|
#ifndef CFStringCompare
|
|
PyMac_PRECHECK(CFStringCompare);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&l",
|
|
CFStringRefObj_Convert, &theString2,
|
|
&compareOptions))
|
|
return NULL;
|
|
_rv = CFStringCompare(_self->ob_itself,
|
|
theString2,
|
|
compareOptions);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFStringFindWithOptions(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
Boolean _rv;
|
|
CFStringRef stringToFind;
|
|
CFRange rangeToSearch;
|
|
CFOptionFlags searchOptions;
|
|
CFRange result;
|
|
#ifndef CFStringFindWithOptions
|
|
PyMac_PRECHECK(CFStringFindWithOptions);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&O&l",
|
|
CFStringRefObj_Convert, &stringToFind,
|
|
CFRange_Convert, &rangeToSearch,
|
|
&searchOptions))
|
|
return NULL;
|
|
_rv = CFStringFindWithOptions(_self->ob_itself,
|
|
stringToFind,
|
|
rangeToSearch,
|
|
searchOptions,
|
|
&result);
|
|
_res = Py_BuildValue("lO&",
|
|
_rv,
|
|
CFRange_New, result);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFStringCreateArrayWithFindResults(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFArrayRef _rv;
|
|
CFStringRef stringToFind;
|
|
CFRange rangeToSearch;
|
|
CFOptionFlags compareOptions;
|
|
if (!PyArg_ParseTuple(_args, "O&O&l",
|
|
CFStringRefObj_Convert, &stringToFind,
|
|
CFRange_Convert, &rangeToSearch,
|
|
&compareOptions))
|
|
return NULL;
|
|
_rv = CFStringCreateArrayWithFindResults((CFAllocatorRef)NULL,
|
|
_self->ob_itself,
|
|
stringToFind,
|
|
rangeToSearch,
|
|
compareOptions);
|
|
_res = Py_BuildValue("O&",
|
|
CFArrayRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFStringFind(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFRange _rv;
|
|
CFStringRef stringToFind;
|
|
CFOptionFlags compareOptions;
|
|
#ifndef CFStringFind
|
|
PyMac_PRECHECK(CFStringFind);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&l",
|
|
CFStringRefObj_Convert, &stringToFind,
|
|
&compareOptions))
|
|
return NULL;
|
|
_rv = CFStringFind(_self->ob_itself,
|
|
stringToFind,
|
|
compareOptions);
|
|
_res = Py_BuildValue("O&",
|
|
CFRange_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFStringHasPrefix(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
Boolean _rv;
|
|
CFStringRef prefix;
|
|
#ifndef CFStringHasPrefix
|
|
PyMac_PRECHECK(CFStringHasPrefix);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
CFStringRefObj_Convert, &prefix))
|
|
return NULL;
|
|
_rv = CFStringHasPrefix(_self->ob_itself,
|
|
prefix);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFStringHasSuffix(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
Boolean _rv;
|
|
CFStringRef suffix;
|
|
#ifndef CFStringHasSuffix
|
|
PyMac_PRECHECK(CFStringHasSuffix);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
CFStringRefObj_Convert, &suffix))
|
|
return NULL;
|
|
_rv = CFStringHasSuffix(_self->ob_itself,
|
|
suffix);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFStringGetLineBounds(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFRange range;
|
|
CFIndex lineBeginIndex;
|
|
CFIndex lineEndIndex;
|
|
CFIndex contentsEndIndex;
|
|
#ifndef CFStringGetLineBounds
|
|
PyMac_PRECHECK(CFStringGetLineBounds);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
CFRange_Convert, &range))
|
|
return NULL;
|
|
CFStringGetLineBounds(_self->ob_itself,
|
|
range,
|
|
&lineBeginIndex,
|
|
&lineEndIndex,
|
|
&contentsEndIndex);
|
|
_res = Py_BuildValue("lll",
|
|
lineBeginIndex,
|
|
lineEndIndex,
|
|
contentsEndIndex);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFStringCreateArrayBySeparatingStrings(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFArrayRef _rv;
|
|
CFStringRef separatorString;
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
CFStringRefObj_Convert, &separatorString))
|
|
return NULL;
|
|
_rv = CFStringCreateArrayBySeparatingStrings((CFAllocatorRef)NULL,
|
|
_self->ob_itself,
|
|
separatorString);
|
|
_res = Py_BuildValue("O&",
|
|
CFArrayRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFStringGetIntValue(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
SInt32 _rv;
|
|
#ifndef CFStringGetIntValue
|
|
PyMac_PRECHECK(CFStringGetIntValue);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFStringGetIntValue(_self->ob_itself);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFStringGetDoubleValue(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
double _rv;
|
|
#ifndef CFStringGetDoubleValue
|
|
PyMac_PRECHECK(CFStringGetDoubleValue);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFStringGetDoubleValue(_self->ob_itself);
|
|
_res = Py_BuildValue("d",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFStringConvertIANACharSetNameToEncoding(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringEncoding _rv;
|
|
#ifndef CFStringConvertIANACharSetNameToEncoding
|
|
PyMac_PRECHECK(CFStringConvertIANACharSetNameToEncoding);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFStringConvertIANACharSetNameToEncoding(_self->ob_itself);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFShowStr(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
#ifndef CFShowStr
|
|
PyMac_PRECHECK(CFShowStr);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
CFShowStr(_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFURLCreateWithString(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFURLRef _rv;
|
|
CFURLRef baseURL;
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
OptionalCFURLRefObj_Convert, &baseURL))
|
|
return NULL;
|
|
_rv = CFURLCreateWithString((CFAllocatorRef)NULL,
|
|
_self->ob_itself,
|
|
baseURL);
|
|
_res = Py_BuildValue("O&",
|
|
CFURLRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFURLCreateWithFileSystemPath(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFURLRef _rv;
|
|
CFURLPathStyle pathStyle;
|
|
Boolean isDirectory;
|
|
if (!PyArg_ParseTuple(_args, "ll",
|
|
&pathStyle,
|
|
&isDirectory))
|
|
return NULL;
|
|
_rv = CFURLCreateWithFileSystemPath((CFAllocatorRef)NULL,
|
|
_self->ob_itself,
|
|
pathStyle,
|
|
isDirectory);
|
|
_res = Py_BuildValue("O&",
|
|
CFURLRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFURLCreateWithFileSystemPathRelativeToBase(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFURLRef _rv;
|
|
CFURLPathStyle pathStyle;
|
|
Boolean isDirectory;
|
|
CFURLRef baseURL;
|
|
if (!PyArg_ParseTuple(_args, "llO&",
|
|
&pathStyle,
|
|
&isDirectory,
|
|
OptionalCFURLRefObj_Convert, &baseURL))
|
|
return NULL;
|
|
_rv = CFURLCreateWithFileSystemPathRelativeToBase((CFAllocatorRef)NULL,
|
|
_self->ob_itself,
|
|
pathStyle,
|
|
isDirectory,
|
|
baseURL);
|
|
_res = Py_BuildValue("O&",
|
|
CFURLRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFURLCreateStringByReplacingPercentEscapes(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
CFStringRef charactersToLeaveEscaped;
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
CFStringRefObj_Convert, &charactersToLeaveEscaped))
|
|
return NULL;
|
|
_rv = CFURLCreateStringByReplacingPercentEscapes((CFAllocatorRef)NULL,
|
|
_self->ob_itself,
|
|
charactersToLeaveEscaped);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFURLCreateStringByAddingPercentEscapes(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
CFStringRef charactersToLeaveUnescaped;
|
|
CFStringRef legalURLCharactersToBeEscaped;
|
|
CFStringEncoding encoding;
|
|
if (!PyArg_ParseTuple(_args, "O&O&l",
|
|
CFStringRefObj_Convert, &charactersToLeaveUnescaped,
|
|
CFStringRefObj_Convert, &legalURLCharactersToBeEscaped,
|
|
&encoding))
|
|
return NULL;
|
|
_rv = CFURLCreateStringByAddingPercentEscapes((CFAllocatorRef)NULL,
|
|
_self->ob_itself,
|
|
charactersToLeaveUnescaped,
|
|
legalURLCharactersToBeEscaped,
|
|
encoding);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFStringGetString(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
|
|
int size = CFStringGetLength(_self->ob_itself)+1;
|
|
char *data = malloc(size);
|
|
|
|
if( data == NULL ) return PyErr_NoMemory();
|
|
if ( CFStringGetCString(_self->ob_itself, data, size, 0) ) {
|
|
_res = (PyObject *)PyString_FromString(data);
|
|
} else {
|
|
PyErr_SetString(PyExc_RuntimeError, "CFStringGetCString could not fit the string");
|
|
_res = NULL;
|
|
}
|
|
free(data);
|
|
return _res;
|
|
|
|
}
|
|
|
|
static PyObject *CFStringRefObj_CFStringGetUnicode(CFStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
|
|
int size = CFStringGetLength(_self->ob_itself)+1;
|
|
Py_UNICODE *data = malloc(size*sizeof(Py_UNICODE));
|
|
CFRange range;
|
|
|
|
range.location = 0;
|
|
range.length = size;
|
|
if( data == NULL ) return PyErr_NoMemory();
|
|
CFStringGetCharacters(_self->ob_itself, range, data);
|
|
_res = (PyObject *)PyUnicode_FromUnicode(data, size-1);
|
|
free(data);
|
|
return _res;
|
|
|
|
}
|
|
|
|
static PyMethodDef CFStringRefObj_methods[] = {
|
|
{"CFStringCreateWithSubstring", (PyCFunction)CFStringRefObj_CFStringCreateWithSubstring, 1,
|
|
PyDoc_STR("(CFRange range) -> (CFStringRef _rv)")},
|
|
{"CFStringCreateCopy", (PyCFunction)CFStringRefObj_CFStringCreateCopy, 1,
|
|
PyDoc_STR("() -> (CFStringRef _rv)")},
|
|
{"CFStringGetLength", (PyCFunction)CFStringRefObj_CFStringGetLength, 1,
|
|
PyDoc_STR("() -> (CFIndex _rv)")},
|
|
{"CFStringGetBytes", (PyCFunction)CFStringRefObj_CFStringGetBytes, 1,
|
|
PyDoc_STR("(CFRange range, CFStringEncoding encoding, UInt8 lossByte, Boolean isExternalRepresentation, CFIndex maxBufLen) -> (CFIndex _rv, UInt8 buffer, CFIndex usedBufLen)")},
|
|
{"CFStringCreateExternalRepresentation", (PyCFunction)CFStringRefObj_CFStringCreateExternalRepresentation, 1,
|
|
PyDoc_STR("(CFStringEncoding encoding, UInt8 lossByte) -> (CFDataRef _rv)")},
|
|
{"CFStringGetSmallestEncoding", (PyCFunction)CFStringRefObj_CFStringGetSmallestEncoding, 1,
|
|
PyDoc_STR("() -> (CFStringEncoding _rv)")},
|
|
{"CFStringGetFastestEncoding", (PyCFunction)CFStringRefObj_CFStringGetFastestEncoding, 1,
|
|
PyDoc_STR("() -> (CFStringEncoding _rv)")},
|
|
{"CFStringCompareWithOptions", (PyCFunction)CFStringRefObj_CFStringCompareWithOptions, 1,
|
|
PyDoc_STR("(CFStringRef theString2, CFRange rangeToCompare, CFOptionFlags compareOptions) -> (CFComparisonResult _rv)")},
|
|
{"CFStringCompare", (PyCFunction)CFStringRefObj_CFStringCompare, 1,
|
|
PyDoc_STR("(CFStringRef theString2, CFOptionFlags compareOptions) -> (CFComparisonResult _rv)")},
|
|
{"CFStringFindWithOptions", (PyCFunction)CFStringRefObj_CFStringFindWithOptions, 1,
|
|
PyDoc_STR("(CFStringRef stringToFind, CFRange rangeToSearch, CFOptionFlags searchOptions) -> (Boolean _rv, CFRange result)")},
|
|
{"CFStringCreateArrayWithFindResults", (PyCFunction)CFStringRefObj_CFStringCreateArrayWithFindResults, 1,
|
|
PyDoc_STR("(CFStringRef stringToFind, CFRange rangeToSearch, CFOptionFlags compareOptions) -> (CFArrayRef _rv)")},
|
|
{"CFStringFind", (PyCFunction)CFStringRefObj_CFStringFind, 1,
|
|
PyDoc_STR("(CFStringRef stringToFind, CFOptionFlags compareOptions) -> (CFRange _rv)")},
|
|
{"CFStringHasPrefix", (PyCFunction)CFStringRefObj_CFStringHasPrefix, 1,
|
|
PyDoc_STR("(CFStringRef prefix) -> (Boolean _rv)")},
|
|
{"CFStringHasSuffix", (PyCFunction)CFStringRefObj_CFStringHasSuffix, 1,
|
|
PyDoc_STR("(CFStringRef suffix) -> (Boolean _rv)")},
|
|
{"CFStringGetLineBounds", (PyCFunction)CFStringRefObj_CFStringGetLineBounds, 1,
|
|
PyDoc_STR("(CFRange range) -> (CFIndex lineBeginIndex, CFIndex lineEndIndex, CFIndex contentsEndIndex)")},
|
|
{"CFStringCreateArrayBySeparatingStrings", (PyCFunction)CFStringRefObj_CFStringCreateArrayBySeparatingStrings, 1,
|
|
PyDoc_STR("(CFStringRef separatorString) -> (CFArrayRef _rv)")},
|
|
{"CFStringGetIntValue", (PyCFunction)CFStringRefObj_CFStringGetIntValue, 1,
|
|
PyDoc_STR("() -> (SInt32 _rv)")},
|
|
{"CFStringGetDoubleValue", (PyCFunction)CFStringRefObj_CFStringGetDoubleValue, 1,
|
|
PyDoc_STR("() -> (double _rv)")},
|
|
{"CFStringConvertIANACharSetNameToEncoding", (PyCFunction)CFStringRefObj_CFStringConvertIANACharSetNameToEncoding, 1,
|
|
PyDoc_STR("() -> (CFStringEncoding _rv)")},
|
|
{"CFShowStr", (PyCFunction)CFStringRefObj_CFShowStr, 1,
|
|
PyDoc_STR("() -> None")},
|
|
{"CFURLCreateWithString", (PyCFunction)CFStringRefObj_CFURLCreateWithString, 1,
|
|
PyDoc_STR("(CFURLRef baseURL) -> (CFURLRef _rv)")},
|
|
{"CFURLCreateWithFileSystemPath", (PyCFunction)CFStringRefObj_CFURLCreateWithFileSystemPath, 1,
|
|
PyDoc_STR("(CFURLPathStyle pathStyle, Boolean isDirectory) -> (CFURLRef _rv)")},
|
|
{"CFURLCreateWithFileSystemPathRelativeToBase", (PyCFunction)CFStringRefObj_CFURLCreateWithFileSystemPathRelativeToBase, 1,
|
|
PyDoc_STR("(CFURLPathStyle pathStyle, Boolean isDirectory, CFURLRef baseURL) -> (CFURLRef _rv)")},
|
|
{"CFURLCreateStringByReplacingPercentEscapes", (PyCFunction)CFStringRefObj_CFURLCreateStringByReplacingPercentEscapes, 1,
|
|
PyDoc_STR("(CFStringRef charactersToLeaveEscaped) -> (CFStringRef _rv)")},
|
|
{"CFURLCreateStringByAddingPercentEscapes", (PyCFunction)CFStringRefObj_CFURLCreateStringByAddingPercentEscapes, 1,
|
|
PyDoc_STR("(CFStringRef charactersToLeaveUnescaped, CFStringRef legalURLCharactersToBeEscaped, CFStringEncoding encoding) -> (CFStringRef _rv)")},
|
|
{"CFStringGetString", (PyCFunction)CFStringRefObj_CFStringGetString, 1,
|
|
PyDoc_STR("() -> (string _rv)")},
|
|
{"CFStringGetUnicode", (PyCFunction)CFStringRefObj_CFStringGetUnicode, 1,
|
|
PyDoc_STR("() -> (unicode _rv)")},
|
|
{NULL, NULL, 0}
|
|
};
|
|
|
|
#define CFStringRefObj_getsetlist NULL
|
|
|
|
|
|
static int CFStringRefObj_compare(CFStringRefObject *self, CFStringRefObject *other)
|
|
{
|
|
/* XXXX Or should we use CFEqual?? */
|
|
if ( self->ob_itself > other->ob_itself ) return 1;
|
|
if ( self->ob_itself < other->ob_itself ) return -1;
|
|
return 0;
|
|
}
|
|
|
|
static PyObject * CFStringRefObj_repr(CFStringRefObject *self)
|
|
{
|
|
char buf[100];
|
|
sprintf(buf, "<CFStringRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself);
|
|
return PyUnicode_FromString(buf);
|
|
}
|
|
|
|
static int CFStringRefObj_hash(CFStringRefObject *self)
|
|
{
|
|
/* XXXX Or should we use CFHash?? */
|
|
return (int)self->ob_itself;
|
|
}
|
|
static int CFStringRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds)
|
|
{
|
|
CFStringRef itself;
|
|
char *kw[] = {"itself", 0};
|
|
|
|
if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFStringRefObj_Convert, &itself))
|
|
{
|
|
((CFStringRefObject *)_self)->ob_itself = itself;
|
|
return 0;
|
|
}
|
|
|
|
/* Any CFTypeRef descendent is allowed as initializer too */
|
|
if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself))
|
|
{
|
|
((CFStringRefObject *)_self)->ob_itself = itself;
|
|
return 0;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
#define CFStringRefObj_tp_alloc PyType_GenericAlloc
|
|
|
|
static PyObject *CFStringRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)
|
|
{
|
|
PyObject *self;
|
|
if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;
|
|
((CFStringRefObject *)self)->ob_itself = NULL;
|
|
((CFStringRefObject *)self)->ob_freeit = CFRelease;
|
|
return self;
|
|
}
|
|
|
|
#define CFStringRefObj_tp_free PyObject_Del
|
|
|
|
|
|
PyTypeObject CFStringRef_Type = {
|
|
PyVarObject_HEAD_INIT(NULL, 0)
|
|
"_CF.CFStringRef", /*tp_name*/
|
|
sizeof(CFStringRefObject), /*tp_basicsize*/
|
|
0, /*tp_itemsize*/
|
|
/* methods */
|
|
(destructor) CFStringRefObj_dealloc, /*tp_dealloc*/
|
|
0, /*tp_print*/
|
|
(getattrfunc)0, /*tp_getattr*/
|
|
(setattrfunc)0, /*tp_setattr*/
|
|
(cmpfunc) CFStringRefObj_compare, /*tp_compare*/
|
|
(reprfunc) CFStringRefObj_repr, /*tp_repr*/
|
|
(PyNumberMethods *)0, /* tp_as_number */
|
|
(PySequenceMethods *)0, /* tp_as_sequence */
|
|
(PyMappingMethods *)0, /* tp_as_mapping */
|
|
(hashfunc) CFStringRefObj_hash, /*tp_hash*/
|
|
0, /*tp_call*/
|
|
0, /*tp_str*/
|
|
PyObject_GenericGetAttr, /*tp_getattro*/
|
|
PyObject_GenericSetAttr, /*tp_setattro */
|
|
0, /*tp_as_buffer*/
|
|
Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */
|
|
0, /*tp_doc*/
|
|
0, /*tp_traverse*/
|
|
0, /*tp_clear*/
|
|
0, /*tp_richcompare*/
|
|
0, /*tp_weaklistoffset*/
|
|
0, /*tp_iter*/
|
|
0, /*tp_iternext*/
|
|
CFStringRefObj_methods, /* tp_methods */
|
|
0, /*tp_members*/
|
|
CFStringRefObj_getsetlist, /*tp_getset*/
|
|
0, /*tp_base*/
|
|
0, /*tp_dict*/
|
|
0, /*tp_descr_get*/
|
|
0, /*tp_descr_set*/
|
|
0, /*tp_dictoffset*/
|
|
CFStringRefObj_tp_init, /* tp_init */
|
|
CFStringRefObj_tp_alloc, /* tp_alloc */
|
|
CFStringRefObj_tp_new, /* tp_new */
|
|
CFStringRefObj_tp_free, /* tp_free */
|
|
};
|
|
|
|
/* ------------------ End object type CFStringRef ------------------- */
|
|
|
|
|
|
/* ----------------- Object type CFMutableStringRef ----------------- */
|
|
|
|
PyTypeObject CFMutableStringRef_Type;
|
|
|
|
#define CFMutableStringRefObj_Check(x) (Py_Type(x) == &CFMutableStringRef_Type || PyObject_TypeCheck((x), &CFMutableStringRef_Type))
|
|
|
|
typedef struct CFMutableStringRefObject {
|
|
PyObject_HEAD
|
|
CFMutableStringRef ob_itself;
|
|
void (*ob_freeit)(CFTypeRef ptr);
|
|
} CFMutableStringRefObject;
|
|
|
|
PyObject *CFMutableStringRefObj_New(CFMutableStringRef itself)
|
|
{
|
|
CFMutableStringRefObject *it;
|
|
if (itself == NULL)
|
|
{
|
|
PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");
|
|
return NULL;
|
|
}
|
|
it = PyObject_NEW(CFMutableStringRefObject, &CFMutableStringRef_Type);
|
|
if (it == NULL) return NULL;
|
|
/* XXXX Should we tp_init or tp_new our basetype? */
|
|
it->ob_itself = itself;
|
|
it->ob_freeit = CFRelease;
|
|
return (PyObject *)it;
|
|
}
|
|
|
|
int CFMutableStringRefObj_Convert(PyObject *v, CFMutableStringRef *p_itself)
|
|
{
|
|
|
|
if (v == Py_None) { *p_itself = NULL; return 1; }
|
|
/* Check for other CF objects here */
|
|
|
|
if (!CFMutableStringRefObj_Check(v))
|
|
{
|
|
PyErr_SetString(PyExc_TypeError, "CFMutableStringRef required");
|
|
return 0;
|
|
}
|
|
*p_itself = ((CFMutableStringRefObject *)v)->ob_itself;
|
|
return 1;
|
|
}
|
|
|
|
static void CFMutableStringRefObj_dealloc(CFMutableStringRefObject *self)
|
|
{
|
|
if (self->ob_freeit && self->ob_itself)
|
|
{
|
|
self->ob_freeit((CFTypeRef)self->ob_itself);
|
|
self->ob_itself = NULL;
|
|
}
|
|
CFStringRef_Type.tp_dealloc((PyObject *)self);
|
|
}
|
|
|
|
static PyObject *CFMutableStringRefObj_CFStringAppend(CFMutableStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef appendedString;
|
|
#ifndef CFStringAppend
|
|
PyMac_PRECHECK(CFStringAppend);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
CFStringRefObj_Convert, &appendedString))
|
|
return NULL;
|
|
CFStringAppend(_self->ob_itself,
|
|
appendedString);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFMutableStringRefObj_CFStringAppendCharacters(CFMutableStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
UniChar *chars__in__;
|
|
UniCharCount chars__len__;
|
|
int chars__in_len__;
|
|
#ifndef CFStringAppendCharacters
|
|
PyMac_PRECHECK(CFStringAppendCharacters);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "u#",
|
|
&chars__in__, &chars__in_len__))
|
|
return NULL;
|
|
chars__len__ = chars__in_len__;
|
|
CFStringAppendCharacters(_self->ob_itself,
|
|
chars__in__, chars__len__);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFMutableStringRefObj_CFStringAppendPascalString(CFMutableStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
Str255 pStr;
|
|
CFStringEncoding encoding;
|
|
#ifndef CFStringAppendPascalString
|
|
PyMac_PRECHECK(CFStringAppendPascalString);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&l",
|
|
PyMac_GetStr255, pStr,
|
|
&encoding))
|
|
return NULL;
|
|
CFStringAppendPascalString(_self->ob_itself,
|
|
pStr,
|
|
encoding);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFMutableStringRefObj_CFStringAppendCString(CFMutableStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
char* cStr;
|
|
CFStringEncoding encoding;
|
|
#ifndef CFStringAppendCString
|
|
PyMac_PRECHECK(CFStringAppendCString);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "sl",
|
|
&cStr,
|
|
&encoding))
|
|
return NULL;
|
|
CFStringAppendCString(_self->ob_itself,
|
|
cStr,
|
|
encoding);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFMutableStringRefObj_CFStringInsert(CFMutableStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFIndex idx;
|
|
CFStringRef insertedStr;
|
|
#ifndef CFStringInsert
|
|
PyMac_PRECHECK(CFStringInsert);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "lO&",
|
|
&idx,
|
|
CFStringRefObj_Convert, &insertedStr))
|
|
return NULL;
|
|
CFStringInsert(_self->ob_itself,
|
|
idx,
|
|
insertedStr);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFMutableStringRefObj_CFStringDelete(CFMutableStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFRange range;
|
|
#ifndef CFStringDelete
|
|
PyMac_PRECHECK(CFStringDelete);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
CFRange_Convert, &range))
|
|
return NULL;
|
|
CFStringDelete(_self->ob_itself,
|
|
range);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFMutableStringRefObj_CFStringReplace(CFMutableStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFRange range;
|
|
CFStringRef replacement;
|
|
#ifndef CFStringReplace
|
|
PyMac_PRECHECK(CFStringReplace);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&O&",
|
|
CFRange_Convert, &range,
|
|
CFStringRefObj_Convert, &replacement))
|
|
return NULL;
|
|
CFStringReplace(_self->ob_itself,
|
|
range,
|
|
replacement);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFMutableStringRefObj_CFStringReplaceAll(CFMutableStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef replacement;
|
|
#ifndef CFStringReplaceAll
|
|
PyMac_PRECHECK(CFStringReplaceAll);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
CFStringRefObj_Convert, &replacement))
|
|
return NULL;
|
|
CFStringReplaceAll(_self->ob_itself,
|
|
replacement);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFMutableStringRefObj_CFStringPad(CFMutableStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef padString;
|
|
CFIndex length;
|
|
CFIndex indexIntoPad;
|
|
#ifndef CFStringPad
|
|
PyMac_PRECHECK(CFStringPad);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&ll",
|
|
CFStringRefObj_Convert, &padString,
|
|
&length,
|
|
&indexIntoPad))
|
|
return NULL;
|
|
CFStringPad(_self->ob_itself,
|
|
padString,
|
|
length,
|
|
indexIntoPad);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFMutableStringRefObj_CFStringTrim(CFMutableStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef trimString;
|
|
#ifndef CFStringTrim
|
|
PyMac_PRECHECK(CFStringTrim);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
CFStringRefObj_Convert, &trimString))
|
|
return NULL;
|
|
CFStringTrim(_self->ob_itself,
|
|
trimString);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFMutableStringRefObj_CFStringTrimWhitespace(CFMutableStringRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
#ifndef CFStringTrimWhitespace
|
|
PyMac_PRECHECK(CFStringTrimWhitespace);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
CFStringTrimWhitespace(_self->ob_itself);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyMethodDef CFMutableStringRefObj_methods[] = {
|
|
{"CFStringAppend", (PyCFunction)CFMutableStringRefObj_CFStringAppend, 1,
|
|
PyDoc_STR("(CFStringRef appendedString) -> None")},
|
|
{"CFStringAppendCharacters", (PyCFunction)CFMutableStringRefObj_CFStringAppendCharacters, 1,
|
|
PyDoc_STR("(Buffer chars) -> None")},
|
|
{"CFStringAppendPascalString", (PyCFunction)CFMutableStringRefObj_CFStringAppendPascalString, 1,
|
|
PyDoc_STR("(Str255 pStr, CFStringEncoding encoding) -> None")},
|
|
{"CFStringAppendCString", (PyCFunction)CFMutableStringRefObj_CFStringAppendCString, 1,
|
|
PyDoc_STR("(char* cStr, CFStringEncoding encoding) -> None")},
|
|
{"CFStringInsert", (PyCFunction)CFMutableStringRefObj_CFStringInsert, 1,
|
|
PyDoc_STR("(CFIndex idx, CFStringRef insertedStr) -> None")},
|
|
{"CFStringDelete", (PyCFunction)CFMutableStringRefObj_CFStringDelete, 1,
|
|
PyDoc_STR("(CFRange range) -> None")},
|
|
{"CFStringReplace", (PyCFunction)CFMutableStringRefObj_CFStringReplace, 1,
|
|
PyDoc_STR("(CFRange range, CFStringRef replacement) -> None")},
|
|
{"CFStringReplaceAll", (PyCFunction)CFMutableStringRefObj_CFStringReplaceAll, 1,
|
|
PyDoc_STR("(CFStringRef replacement) -> None")},
|
|
{"CFStringPad", (PyCFunction)CFMutableStringRefObj_CFStringPad, 1,
|
|
PyDoc_STR("(CFStringRef padString, CFIndex length, CFIndex indexIntoPad) -> None")},
|
|
{"CFStringTrim", (PyCFunction)CFMutableStringRefObj_CFStringTrim, 1,
|
|
PyDoc_STR("(CFStringRef trimString) -> None")},
|
|
{"CFStringTrimWhitespace", (PyCFunction)CFMutableStringRefObj_CFStringTrimWhitespace, 1,
|
|
PyDoc_STR("() -> None")},
|
|
{NULL, NULL, 0}
|
|
};
|
|
|
|
#define CFMutableStringRefObj_getsetlist NULL
|
|
|
|
|
|
static int CFMutableStringRefObj_compare(CFMutableStringRefObject *self, CFMutableStringRefObject *other)
|
|
{
|
|
/* XXXX Or should we use CFEqual?? */
|
|
if ( self->ob_itself > other->ob_itself ) return 1;
|
|
if ( self->ob_itself < other->ob_itself ) return -1;
|
|
return 0;
|
|
}
|
|
|
|
static PyObject * CFMutableStringRefObj_repr(CFMutableStringRefObject *self)
|
|
{
|
|
char buf[100];
|
|
sprintf(buf, "<CFMutableStringRef object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself);
|
|
return PyUnicode_FromString(buf);
|
|
}
|
|
|
|
static int CFMutableStringRefObj_hash(CFMutableStringRefObject *self)
|
|
{
|
|
/* XXXX Or should we use CFHash?? */
|
|
return (int)self->ob_itself;
|
|
}
|
|
static int CFMutableStringRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds)
|
|
{
|
|
CFMutableStringRef itself;
|
|
char *kw[] = {"itself", 0};
|
|
|
|
if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFMutableStringRefObj_Convert, &itself))
|
|
{
|
|
((CFMutableStringRefObject *)_self)->ob_itself = itself;
|
|
return 0;
|
|
}
|
|
|
|
/* Any CFTypeRef descendent is allowed as initializer too */
|
|
if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself))
|
|
{
|
|
((CFMutableStringRefObject *)_self)->ob_itself = itself;
|
|
return 0;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
#define CFMutableStringRefObj_tp_alloc PyType_GenericAlloc
|
|
|
|
static PyObject *CFMutableStringRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)
|
|
{
|
|
PyObject *self;
|
|
if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;
|
|
((CFMutableStringRefObject *)self)->ob_itself = NULL;
|
|
((CFMutableStringRefObject *)self)->ob_freeit = CFRelease;
|
|
return self;
|
|
}
|
|
|
|
#define CFMutableStringRefObj_tp_free PyObject_Del
|
|
|
|
|
|
PyTypeObject CFMutableStringRef_Type = {
|
|
PyVarObject_HEAD_INIT(NULL, 0)
|
|
"_CF.CFMutableStringRef", /*tp_name*/
|
|
sizeof(CFMutableStringRefObject), /*tp_basicsize*/
|
|
0, /*tp_itemsize*/
|
|
/* methods */
|
|
(destructor) CFMutableStringRefObj_dealloc, /*tp_dealloc*/
|
|
0, /*tp_print*/
|
|
(getattrfunc)0, /*tp_getattr*/
|
|
(setattrfunc)0, /*tp_setattr*/
|
|
(cmpfunc) CFMutableStringRefObj_compare, /*tp_compare*/
|
|
(reprfunc) CFMutableStringRefObj_repr, /*tp_repr*/
|
|
(PyNumberMethods *)0, /* tp_as_number */
|
|
(PySequenceMethods *)0, /* tp_as_sequence */
|
|
(PyMappingMethods *)0, /* tp_as_mapping */
|
|
(hashfunc) CFMutableStringRefObj_hash, /*tp_hash*/
|
|
0, /*tp_call*/
|
|
0, /*tp_str*/
|
|
PyObject_GenericGetAttr, /*tp_getattro*/
|
|
PyObject_GenericSetAttr, /*tp_setattro */
|
|
0, /*tp_as_buffer*/
|
|
Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */
|
|
0, /*tp_doc*/
|
|
0, /*tp_traverse*/
|
|
0, /*tp_clear*/
|
|
0, /*tp_richcompare*/
|
|
0, /*tp_weaklistoffset*/
|
|
0, /*tp_iter*/
|
|
0, /*tp_iternext*/
|
|
CFMutableStringRefObj_methods, /* tp_methods */
|
|
0, /*tp_members*/
|
|
CFMutableStringRefObj_getsetlist, /*tp_getset*/
|
|
0, /*tp_base*/
|
|
0, /*tp_dict*/
|
|
0, /*tp_descr_get*/
|
|
0, /*tp_descr_set*/
|
|
0, /*tp_dictoffset*/
|
|
CFMutableStringRefObj_tp_init, /* tp_init */
|
|
CFMutableStringRefObj_tp_alloc, /* tp_alloc */
|
|
CFMutableStringRefObj_tp_new, /* tp_new */
|
|
CFMutableStringRefObj_tp_free, /* tp_free */
|
|
};
|
|
|
|
/* --------------- End object type CFMutableStringRef --------------- */
|
|
|
|
|
|
/* ---------------------- Object type CFURLRef ---------------------- */
|
|
|
|
PyTypeObject CFURLRef_Type;
|
|
|
|
#define CFURLRefObj_Check(x) (Py_Type(x) == &CFURLRef_Type || PyObject_TypeCheck((x), &CFURLRef_Type))
|
|
|
|
typedef struct CFURLRefObject {
|
|
PyObject_HEAD
|
|
CFURLRef ob_itself;
|
|
void (*ob_freeit)(CFTypeRef ptr);
|
|
} CFURLRefObject;
|
|
|
|
PyObject *CFURLRefObj_New(CFURLRef itself)
|
|
{
|
|
CFURLRefObject *it;
|
|
if (itself == NULL)
|
|
{
|
|
PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");
|
|
return NULL;
|
|
}
|
|
it = PyObject_NEW(CFURLRefObject, &CFURLRef_Type);
|
|
if (it == NULL) return NULL;
|
|
/* XXXX Should we tp_init or tp_new our basetype? */
|
|
it->ob_itself = itself;
|
|
it->ob_freeit = CFRelease;
|
|
return (PyObject *)it;
|
|
}
|
|
|
|
int CFURLRefObj_Convert(PyObject *v, CFURLRef *p_itself)
|
|
{
|
|
|
|
if (v == Py_None) { *p_itself = NULL; return 1; }
|
|
/* Check for other CF objects here */
|
|
|
|
if (!CFURLRefObj_Check(v))
|
|
{
|
|
PyErr_SetString(PyExc_TypeError, "CFURLRef required");
|
|
return 0;
|
|
}
|
|
*p_itself = ((CFURLRefObject *)v)->ob_itself;
|
|
return 1;
|
|
}
|
|
|
|
static void CFURLRefObj_dealloc(CFURLRefObject *self)
|
|
{
|
|
if (self->ob_freeit && self->ob_itself)
|
|
{
|
|
self->ob_freeit((CFTypeRef)self->ob_itself);
|
|
self->ob_itself = NULL;
|
|
}
|
|
CFTypeRef_Type.tp_dealloc((PyObject *)self);
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLCreateData(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFDataRef _rv;
|
|
CFStringEncoding encoding;
|
|
Boolean escapeWhitespace;
|
|
if (!PyArg_ParseTuple(_args, "ll",
|
|
&encoding,
|
|
&escapeWhitespace))
|
|
return NULL;
|
|
_rv = CFURLCreateData((CFAllocatorRef)NULL,
|
|
_self->ob_itself,
|
|
encoding,
|
|
escapeWhitespace);
|
|
_res = Py_BuildValue("O&",
|
|
CFDataRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLGetFileSystemRepresentation(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
Boolean _rv;
|
|
Boolean resolveAgainstBase;
|
|
UInt8 buffer;
|
|
CFIndex maxBufLen;
|
|
#ifndef CFURLGetFileSystemRepresentation
|
|
PyMac_PRECHECK(CFURLGetFileSystemRepresentation);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "ll",
|
|
&resolveAgainstBase,
|
|
&maxBufLen))
|
|
return NULL;
|
|
_rv = CFURLGetFileSystemRepresentation(_self->ob_itself,
|
|
resolveAgainstBase,
|
|
&buffer,
|
|
maxBufLen);
|
|
_res = Py_BuildValue("lb",
|
|
_rv,
|
|
buffer);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLCopyAbsoluteURL(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFURLRef _rv;
|
|
#ifndef CFURLCopyAbsoluteURL
|
|
PyMac_PRECHECK(CFURLCopyAbsoluteURL);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFURLCopyAbsoluteURL(_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
CFURLRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLGetString(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
#ifndef CFURLGetString
|
|
PyMac_PRECHECK(CFURLGetString);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFURLGetString(_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLGetBaseURL(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFURLRef _rv;
|
|
#ifndef CFURLGetBaseURL
|
|
PyMac_PRECHECK(CFURLGetBaseURL);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFURLGetBaseURL(_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
CFURLRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLCanBeDecomposed(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
Boolean _rv;
|
|
#ifndef CFURLCanBeDecomposed
|
|
PyMac_PRECHECK(CFURLCanBeDecomposed);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFURLCanBeDecomposed(_self->ob_itself);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLCopyScheme(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
#ifndef CFURLCopyScheme
|
|
PyMac_PRECHECK(CFURLCopyScheme);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFURLCopyScheme(_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLCopyNetLocation(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
#ifndef CFURLCopyNetLocation
|
|
PyMac_PRECHECK(CFURLCopyNetLocation);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFURLCopyNetLocation(_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLCopyPath(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
#ifndef CFURLCopyPath
|
|
PyMac_PRECHECK(CFURLCopyPath);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFURLCopyPath(_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLCopyStrictPath(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
Boolean isAbsolute;
|
|
#ifndef CFURLCopyStrictPath
|
|
PyMac_PRECHECK(CFURLCopyStrictPath);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFURLCopyStrictPath(_self->ob_itself,
|
|
&isAbsolute);
|
|
_res = Py_BuildValue("O&l",
|
|
CFStringRefObj_New, _rv,
|
|
isAbsolute);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLCopyFileSystemPath(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
CFURLPathStyle pathStyle;
|
|
#ifndef CFURLCopyFileSystemPath
|
|
PyMac_PRECHECK(CFURLCopyFileSystemPath);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "l",
|
|
&pathStyle))
|
|
return NULL;
|
|
_rv = CFURLCopyFileSystemPath(_self->ob_itself,
|
|
pathStyle);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLHasDirectoryPath(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
Boolean _rv;
|
|
#ifndef CFURLHasDirectoryPath
|
|
PyMac_PRECHECK(CFURLHasDirectoryPath);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFURLHasDirectoryPath(_self->ob_itself);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLCopyResourceSpecifier(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
#ifndef CFURLCopyResourceSpecifier
|
|
PyMac_PRECHECK(CFURLCopyResourceSpecifier);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFURLCopyResourceSpecifier(_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLCopyHostName(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
#ifndef CFURLCopyHostName
|
|
PyMac_PRECHECK(CFURLCopyHostName);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFURLCopyHostName(_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLGetPortNumber(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
SInt32 _rv;
|
|
#ifndef CFURLGetPortNumber
|
|
PyMac_PRECHECK(CFURLGetPortNumber);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFURLGetPortNumber(_self->ob_itself);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLCopyUserName(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
#ifndef CFURLCopyUserName
|
|
PyMac_PRECHECK(CFURLCopyUserName);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFURLCopyUserName(_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLCopyPassword(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
#ifndef CFURLCopyPassword
|
|
PyMac_PRECHECK(CFURLCopyPassword);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFURLCopyPassword(_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLCopyParameterString(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
CFStringRef charactersToLeaveEscaped;
|
|
#ifndef CFURLCopyParameterString
|
|
PyMac_PRECHECK(CFURLCopyParameterString);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
CFStringRefObj_Convert, &charactersToLeaveEscaped))
|
|
return NULL;
|
|
_rv = CFURLCopyParameterString(_self->ob_itself,
|
|
charactersToLeaveEscaped);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLCopyQueryString(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
CFStringRef charactersToLeaveEscaped;
|
|
#ifndef CFURLCopyQueryString
|
|
PyMac_PRECHECK(CFURLCopyQueryString);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
CFStringRefObj_Convert, &charactersToLeaveEscaped))
|
|
return NULL;
|
|
_rv = CFURLCopyQueryString(_self->ob_itself,
|
|
charactersToLeaveEscaped);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLCopyFragment(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
CFStringRef charactersToLeaveEscaped;
|
|
#ifndef CFURLCopyFragment
|
|
PyMac_PRECHECK(CFURLCopyFragment);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
CFStringRefObj_Convert, &charactersToLeaveEscaped))
|
|
return NULL;
|
|
_rv = CFURLCopyFragment(_self->ob_itself,
|
|
charactersToLeaveEscaped);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLCopyLastPathComponent(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
#ifndef CFURLCopyLastPathComponent
|
|
PyMac_PRECHECK(CFURLCopyLastPathComponent);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFURLCopyLastPathComponent(_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLCopyPathExtension(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
#ifndef CFURLCopyPathExtension
|
|
PyMac_PRECHECK(CFURLCopyPathExtension);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFURLCopyPathExtension(_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLCreateCopyAppendingPathComponent(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFURLRef _rv;
|
|
CFStringRef pathComponent;
|
|
Boolean isDirectory;
|
|
if (!PyArg_ParseTuple(_args, "O&l",
|
|
CFStringRefObj_Convert, &pathComponent,
|
|
&isDirectory))
|
|
return NULL;
|
|
_rv = CFURLCreateCopyAppendingPathComponent((CFAllocatorRef)NULL,
|
|
_self->ob_itself,
|
|
pathComponent,
|
|
isDirectory);
|
|
_res = Py_BuildValue("O&",
|
|
CFURLRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLCreateCopyDeletingLastPathComponent(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFURLRef _rv;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFURLCreateCopyDeletingLastPathComponent((CFAllocatorRef)NULL,
|
|
_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
CFURLRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLCreateCopyAppendingPathExtension(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFURLRef _rv;
|
|
CFStringRef extension;
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
CFStringRefObj_Convert, &extension))
|
|
return NULL;
|
|
_rv = CFURLCreateCopyAppendingPathExtension((CFAllocatorRef)NULL,
|
|
_self->ob_itself,
|
|
extension);
|
|
_res = Py_BuildValue("O&",
|
|
CFURLRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLCreateCopyDeletingPathExtension(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFURLRef _rv;
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFURLCreateCopyDeletingPathExtension((CFAllocatorRef)NULL,
|
|
_self->ob_itself);
|
|
_res = Py_BuildValue("O&",
|
|
CFURLRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CFURLRefObj_CFURLGetFSRef(CFURLRefObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
Boolean _rv;
|
|
FSRef fsRef;
|
|
#ifndef CFURLGetFSRef
|
|
PyMac_PRECHECK(CFURLGetFSRef);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFURLGetFSRef(_self->ob_itself,
|
|
&fsRef);
|
|
_res = Py_BuildValue("lO&",
|
|
_rv,
|
|
PyMac_BuildFSRef, &fsRef);
|
|
return _res;
|
|
}
|
|
|
|
static PyMethodDef CFURLRefObj_methods[] = {
|
|
{"CFURLCreateData", (PyCFunction)CFURLRefObj_CFURLCreateData, 1,
|
|
PyDoc_STR("(CFStringEncoding encoding, Boolean escapeWhitespace) -> (CFDataRef _rv)")},
|
|
{"CFURLGetFileSystemRepresentation", (PyCFunction)CFURLRefObj_CFURLGetFileSystemRepresentation, 1,
|
|
PyDoc_STR("(Boolean resolveAgainstBase, CFIndex maxBufLen) -> (Boolean _rv, UInt8 buffer)")},
|
|
{"CFURLCopyAbsoluteURL", (PyCFunction)CFURLRefObj_CFURLCopyAbsoluteURL, 1,
|
|
PyDoc_STR("() -> (CFURLRef _rv)")},
|
|
{"CFURLGetString", (PyCFunction)CFURLRefObj_CFURLGetString, 1,
|
|
PyDoc_STR("() -> (CFStringRef _rv)")},
|
|
{"CFURLGetBaseURL", (PyCFunction)CFURLRefObj_CFURLGetBaseURL, 1,
|
|
PyDoc_STR("() -> (CFURLRef _rv)")},
|
|
{"CFURLCanBeDecomposed", (PyCFunction)CFURLRefObj_CFURLCanBeDecomposed, 1,
|
|
PyDoc_STR("() -> (Boolean _rv)")},
|
|
{"CFURLCopyScheme", (PyCFunction)CFURLRefObj_CFURLCopyScheme, 1,
|
|
PyDoc_STR("() -> (CFStringRef _rv)")},
|
|
{"CFURLCopyNetLocation", (PyCFunction)CFURLRefObj_CFURLCopyNetLocation, 1,
|
|
PyDoc_STR("() -> (CFStringRef _rv)")},
|
|
{"CFURLCopyPath", (PyCFunction)CFURLRefObj_CFURLCopyPath, 1,
|
|
PyDoc_STR("() -> (CFStringRef _rv)")},
|
|
{"CFURLCopyStrictPath", (PyCFunction)CFURLRefObj_CFURLCopyStrictPath, 1,
|
|
PyDoc_STR("() -> (CFStringRef _rv, Boolean isAbsolute)")},
|
|
{"CFURLCopyFileSystemPath", (PyCFunction)CFURLRefObj_CFURLCopyFileSystemPath, 1,
|
|
PyDoc_STR("(CFURLPathStyle pathStyle) -> (CFStringRef _rv)")},
|
|
{"CFURLHasDirectoryPath", (PyCFunction)CFURLRefObj_CFURLHasDirectoryPath, 1,
|
|
PyDoc_STR("() -> (Boolean _rv)")},
|
|
{"CFURLCopyResourceSpecifier", (PyCFunction)CFURLRefObj_CFURLCopyResourceSpecifier, 1,
|
|
PyDoc_STR("() -> (CFStringRef _rv)")},
|
|
{"CFURLCopyHostName", (PyCFunction)CFURLRefObj_CFURLCopyHostName, 1,
|
|
PyDoc_STR("() -> (CFStringRef _rv)")},
|
|
{"CFURLGetPortNumber", (PyCFunction)CFURLRefObj_CFURLGetPortNumber, 1,
|
|
PyDoc_STR("() -> (SInt32 _rv)")},
|
|
{"CFURLCopyUserName", (PyCFunction)CFURLRefObj_CFURLCopyUserName, 1,
|
|
PyDoc_STR("() -> (CFStringRef _rv)")},
|
|
{"CFURLCopyPassword", (PyCFunction)CFURLRefObj_CFURLCopyPassword, 1,
|
|
PyDoc_STR("() -> (CFStringRef _rv)")},
|
|
{"CFURLCopyParameterString", (PyCFunction)CFURLRefObj_CFURLCopyParameterString, 1,
|
|
PyDoc_STR("(CFStringRef charactersToLeaveEscaped) -> (CFStringRef _rv)")},
|
|
{"CFURLCopyQueryString", (PyCFunction)CFURLRefObj_CFURLCopyQueryString, 1,
|
|
PyDoc_STR("(CFStringRef charactersToLeaveEscaped) -> (CFStringRef _rv)")},
|
|
{"CFURLCopyFragment", (PyCFunction)CFURLRefObj_CFURLCopyFragment, 1,
|
|
PyDoc_STR("(CFStringRef charactersToLeaveEscaped) -> (CFStringRef _rv)")},
|
|
{"CFURLCopyLastPathComponent", (PyCFunction)CFURLRefObj_CFURLCopyLastPathComponent, 1,
|
|
PyDoc_STR("() -> (CFStringRef _rv)")},
|
|
{"CFURLCopyPathExtension", (PyCFunction)CFURLRefObj_CFURLCopyPathExtension, 1,
|
|
PyDoc_STR("() -> (CFStringRef _rv)")},
|
|
{"CFURLCreateCopyAppendingPathComponent", (PyCFunction)CFURLRefObj_CFURLCreateCopyAppendingPathComponent, 1,
|
|
PyDoc_STR("(CFStringRef pathComponent, Boolean isDirectory) -> (CFURLRef _rv)")},
|
|
{"CFURLCreateCopyDeletingLastPathComponent", (PyCFunction)CFURLRefObj_CFURLCreateCopyDeletingLastPathComponent, 1,
|
|
PyDoc_STR("() -> (CFURLRef _rv)")},
|
|
{"CFURLCreateCopyAppendingPathExtension", (PyCFunction)CFURLRefObj_CFURLCreateCopyAppendingPathExtension, 1,
|
|
PyDoc_STR("(CFStringRef extension) -> (CFURLRef _rv)")},
|
|
{"CFURLCreateCopyDeletingPathExtension", (PyCFunction)CFURLRefObj_CFURLCreateCopyDeletingPathExtension, 1,
|
|
PyDoc_STR("() -> (CFURLRef _rv)")},
|
|
{"CFURLGetFSRef", (PyCFunction)CFURLRefObj_CFURLGetFSRef, 1,
|
|
PyDoc_STR("() -> (Boolean _rv, FSRef fsRef)")},
|
|
{NULL, NULL, 0}
|
|
};
|
|
|
|
#define CFURLRefObj_getsetlist NULL
|
|
|
|
|
|
static int CFURLRefObj_compare(CFURLRefObject *self, CFURLRefObject *other)
|
|
{
|
|
/* XXXX Or should we use CFEqual?? */
|
|
if ( self->ob_itself > other->ob_itself ) return 1;
|
|
if ( self->ob_itself < other->ob_itself ) return -1;
|
|
return 0;
|
|
}
|
|
|
|
static PyObject * CFURLRefObj_repr(CFURLRefObject *self)
|
|
{
|
|
char buf[100];
|
|
sprintf(buf, "<CFURL object at 0x%8.8x for 0x%8.8x>", (unsigned)self, (unsigned)self->ob_itself);
|
|
return PyUnicode_FromString(buf);
|
|
}
|
|
|
|
static int CFURLRefObj_hash(CFURLRefObject *self)
|
|
{
|
|
/* XXXX Or should we use CFHash?? */
|
|
return (int)self->ob_itself;
|
|
}
|
|
static int CFURLRefObj_tp_init(PyObject *_self, PyObject *_args, PyObject *_kwds)
|
|
{
|
|
CFURLRef itself;
|
|
char *kw[] = {"itself", 0};
|
|
|
|
if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFURLRefObj_Convert, &itself))
|
|
{
|
|
((CFURLRefObject *)_self)->ob_itself = itself;
|
|
return 0;
|
|
}
|
|
|
|
/* Any CFTypeRef descendent is allowed as initializer too */
|
|
if (PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, CFTypeRefObj_Convert, &itself))
|
|
{
|
|
((CFURLRefObject *)_self)->ob_itself = itself;
|
|
return 0;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
#define CFURLRefObj_tp_alloc PyType_GenericAlloc
|
|
|
|
static PyObject *CFURLRefObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)
|
|
{
|
|
PyObject *self;
|
|
if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;
|
|
((CFURLRefObject *)self)->ob_itself = NULL;
|
|
((CFURLRefObject *)self)->ob_freeit = CFRelease;
|
|
return self;
|
|
}
|
|
|
|
#define CFURLRefObj_tp_free PyObject_Del
|
|
|
|
|
|
PyTypeObject CFURLRef_Type = {
|
|
PyVarObject_HEAD_INIT(NULL, 0)
|
|
"_CF.CFURLRef", /*tp_name*/
|
|
sizeof(CFURLRefObject), /*tp_basicsize*/
|
|
0, /*tp_itemsize*/
|
|
/* methods */
|
|
(destructor) CFURLRefObj_dealloc, /*tp_dealloc*/
|
|
0, /*tp_print*/
|
|
(getattrfunc)0, /*tp_getattr*/
|
|
(setattrfunc)0, /*tp_setattr*/
|
|
(cmpfunc) CFURLRefObj_compare, /*tp_compare*/
|
|
(reprfunc) CFURLRefObj_repr, /*tp_repr*/
|
|
(PyNumberMethods *)0, /* tp_as_number */
|
|
(PySequenceMethods *)0, /* tp_as_sequence */
|
|
(PyMappingMethods *)0, /* tp_as_mapping */
|
|
(hashfunc) CFURLRefObj_hash, /*tp_hash*/
|
|
0, /*tp_call*/
|
|
0, /*tp_str*/
|
|
PyObject_GenericGetAttr, /*tp_getattro*/
|
|
PyObject_GenericSetAttr, /*tp_setattro */
|
|
0, /*tp_as_buffer*/
|
|
Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */
|
|
0, /*tp_doc*/
|
|
0, /*tp_traverse*/
|
|
0, /*tp_clear*/
|
|
0, /*tp_richcompare*/
|
|
0, /*tp_weaklistoffset*/
|
|
0, /*tp_iter*/
|
|
0, /*tp_iternext*/
|
|
CFURLRefObj_methods, /* tp_methods */
|
|
0, /*tp_members*/
|
|
CFURLRefObj_getsetlist, /*tp_getset*/
|
|
0, /*tp_base*/
|
|
0, /*tp_dict*/
|
|
0, /*tp_descr_get*/
|
|
0, /*tp_descr_set*/
|
|
0, /*tp_dictoffset*/
|
|
CFURLRefObj_tp_init, /* tp_init */
|
|
CFURLRefObj_tp_alloc, /* tp_alloc */
|
|
CFURLRefObj_tp_new, /* tp_new */
|
|
CFURLRefObj_tp_free, /* tp_free */
|
|
};
|
|
|
|
/* -------------------- End object type CFURLRef -------------------- */
|
|
|
|
|
|
static PyObject *CF___CFRangeMake(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFRange _rv;
|
|
CFIndex loc;
|
|
CFIndex len;
|
|
#ifndef __CFRangeMake
|
|
PyMac_PRECHECK(__CFRangeMake);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "ll",
|
|
&loc,
|
|
&len))
|
|
return NULL;
|
|
_rv = __CFRangeMake(loc,
|
|
len);
|
|
_res = Py_BuildValue("O&",
|
|
CFRange_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFAllocatorGetTypeID(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFTypeID _rv;
|
|
#ifndef CFAllocatorGetTypeID
|
|
PyMac_PRECHECK(CFAllocatorGetTypeID);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFAllocatorGetTypeID();
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFAllocatorGetPreferredSizeForSize(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFIndex _rv;
|
|
CFIndex size;
|
|
CFOptionFlags hint;
|
|
#ifndef CFAllocatorGetPreferredSizeForSize
|
|
PyMac_PRECHECK(CFAllocatorGetPreferredSizeForSize);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "ll",
|
|
&size,
|
|
&hint))
|
|
return NULL;
|
|
_rv = CFAllocatorGetPreferredSizeForSize((CFAllocatorRef)NULL,
|
|
size,
|
|
hint);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFCopyTypeIDDescription(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
CFTypeID type_id;
|
|
#ifndef CFCopyTypeIDDescription
|
|
PyMac_PRECHECK(CFCopyTypeIDDescription);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "l",
|
|
&type_id))
|
|
return NULL;
|
|
_rv = CFCopyTypeIDDescription(type_id);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFArrayGetTypeID(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFTypeID _rv;
|
|
#ifndef CFArrayGetTypeID
|
|
PyMac_PRECHECK(CFArrayGetTypeID);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFArrayGetTypeID();
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFArrayCreateMutable(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFMutableArrayRef _rv;
|
|
CFIndex capacity;
|
|
#ifndef CFArrayCreateMutable
|
|
PyMac_PRECHECK(CFArrayCreateMutable);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "l",
|
|
&capacity))
|
|
return NULL;
|
|
_rv = CFArrayCreateMutable((CFAllocatorRef)NULL,
|
|
capacity,
|
|
&kCFTypeArrayCallBacks);
|
|
_res = Py_BuildValue("O&",
|
|
CFMutableArrayRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFArrayCreateMutableCopy(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFMutableArrayRef _rv;
|
|
CFIndex capacity;
|
|
CFArrayRef theArray;
|
|
#ifndef CFArrayCreateMutableCopy
|
|
PyMac_PRECHECK(CFArrayCreateMutableCopy);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "lO&",
|
|
&capacity,
|
|
CFArrayRefObj_Convert, &theArray))
|
|
return NULL;
|
|
_rv = CFArrayCreateMutableCopy((CFAllocatorRef)NULL,
|
|
capacity,
|
|
theArray);
|
|
_res = Py_BuildValue("O&",
|
|
CFMutableArrayRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFDataGetTypeID(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFTypeID _rv;
|
|
#ifndef CFDataGetTypeID
|
|
PyMac_PRECHECK(CFDataGetTypeID);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFDataGetTypeID();
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFDataCreate(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFDataRef _rv;
|
|
unsigned char *bytes__in__;
|
|
long bytes__len__;
|
|
int bytes__in_len__;
|
|
#ifndef CFDataCreate
|
|
PyMac_PRECHECK(CFDataCreate);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "s#",
|
|
&bytes__in__, &bytes__in_len__))
|
|
return NULL;
|
|
bytes__len__ = bytes__in_len__;
|
|
_rv = CFDataCreate((CFAllocatorRef)NULL,
|
|
bytes__in__, bytes__len__);
|
|
_res = Py_BuildValue("O&",
|
|
CFDataRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFDataCreateWithBytesNoCopy(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFDataRef _rv;
|
|
unsigned char *bytes__in__;
|
|
long bytes__len__;
|
|
int bytes__in_len__;
|
|
#ifndef CFDataCreateWithBytesNoCopy
|
|
PyMac_PRECHECK(CFDataCreateWithBytesNoCopy);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "s#",
|
|
&bytes__in__, &bytes__in_len__))
|
|
return NULL;
|
|
bytes__len__ = bytes__in_len__;
|
|
_rv = CFDataCreateWithBytesNoCopy((CFAllocatorRef)NULL,
|
|
bytes__in__, bytes__len__,
|
|
(CFAllocatorRef)NULL);
|
|
_res = Py_BuildValue("O&",
|
|
CFDataRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFDataCreateMutable(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFMutableDataRef _rv;
|
|
CFIndex capacity;
|
|
#ifndef CFDataCreateMutable
|
|
PyMac_PRECHECK(CFDataCreateMutable);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "l",
|
|
&capacity))
|
|
return NULL;
|
|
_rv = CFDataCreateMutable((CFAllocatorRef)NULL,
|
|
capacity);
|
|
_res = Py_BuildValue("O&",
|
|
CFMutableDataRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFDataCreateMutableCopy(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFMutableDataRef _rv;
|
|
CFIndex capacity;
|
|
CFDataRef theData;
|
|
#ifndef CFDataCreateMutableCopy
|
|
PyMac_PRECHECK(CFDataCreateMutableCopy);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "lO&",
|
|
&capacity,
|
|
CFDataRefObj_Convert, &theData))
|
|
return NULL;
|
|
_rv = CFDataCreateMutableCopy((CFAllocatorRef)NULL,
|
|
capacity,
|
|
theData);
|
|
_res = Py_BuildValue("O&",
|
|
CFMutableDataRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFDictionaryGetTypeID(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFTypeID _rv;
|
|
#ifndef CFDictionaryGetTypeID
|
|
PyMac_PRECHECK(CFDictionaryGetTypeID);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFDictionaryGetTypeID();
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFDictionaryCreateMutable(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFMutableDictionaryRef _rv;
|
|
CFIndex capacity;
|
|
#ifndef CFDictionaryCreateMutable
|
|
PyMac_PRECHECK(CFDictionaryCreateMutable);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "l",
|
|
&capacity))
|
|
return NULL;
|
|
_rv = CFDictionaryCreateMutable((CFAllocatorRef)NULL,
|
|
capacity,
|
|
&kCFTypeDictionaryKeyCallBacks,
|
|
&kCFTypeDictionaryValueCallBacks);
|
|
_res = Py_BuildValue("O&",
|
|
CFMutableDictionaryRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFDictionaryCreateMutableCopy(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFMutableDictionaryRef _rv;
|
|
CFIndex capacity;
|
|
CFDictionaryRef theDict;
|
|
#ifndef CFDictionaryCreateMutableCopy
|
|
PyMac_PRECHECK(CFDictionaryCreateMutableCopy);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "lO&",
|
|
&capacity,
|
|
CFDictionaryRefObj_Convert, &theDict))
|
|
return NULL;
|
|
_rv = CFDictionaryCreateMutableCopy((CFAllocatorRef)NULL,
|
|
capacity,
|
|
theDict);
|
|
_res = Py_BuildValue("O&",
|
|
CFMutableDictionaryRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFPreferencesCopyAppValue(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFTypeRef _rv;
|
|
CFStringRef key;
|
|
CFStringRef applicationID;
|
|
#ifndef CFPreferencesCopyAppValue
|
|
PyMac_PRECHECK(CFPreferencesCopyAppValue);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&O&",
|
|
CFStringRefObj_Convert, &key,
|
|
CFStringRefObj_Convert, &applicationID))
|
|
return NULL;
|
|
_rv = CFPreferencesCopyAppValue(key,
|
|
applicationID);
|
|
_res = Py_BuildValue("O&",
|
|
CFTypeRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFPreferencesGetAppBooleanValue(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
Boolean _rv;
|
|
CFStringRef key;
|
|
CFStringRef applicationID;
|
|
Boolean keyExistsAndHasValidFormat;
|
|
#ifndef CFPreferencesGetAppBooleanValue
|
|
PyMac_PRECHECK(CFPreferencesGetAppBooleanValue);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&O&",
|
|
CFStringRefObj_Convert, &key,
|
|
CFStringRefObj_Convert, &applicationID))
|
|
return NULL;
|
|
_rv = CFPreferencesGetAppBooleanValue(key,
|
|
applicationID,
|
|
&keyExistsAndHasValidFormat);
|
|
_res = Py_BuildValue("ll",
|
|
_rv,
|
|
keyExistsAndHasValidFormat);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFPreferencesGetAppIntegerValue(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFIndex _rv;
|
|
CFStringRef key;
|
|
CFStringRef applicationID;
|
|
Boolean keyExistsAndHasValidFormat;
|
|
#ifndef CFPreferencesGetAppIntegerValue
|
|
PyMac_PRECHECK(CFPreferencesGetAppIntegerValue);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&O&",
|
|
CFStringRefObj_Convert, &key,
|
|
CFStringRefObj_Convert, &applicationID))
|
|
return NULL;
|
|
_rv = CFPreferencesGetAppIntegerValue(key,
|
|
applicationID,
|
|
&keyExistsAndHasValidFormat);
|
|
_res = Py_BuildValue("ll",
|
|
_rv,
|
|
keyExistsAndHasValidFormat);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFPreferencesSetAppValue(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef key;
|
|
CFTypeRef value;
|
|
CFStringRef applicationID;
|
|
#ifndef CFPreferencesSetAppValue
|
|
PyMac_PRECHECK(CFPreferencesSetAppValue);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&O&O&",
|
|
CFStringRefObj_Convert, &key,
|
|
CFTypeRefObj_Convert, &value,
|
|
CFStringRefObj_Convert, &applicationID))
|
|
return NULL;
|
|
CFPreferencesSetAppValue(key,
|
|
value,
|
|
applicationID);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFPreferencesAddSuitePreferencesToApp(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef applicationID;
|
|
CFStringRef suiteID;
|
|
#ifndef CFPreferencesAddSuitePreferencesToApp
|
|
PyMac_PRECHECK(CFPreferencesAddSuitePreferencesToApp);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&O&",
|
|
CFStringRefObj_Convert, &applicationID,
|
|
CFStringRefObj_Convert, &suiteID))
|
|
return NULL;
|
|
CFPreferencesAddSuitePreferencesToApp(applicationID,
|
|
suiteID);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFPreferencesRemoveSuitePreferencesFromApp(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef applicationID;
|
|
CFStringRef suiteID;
|
|
#ifndef CFPreferencesRemoveSuitePreferencesFromApp
|
|
PyMac_PRECHECK(CFPreferencesRemoveSuitePreferencesFromApp);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&O&",
|
|
CFStringRefObj_Convert, &applicationID,
|
|
CFStringRefObj_Convert, &suiteID))
|
|
return NULL;
|
|
CFPreferencesRemoveSuitePreferencesFromApp(applicationID,
|
|
suiteID);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFPreferencesAppSynchronize(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
Boolean _rv;
|
|
CFStringRef applicationID;
|
|
#ifndef CFPreferencesAppSynchronize
|
|
PyMac_PRECHECK(CFPreferencesAppSynchronize);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
CFStringRefObj_Convert, &applicationID))
|
|
return NULL;
|
|
_rv = CFPreferencesAppSynchronize(applicationID);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFPreferencesCopyValue(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFTypeRef _rv;
|
|
CFStringRef key;
|
|
CFStringRef applicationID;
|
|
CFStringRef userName;
|
|
CFStringRef hostName;
|
|
#ifndef CFPreferencesCopyValue
|
|
PyMac_PRECHECK(CFPreferencesCopyValue);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&O&O&O&",
|
|
CFStringRefObj_Convert, &key,
|
|
CFStringRefObj_Convert, &applicationID,
|
|
CFStringRefObj_Convert, &userName,
|
|
CFStringRefObj_Convert, &hostName))
|
|
return NULL;
|
|
_rv = CFPreferencesCopyValue(key,
|
|
applicationID,
|
|
userName,
|
|
hostName);
|
|
_res = Py_BuildValue("O&",
|
|
CFTypeRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFPreferencesCopyMultiple(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFDictionaryRef _rv;
|
|
CFArrayRef keysToFetch;
|
|
CFStringRef applicationID;
|
|
CFStringRef userName;
|
|
CFStringRef hostName;
|
|
#ifndef CFPreferencesCopyMultiple
|
|
PyMac_PRECHECK(CFPreferencesCopyMultiple);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&O&O&O&",
|
|
CFArrayRefObj_Convert, &keysToFetch,
|
|
CFStringRefObj_Convert, &applicationID,
|
|
CFStringRefObj_Convert, &userName,
|
|
CFStringRefObj_Convert, &hostName))
|
|
return NULL;
|
|
_rv = CFPreferencesCopyMultiple(keysToFetch,
|
|
applicationID,
|
|
userName,
|
|
hostName);
|
|
_res = Py_BuildValue("O&",
|
|
CFDictionaryRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFPreferencesSetValue(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef key;
|
|
CFTypeRef value;
|
|
CFStringRef applicationID;
|
|
CFStringRef userName;
|
|
CFStringRef hostName;
|
|
#ifndef CFPreferencesSetValue
|
|
PyMac_PRECHECK(CFPreferencesSetValue);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&O&O&O&O&",
|
|
CFStringRefObj_Convert, &key,
|
|
CFTypeRefObj_Convert, &value,
|
|
CFStringRefObj_Convert, &applicationID,
|
|
CFStringRefObj_Convert, &userName,
|
|
CFStringRefObj_Convert, &hostName))
|
|
return NULL;
|
|
CFPreferencesSetValue(key,
|
|
value,
|
|
applicationID,
|
|
userName,
|
|
hostName);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFPreferencesSetMultiple(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFDictionaryRef keysToSet;
|
|
CFArrayRef keysToRemove;
|
|
CFStringRef applicationID;
|
|
CFStringRef userName;
|
|
CFStringRef hostName;
|
|
#ifndef CFPreferencesSetMultiple
|
|
PyMac_PRECHECK(CFPreferencesSetMultiple);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&O&O&O&O&",
|
|
CFDictionaryRefObj_Convert, &keysToSet,
|
|
CFArrayRefObj_Convert, &keysToRemove,
|
|
CFStringRefObj_Convert, &applicationID,
|
|
CFStringRefObj_Convert, &userName,
|
|
CFStringRefObj_Convert, &hostName))
|
|
return NULL;
|
|
CFPreferencesSetMultiple(keysToSet,
|
|
keysToRemove,
|
|
applicationID,
|
|
userName,
|
|
hostName);
|
|
Py_INCREF(Py_None);
|
|
_res = Py_None;
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFPreferencesSynchronize(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
Boolean _rv;
|
|
CFStringRef applicationID;
|
|
CFStringRef userName;
|
|
CFStringRef hostName;
|
|
#ifndef CFPreferencesSynchronize
|
|
PyMac_PRECHECK(CFPreferencesSynchronize);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&O&O&",
|
|
CFStringRefObj_Convert, &applicationID,
|
|
CFStringRefObj_Convert, &userName,
|
|
CFStringRefObj_Convert, &hostName))
|
|
return NULL;
|
|
_rv = CFPreferencesSynchronize(applicationID,
|
|
userName,
|
|
hostName);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFPreferencesCopyApplicationList(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFArrayRef _rv;
|
|
CFStringRef userName;
|
|
CFStringRef hostName;
|
|
#ifndef CFPreferencesCopyApplicationList
|
|
PyMac_PRECHECK(CFPreferencesCopyApplicationList);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&O&",
|
|
CFStringRefObj_Convert, &userName,
|
|
CFStringRefObj_Convert, &hostName))
|
|
return NULL;
|
|
_rv = CFPreferencesCopyApplicationList(userName,
|
|
hostName);
|
|
_res = Py_BuildValue("O&",
|
|
CFArrayRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFPreferencesCopyKeyList(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFArrayRef _rv;
|
|
CFStringRef applicationID;
|
|
CFStringRef userName;
|
|
CFStringRef hostName;
|
|
#ifndef CFPreferencesCopyKeyList
|
|
PyMac_PRECHECK(CFPreferencesCopyKeyList);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&O&O&",
|
|
CFStringRefObj_Convert, &applicationID,
|
|
CFStringRefObj_Convert, &userName,
|
|
CFStringRefObj_Convert, &hostName))
|
|
return NULL;
|
|
_rv = CFPreferencesCopyKeyList(applicationID,
|
|
userName,
|
|
hostName);
|
|
_res = Py_BuildValue("O&",
|
|
CFArrayRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFStringGetTypeID(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFTypeID _rv;
|
|
#ifndef CFStringGetTypeID
|
|
PyMac_PRECHECK(CFStringGetTypeID);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFStringGetTypeID();
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFStringCreateWithPascalString(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
Str255 pStr;
|
|
CFStringEncoding encoding;
|
|
#ifndef CFStringCreateWithPascalString
|
|
PyMac_PRECHECK(CFStringCreateWithPascalString);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&l",
|
|
PyMac_GetStr255, pStr,
|
|
&encoding))
|
|
return NULL;
|
|
_rv = CFStringCreateWithPascalString((CFAllocatorRef)NULL,
|
|
pStr,
|
|
encoding);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFStringCreateWithCString(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
char* cStr;
|
|
CFStringEncoding encoding;
|
|
#ifndef CFStringCreateWithCString
|
|
PyMac_PRECHECK(CFStringCreateWithCString);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "sl",
|
|
&cStr,
|
|
&encoding))
|
|
return NULL;
|
|
_rv = CFStringCreateWithCString((CFAllocatorRef)NULL,
|
|
cStr,
|
|
encoding);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFStringCreateWithCharacters(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
UniChar *chars__in__;
|
|
UniCharCount chars__len__;
|
|
int chars__in_len__;
|
|
#ifndef CFStringCreateWithCharacters
|
|
PyMac_PRECHECK(CFStringCreateWithCharacters);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "u#",
|
|
&chars__in__, &chars__in_len__))
|
|
return NULL;
|
|
chars__len__ = chars__in_len__;
|
|
_rv = CFStringCreateWithCharacters((CFAllocatorRef)NULL,
|
|
chars__in__, chars__len__);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFStringCreateWithPascalStringNoCopy(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
Str255 pStr;
|
|
CFStringEncoding encoding;
|
|
#ifndef CFStringCreateWithPascalStringNoCopy
|
|
PyMac_PRECHECK(CFStringCreateWithPascalStringNoCopy);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&l",
|
|
PyMac_GetStr255, pStr,
|
|
&encoding))
|
|
return NULL;
|
|
_rv = CFStringCreateWithPascalStringNoCopy((CFAllocatorRef)NULL,
|
|
pStr,
|
|
encoding,
|
|
(CFAllocatorRef)NULL);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFStringCreateWithCStringNoCopy(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
char* cStr;
|
|
CFStringEncoding encoding;
|
|
#ifndef CFStringCreateWithCStringNoCopy
|
|
PyMac_PRECHECK(CFStringCreateWithCStringNoCopy);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "sl",
|
|
&cStr,
|
|
&encoding))
|
|
return NULL;
|
|
_rv = CFStringCreateWithCStringNoCopy((CFAllocatorRef)NULL,
|
|
cStr,
|
|
encoding,
|
|
(CFAllocatorRef)NULL);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFStringCreateWithCharactersNoCopy(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
UniChar *chars__in__;
|
|
UniCharCount chars__len__;
|
|
int chars__in_len__;
|
|
#ifndef CFStringCreateWithCharactersNoCopy
|
|
PyMac_PRECHECK(CFStringCreateWithCharactersNoCopy);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "u#",
|
|
&chars__in__, &chars__in_len__))
|
|
return NULL;
|
|
chars__len__ = chars__in_len__;
|
|
_rv = CFStringCreateWithCharactersNoCopy((CFAllocatorRef)NULL,
|
|
chars__in__, chars__len__,
|
|
(CFAllocatorRef)NULL);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFStringCreateMutable(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFMutableStringRef _rv;
|
|
CFIndex maxLength;
|
|
#ifndef CFStringCreateMutable
|
|
PyMac_PRECHECK(CFStringCreateMutable);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "l",
|
|
&maxLength))
|
|
return NULL;
|
|
_rv = CFStringCreateMutable((CFAllocatorRef)NULL,
|
|
maxLength);
|
|
_res = Py_BuildValue("O&",
|
|
CFMutableStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFStringCreateMutableCopy(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFMutableStringRef _rv;
|
|
CFIndex maxLength;
|
|
CFStringRef theString;
|
|
#ifndef CFStringCreateMutableCopy
|
|
PyMac_PRECHECK(CFStringCreateMutableCopy);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "lO&",
|
|
&maxLength,
|
|
CFStringRefObj_Convert, &theString))
|
|
return NULL;
|
|
_rv = CFStringCreateMutableCopy((CFAllocatorRef)NULL,
|
|
maxLength,
|
|
theString);
|
|
_res = Py_BuildValue("O&",
|
|
CFMutableStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFStringCreateWithBytes(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
unsigned char *bytes__in__;
|
|
long bytes__len__;
|
|
int bytes__in_len__;
|
|
CFStringEncoding encoding;
|
|
Boolean isExternalRepresentation;
|
|
#ifndef CFStringCreateWithBytes
|
|
PyMac_PRECHECK(CFStringCreateWithBytes);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "s#ll",
|
|
&bytes__in__, &bytes__in_len__,
|
|
&encoding,
|
|
&isExternalRepresentation))
|
|
return NULL;
|
|
bytes__len__ = bytes__in_len__;
|
|
_rv = CFStringCreateWithBytes((CFAllocatorRef)NULL,
|
|
bytes__in__, bytes__len__,
|
|
encoding,
|
|
isExternalRepresentation);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFStringGetSystemEncoding(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringEncoding _rv;
|
|
#ifndef CFStringGetSystemEncoding
|
|
PyMac_PRECHECK(CFStringGetSystemEncoding);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFStringGetSystemEncoding();
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFStringGetMaximumSizeForEncoding(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFIndex _rv;
|
|
CFIndex length;
|
|
CFStringEncoding encoding;
|
|
#ifndef CFStringGetMaximumSizeForEncoding
|
|
PyMac_PRECHECK(CFStringGetMaximumSizeForEncoding);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "ll",
|
|
&length,
|
|
&encoding))
|
|
return NULL;
|
|
_rv = CFStringGetMaximumSizeForEncoding(length,
|
|
encoding);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFStringIsEncodingAvailable(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
Boolean _rv;
|
|
CFStringEncoding encoding;
|
|
#ifndef CFStringIsEncodingAvailable
|
|
PyMac_PRECHECK(CFStringIsEncodingAvailable);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "l",
|
|
&encoding))
|
|
return NULL;
|
|
_rv = CFStringIsEncodingAvailable(encoding);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFStringGetNameOfEncoding(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
CFStringEncoding encoding;
|
|
#ifndef CFStringGetNameOfEncoding
|
|
PyMac_PRECHECK(CFStringGetNameOfEncoding);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "l",
|
|
&encoding))
|
|
return NULL;
|
|
_rv = CFStringGetNameOfEncoding(encoding);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFStringConvertEncodingToNSStringEncoding(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
UInt32 _rv;
|
|
CFStringEncoding encoding;
|
|
#ifndef CFStringConvertEncodingToNSStringEncoding
|
|
PyMac_PRECHECK(CFStringConvertEncodingToNSStringEncoding);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "l",
|
|
&encoding))
|
|
return NULL;
|
|
_rv = CFStringConvertEncodingToNSStringEncoding(encoding);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFStringConvertNSStringEncodingToEncoding(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringEncoding _rv;
|
|
UInt32 encoding;
|
|
#ifndef CFStringConvertNSStringEncodingToEncoding
|
|
PyMac_PRECHECK(CFStringConvertNSStringEncodingToEncoding);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "l",
|
|
&encoding))
|
|
return NULL;
|
|
_rv = CFStringConvertNSStringEncodingToEncoding(encoding);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFStringConvertEncodingToWindowsCodepage(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
UInt32 _rv;
|
|
CFStringEncoding encoding;
|
|
#ifndef CFStringConvertEncodingToWindowsCodepage
|
|
PyMac_PRECHECK(CFStringConvertEncodingToWindowsCodepage);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "l",
|
|
&encoding))
|
|
return NULL;
|
|
_rv = CFStringConvertEncodingToWindowsCodepage(encoding);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFStringConvertWindowsCodepageToEncoding(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringEncoding _rv;
|
|
UInt32 codepage;
|
|
#ifndef CFStringConvertWindowsCodepageToEncoding
|
|
PyMac_PRECHECK(CFStringConvertWindowsCodepageToEncoding);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "l",
|
|
&codepage))
|
|
return NULL;
|
|
_rv = CFStringConvertWindowsCodepageToEncoding(codepage);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFStringConvertEncodingToIANACharSetName(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
CFStringEncoding encoding;
|
|
#ifndef CFStringConvertEncodingToIANACharSetName
|
|
PyMac_PRECHECK(CFStringConvertEncodingToIANACharSetName);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "l",
|
|
&encoding))
|
|
return NULL;
|
|
_rv = CFStringConvertEncodingToIANACharSetName(encoding);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFStringGetMostCompatibleMacStringEncoding(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringEncoding _rv;
|
|
CFStringEncoding encoding;
|
|
#ifndef CFStringGetMostCompatibleMacStringEncoding
|
|
PyMac_PRECHECK(CFStringGetMostCompatibleMacStringEncoding);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "l",
|
|
&encoding))
|
|
return NULL;
|
|
_rv = CFStringGetMostCompatibleMacStringEncoding(encoding);
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF___CFStringMakeConstantString(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFStringRef _rv;
|
|
char* cStr;
|
|
#ifndef __CFStringMakeConstantString
|
|
PyMac_PRECHECK(__CFStringMakeConstantString);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "s",
|
|
&cStr))
|
|
return NULL;
|
|
_rv = __CFStringMakeConstantString(cStr);
|
|
_res = Py_BuildValue("O&",
|
|
CFStringRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFURLGetTypeID(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFTypeID _rv;
|
|
#ifndef CFURLGetTypeID
|
|
PyMac_PRECHECK(CFURLGetTypeID);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, ""))
|
|
return NULL;
|
|
_rv = CFURLGetTypeID();
|
|
_res = Py_BuildValue("l",
|
|
_rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFURLCreateWithBytes(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFURLRef _rv;
|
|
unsigned char *URLBytes__in__;
|
|
long URLBytes__len__;
|
|
int URLBytes__in_len__;
|
|
CFStringEncoding encoding;
|
|
CFURLRef baseURL;
|
|
#ifndef CFURLCreateWithBytes
|
|
PyMac_PRECHECK(CFURLCreateWithBytes);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "s#lO&",
|
|
&URLBytes__in__, &URLBytes__in_len__,
|
|
&encoding,
|
|
OptionalCFURLRefObj_Convert, &baseURL))
|
|
return NULL;
|
|
URLBytes__len__ = URLBytes__in_len__;
|
|
_rv = CFURLCreateWithBytes((CFAllocatorRef)NULL,
|
|
URLBytes__in__, URLBytes__len__,
|
|
encoding,
|
|
baseURL);
|
|
_res = Py_BuildValue("O&",
|
|
CFURLRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFURLCreateFromFileSystemRepresentation(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFURLRef _rv;
|
|
unsigned char *buffer__in__;
|
|
long buffer__len__;
|
|
int buffer__in_len__;
|
|
Boolean isDirectory;
|
|
#ifndef CFURLCreateFromFileSystemRepresentation
|
|
PyMac_PRECHECK(CFURLCreateFromFileSystemRepresentation);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "s#l",
|
|
&buffer__in__, &buffer__in_len__,
|
|
&isDirectory))
|
|
return NULL;
|
|
buffer__len__ = buffer__in_len__;
|
|
_rv = CFURLCreateFromFileSystemRepresentation((CFAllocatorRef)NULL,
|
|
buffer__in__, buffer__len__,
|
|
isDirectory);
|
|
_res = Py_BuildValue("O&",
|
|
CFURLRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFURLCreateFromFileSystemRepresentationRelativeToBase(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFURLRef _rv;
|
|
unsigned char *buffer__in__;
|
|
long buffer__len__;
|
|
int buffer__in_len__;
|
|
Boolean isDirectory;
|
|
CFURLRef baseURL;
|
|
#ifndef CFURLCreateFromFileSystemRepresentationRelativeToBase
|
|
PyMac_PRECHECK(CFURLCreateFromFileSystemRepresentationRelativeToBase);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "s#lO&",
|
|
&buffer__in__, &buffer__in_len__,
|
|
&isDirectory,
|
|
OptionalCFURLRefObj_Convert, &baseURL))
|
|
return NULL;
|
|
buffer__len__ = buffer__in_len__;
|
|
_rv = CFURLCreateFromFileSystemRepresentationRelativeToBase((CFAllocatorRef)NULL,
|
|
buffer__in__, buffer__len__,
|
|
isDirectory,
|
|
baseURL);
|
|
_res = Py_BuildValue("O&",
|
|
CFURLRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_CFURLCreateFromFSRef(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
CFURLRef _rv;
|
|
FSRef fsRef;
|
|
#ifndef CFURLCreateFromFSRef
|
|
PyMac_PRECHECK(CFURLCreateFromFSRef);
|
|
#endif
|
|
if (!PyArg_ParseTuple(_args, "O&",
|
|
PyMac_GetFSRef, &fsRef))
|
|
return NULL;
|
|
_rv = CFURLCreateFromFSRef((CFAllocatorRef)NULL,
|
|
&fsRef);
|
|
_res = Py_BuildValue("O&",
|
|
CFURLRefObj_New, _rv);
|
|
return _res;
|
|
}
|
|
|
|
static PyObject *CF_toCF(PyObject *_self, PyObject *_args)
|
|
{
|
|
PyObject *_res = NULL;
|
|
|
|
CFTypeRef rv;
|
|
CFTypeID typeid;
|
|
|
|
if (!PyArg_ParseTuple(_args, "O&", PyCF_Python2CF, &rv))
|
|
return NULL;
|
|
typeid = CFGetTypeID(rv);
|
|
|
|
if (typeid == CFStringGetTypeID())
|
|
return Py_BuildValue("O&", CFStringRefObj_New, rv);
|
|
if (typeid == CFArrayGetTypeID())
|
|
return Py_BuildValue("O&", CFArrayRefObj_New, rv);
|
|
if (typeid == CFDictionaryGetTypeID())
|
|
return Py_BuildValue("O&", CFDictionaryRefObj_New, rv);
|
|
if (typeid == CFURLGetTypeID())
|
|
return Py_BuildValue("O&", CFURLRefObj_New, rv);
|
|
|
|
_res = Py_BuildValue("O&", CFTypeRefObj_New, rv);
|
|
return _res;
|
|
|
|
}
|
|
|
|
static PyMethodDef CF_methods[] = {
|
|
{"__CFRangeMake", (PyCFunction)CF___CFRangeMake, 1,
|
|
PyDoc_STR("(CFIndex loc, CFIndex len) -> (CFRange _rv)")},
|
|
{"CFAllocatorGetTypeID", (PyCFunction)CF_CFAllocatorGetTypeID, 1,
|
|
PyDoc_STR("() -> (CFTypeID _rv)")},
|
|
{"CFAllocatorGetPreferredSizeForSize", (PyCFunction)CF_CFAllocatorGetPreferredSizeForSize, 1,
|
|
PyDoc_STR("(CFIndex size, CFOptionFlags hint) -> (CFIndex _rv)")},
|
|
{"CFCopyTypeIDDescription", (PyCFunction)CF_CFCopyTypeIDDescription, 1,
|
|
PyDoc_STR("(CFTypeID type_id) -> (CFStringRef _rv)")},
|
|
{"CFArrayGetTypeID", (PyCFunction)CF_CFArrayGetTypeID, 1,
|
|
PyDoc_STR("() -> (CFTypeID _rv)")},
|
|
{"CFArrayCreateMutable", (PyCFunction)CF_CFArrayCreateMutable, 1,
|
|
PyDoc_STR("(CFIndex capacity) -> (CFMutableArrayRef _rv)")},
|
|
{"CFArrayCreateMutableCopy", (PyCFunction)CF_CFArrayCreateMutableCopy, 1,
|
|
PyDoc_STR("(CFIndex capacity, CFArrayRef theArray) -> (CFMutableArrayRef _rv)")},
|
|
{"CFDataGetTypeID", (PyCFunction)CF_CFDataGetTypeID, 1,
|
|
PyDoc_STR("() -> (CFTypeID _rv)")},
|
|
{"CFDataCreate", (PyCFunction)CF_CFDataCreate, 1,
|
|
PyDoc_STR("(Buffer bytes) -> (CFDataRef _rv)")},
|
|
{"CFDataCreateWithBytesNoCopy", (PyCFunction)CF_CFDataCreateWithBytesNoCopy, 1,
|
|
PyDoc_STR("(Buffer bytes) -> (CFDataRef _rv)")},
|
|
{"CFDataCreateMutable", (PyCFunction)CF_CFDataCreateMutable, 1,
|
|
PyDoc_STR("(CFIndex capacity) -> (CFMutableDataRef _rv)")},
|
|
{"CFDataCreateMutableCopy", (PyCFunction)CF_CFDataCreateMutableCopy, 1,
|
|
PyDoc_STR("(CFIndex capacity, CFDataRef theData) -> (CFMutableDataRef _rv)")},
|
|
{"CFDictionaryGetTypeID", (PyCFunction)CF_CFDictionaryGetTypeID, 1,
|
|
PyDoc_STR("() -> (CFTypeID _rv)")},
|
|
{"CFDictionaryCreateMutable", (PyCFunction)CF_CFDictionaryCreateMutable, 1,
|
|
PyDoc_STR("(CFIndex capacity) -> (CFMutableDictionaryRef _rv)")},
|
|
{"CFDictionaryCreateMutableCopy", (PyCFunction)CF_CFDictionaryCreateMutableCopy, 1,
|
|
PyDoc_STR("(CFIndex capacity, CFDictionaryRef theDict) -> (CFMutableDictionaryRef _rv)")},
|
|
{"CFPreferencesCopyAppValue", (PyCFunction)CF_CFPreferencesCopyAppValue, 1,
|
|
PyDoc_STR("(CFStringRef key, CFStringRef applicationID) -> (CFTypeRef _rv)")},
|
|
{"CFPreferencesGetAppBooleanValue", (PyCFunction)CF_CFPreferencesGetAppBooleanValue, 1,
|
|
PyDoc_STR("(CFStringRef key, CFStringRef applicationID) -> (Boolean _rv, Boolean keyExistsAndHasValidFormat)")},
|
|
{"CFPreferencesGetAppIntegerValue", (PyCFunction)CF_CFPreferencesGetAppIntegerValue, 1,
|
|
PyDoc_STR("(CFStringRef key, CFStringRef applicationID) -> (CFIndex _rv, Boolean keyExistsAndHasValidFormat)")},
|
|
{"CFPreferencesSetAppValue", (PyCFunction)CF_CFPreferencesSetAppValue, 1,
|
|
PyDoc_STR("(CFStringRef key, CFTypeRef value, CFStringRef applicationID) -> None")},
|
|
{"CFPreferencesAddSuitePreferencesToApp", (PyCFunction)CF_CFPreferencesAddSuitePreferencesToApp, 1,
|
|
PyDoc_STR("(CFStringRef applicationID, CFStringRef suiteID) -> None")},
|
|
{"CFPreferencesRemoveSuitePreferencesFromApp", (PyCFunction)CF_CFPreferencesRemoveSuitePreferencesFromApp, 1,
|
|
PyDoc_STR("(CFStringRef applicationID, CFStringRef suiteID) -> None")},
|
|
{"CFPreferencesAppSynchronize", (PyCFunction)CF_CFPreferencesAppSynchronize, 1,
|
|
PyDoc_STR("(CFStringRef applicationID) -> (Boolean _rv)")},
|
|
{"CFPreferencesCopyValue", (PyCFunction)CF_CFPreferencesCopyValue, 1,
|
|
PyDoc_STR("(CFStringRef key, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> (CFTypeRef _rv)")},
|
|
{"CFPreferencesCopyMultiple", (PyCFunction)CF_CFPreferencesCopyMultiple, 1,
|
|
PyDoc_STR("(CFArrayRef keysToFetch, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> (CFDictionaryRef _rv)")},
|
|
{"CFPreferencesSetValue", (PyCFunction)CF_CFPreferencesSetValue, 1,
|
|
PyDoc_STR("(CFStringRef key, CFTypeRef value, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> None")},
|
|
{"CFPreferencesSetMultiple", (PyCFunction)CF_CFPreferencesSetMultiple, 1,
|
|
PyDoc_STR("(CFDictionaryRef keysToSet, CFArrayRef keysToRemove, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> None")},
|
|
{"CFPreferencesSynchronize", (PyCFunction)CF_CFPreferencesSynchronize, 1,
|
|
PyDoc_STR("(CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> (Boolean _rv)")},
|
|
{"CFPreferencesCopyApplicationList", (PyCFunction)CF_CFPreferencesCopyApplicationList, 1,
|
|
PyDoc_STR("(CFStringRef userName, CFStringRef hostName) -> (CFArrayRef _rv)")},
|
|
{"CFPreferencesCopyKeyList", (PyCFunction)CF_CFPreferencesCopyKeyList, 1,
|
|
PyDoc_STR("(CFStringRef applicationID, CFStringRef userName, CFStringRef hostName) -> (CFArrayRef _rv)")},
|
|
{"CFStringGetTypeID", (PyCFunction)CF_CFStringGetTypeID, 1,
|
|
PyDoc_STR("() -> (CFTypeID _rv)")},
|
|
{"CFStringCreateWithPascalString", (PyCFunction)CF_CFStringCreateWithPascalString, 1,
|
|
PyDoc_STR("(Str255 pStr, CFStringEncoding encoding) -> (CFStringRef _rv)")},
|
|
{"CFStringCreateWithCString", (PyCFunction)CF_CFStringCreateWithCString, 1,
|
|
PyDoc_STR("(char* cStr, CFStringEncoding encoding) -> (CFStringRef _rv)")},
|
|
{"CFStringCreateWithCharacters", (PyCFunction)CF_CFStringCreateWithCharacters, 1,
|
|
PyDoc_STR("(Buffer chars) -> (CFStringRef _rv)")},
|
|
{"CFStringCreateWithPascalStringNoCopy", (PyCFunction)CF_CFStringCreateWithPascalStringNoCopy, 1,
|
|
PyDoc_STR("(Str255 pStr, CFStringEncoding encoding) -> (CFStringRef _rv)")},
|
|
{"CFStringCreateWithCStringNoCopy", (PyCFunction)CF_CFStringCreateWithCStringNoCopy, 1,
|
|
PyDoc_STR("(char* cStr, CFStringEncoding encoding) -> (CFStringRef _rv)")},
|
|
{"CFStringCreateWithCharactersNoCopy", (PyCFunction)CF_CFStringCreateWithCharactersNoCopy, 1,
|
|
PyDoc_STR("(Buffer chars) -> (CFStringRef _rv)")},
|
|
{"CFStringCreateMutable", (PyCFunction)CF_CFStringCreateMutable, 1,
|
|
PyDoc_STR("(CFIndex maxLength) -> (CFMutableStringRef _rv)")},
|
|
{"CFStringCreateMutableCopy", (PyCFunction)CF_CFStringCreateMutableCopy, 1,
|
|
PyDoc_STR("(CFIndex maxLength, CFStringRef theString) -> (CFMutableStringRef _rv)")},
|
|
{"CFStringCreateWithBytes", (PyCFunction)CF_CFStringCreateWithBytes, 1,
|
|
PyDoc_STR("(Buffer bytes, CFStringEncoding encoding, Boolean isExternalRepresentation) -> (CFStringRef _rv)")},
|
|
{"CFStringGetSystemEncoding", (PyCFunction)CF_CFStringGetSystemEncoding, 1,
|
|
PyDoc_STR("() -> (CFStringEncoding _rv)")},
|
|
{"CFStringGetMaximumSizeForEncoding", (PyCFunction)CF_CFStringGetMaximumSizeForEncoding, 1,
|
|
PyDoc_STR("(CFIndex length, CFStringEncoding encoding) -> (CFIndex _rv)")},
|
|
{"CFStringIsEncodingAvailable", (PyCFunction)CF_CFStringIsEncodingAvailable, 1,
|
|
PyDoc_STR("(CFStringEncoding encoding) -> (Boolean _rv)")},
|
|
{"CFStringGetNameOfEncoding", (PyCFunction)CF_CFStringGetNameOfEncoding, 1,
|
|
PyDoc_STR("(CFStringEncoding encoding) -> (CFStringRef _rv)")},
|
|
{"CFStringConvertEncodingToNSStringEncoding", (PyCFunction)CF_CFStringConvertEncodingToNSStringEncoding, 1,
|
|
PyDoc_STR("(CFStringEncoding encoding) -> (UInt32 _rv)")},
|
|
{"CFStringConvertNSStringEncodingToEncoding", (PyCFunction)CF_CFStringConvertNSStringEncodingToEncoding, 1,
|
|
PyDoc_STR("(UInt32 encoding) -> (CFStringEncoding _rv)")},
|
|
{"CFStringConvertEncodingToWindowsCodepage", (PyCFunction)CF_CFStringConvertEncodingToWindowsCodepage, 1,
|
|
PyDoc_STR("(CFStringEncoding encoding) -> (UInt32 _rv)")},
|
|
{"CFStringConvertWindowsCodepageToEncoding", (PyCFunction)CF_CFStringConvertWindowsCodepageToEncoding, 1,
|
|
PyDoc_STR("(UInt32 codepage) -> (CFStringEncoding _rv)")},
|
|
{"CFStringConvertEncodingToIANACharSetName", (PyCFunction)CF_CFStringConvertEncodingToIANACharSetName, 1,
|
|
PyDoc_STR("(CFStringEncoding encoding) -> (CFStringRef _rv)")},
|
|
{"CFStringGetMostCompatibleMacStringEncoding", (PyCFunction)CF_CFStringGetMostCompatibleMacStringEncoding, 1,
|
|
PyDoc_STR("(CFStringEncoding encoding) -> (CFStringEncoding _rv)")},
|
|
{"__CFStringMakeConstantString", (PyCFunction)CF___CFStringMakeConstantString, 1,
|
|
PyDoc_STR("(char* cStr) -> (CFStringRef _rv)")},
|
|
{"CFURLGetTypeID", (PyCFunction)CF_CFURLGetTypeID, 1,
|
|
PyDoc_STR("() -> (CFTypeID _rv)")},
|
|
{"CFURLCreateWithBytes", (PyCFunction)CF_CFURLCreateWithBytes, 1,
|
|
PyDoc_STR("(Buffer URLBytes, CFStringEncoding encoding, CFURLRef baseURL) -> (CFURLRef _rv)")},
|
|
{"CFURLCreateFromFileSystemRepresentation", (PyCFunction)CF_CFURLCreateFromFileSystemRepresentation, 1,
|
|
PyDoc_STR("(Buffer buffer, Boolean isDirectory) -> (CFURLRef _rv)")},
|
|
{"CFURLCreateFromFileSystemRepresentationRelativeToBase", (PyCFunction)CF_CFURLCreateFromFileSystemRepresentationRelativeToBase, 1,
|
|
PyDoc_STR("(Buffer buffer, Boolean isDirectory, CFURLRef baseURL) -> (CFURLRef _rv)")},
|
|
{"CFURLCreateFromFSRef", (PyCFunction)CF_CFURLCreateFromFSRef, 1,
|
|
PyDoc_STR("(FSRef fsRef) -> (CFURLRef _rv)")},
|
|
{"toCF", (PyCFunction)CF_toCF, 1,
|
|
PyDoc_STR("(python_object) -> (CF_object)")},
|
|
{NULL, NULL, 0}
|
|
};
|
|
|
|
|
|
|
|
|
|
/* Routines to convert any CF type to/from the corresponding CFxxxObj */
|
|
PyObject *CFObj_New(CFTypeRef itself)
|
|
{
|
|
if (itself == NULL)
|
|
{
|
|
PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");
|
|
return NULL;
|
|
}
|
|
if (CFGetTypeID(itself) == CFArrayGetTypeID()) return CFArrayRefObj_New((CFArrayRef)itself);
|
|
if (CFGetTypeID(itself) == CFDictionaryGetTypeID()) return CFDictionaryRefObj_New((CFDictionaryRef)itself);
|
|
if (CFGetTypeID(itself) == CFDataGetTypeID()) return CFDataRefObj_New((CFDataRef)itself);
|
|
if (CFGetTypeID(itself) == CFStringGetTypeID()) return CFStringRefObj_New((CFStringRef)itself);
|
|
if (CFGetTypeID(itself) == CFURLGetTypeID()) return CFURLRefObj_New((CFURLRef)itself);
|
|
/* XXXX Or should we use PyCF_CF2Python here?? */
|
|
return CFTypeRefObj_New(itself);
|
|
}
|
|
int CFObj_Convert(PyObject *v, CFTypeRef *p_itself)
|
|
{
|
|
|
|
if (v == Py_None) { *p_itself = NULL; return 1; }
|
|
/* Check for other CF objects here */
|
|
|
|
if (!CFTypeRefObj_Check(v) &&
|
|
!CFArrayRefObj_Check(v) &&
|
|
!CFMutableArrayRefObj_Check(v) &&
|
|
!CFDictionaryRefObj_Check(v) &&
|
|
!CFMutableDictionaryRefObj_Check(v) &&
|
|
!CFDataRefObj_Check(v) &&
|
|
!CFMutableDataRefObj_Check(v) &&
|
|
!CFStringRefObj_Check(v) &&
|
|
!CFMutableStringRefObj_Check(v) &&
|
|
!CFURLRefObj_Check(v) )
|
|
{
|
|
/* XXXX Or should we use PyCF_Python2CF here?? */
|
|
PyErr_SetString(PyExc_TypeError, "CF object required");
|
|
return 0;
|
|
}
|
|
*p_itself = ((CFTypeRefObject *)v)->ob_itself;
|
|
return 1;
|
|
}
|
|
|
|
|
|
void init_CF(void)
|
|
{
|
|
PyObject *m;
|
|
PyObject *d;
|
|
|
|
|
|
|
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFTypeRef, CFObj_New);
|
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFTypeRef, CFObj_Convert);
|
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFTypeRef, CFTypeRefObj_New);
|
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFTypeRef, CFTypeRefObj_Convert);
|
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFStringRef, CFStringRefObj_New);
|
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFStringRef, CFStringRefObj_Convert);
|
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFMutableStringRef, CFMutableStringRefObj_New);
|
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFMutableStringRef, CFMutableStringRefObj_Convert);
|
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFArrayRef, CFArrayRefObj_New);
|
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFArrayRef, CFArrayRefObj_Convert);
|
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFMutableArrayRef, CFMutableArrayRefObj_New);
|
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFMutableArrayRef, CFMutableArrayRefObj_Convert);
|
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFDictionaryRef, CFDictionaryRefObj_New);
|
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFDictionaryRef, CFDictionaryRefObj_Convert);
|
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFMutableDictionaryRef, CFMutableDictionaryRefObj_New);
|
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFMutableDictionaryRef, CFMutableDictionaryRefObj_Convert);
|
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFURLRef, CFURLRefObj_New);
|
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFURLRef, CFURLRefObj_Convert);
|
|
|
|
|
|
m = Py_InitModule("_CF", CF_methods);
|
|
d = PyModule_GetDict(m);
|
|
CF_Error = PyMac_GetOSErrException();
|
|
if (CF_Error == NULL ||
|
|
PyDict_SetItemString(d, "Error", CF_Error) != 0)
|
|
return;
|
|
Py_Type(&CFTypeRef_Type) = &PyType_Type;
|
|
if (PyType_Ready(&CFTypeRef_Type) < 0) return;
|
|
Py_INCREF(&CFTypeRef_Type);
|
|
PyModule_AddObject(m, "CFTypeRef", (PyObject *)&CFTypeRef_Type);
|
|
/* Backward-compatible name */
|
|
Py_INCREF(&CFTypeRef_Type);
|
|
PyModule_AddObject(m, "CFTypeRefType", (PyObject *)&CFTypeRef_Type);
|
|
Py_Type(&CFArrayRef_Type) = &PyType_Type;
|
|
CFArrayRef_Type.tp_base = &CFTypeRef_Type;
|
|
if (PyType_Ready(&CFArrayRef_Type) < 0) return;
|
|
Py_INCREF(&CFArrayRef_Type);
|
|
PyModule_AddObject(m, "CFArrayRef", (PyObject *)&CFArrayRef_Type);
|
|
/* Backward-compatible name */
|
|
Py_INCREF(&CFArrayRef_Type);
|
|
PyModule_AddObject(m, "CFArrayRefType", (PyObject *)&CFArrayRef_Type);
|
|
Py_Type(&CFMutableArrayRef_Type) = &PyType_Type;
|
|
CFMutableArrayRef_Type.tp_base = &CFArrayRef_Type;
|
|
if (PyType_Ready(&CFMutableArrayRef_Type) < 0) return;
|
|
Py_INCREF(&CFMutableArrayRef_Type);
|
|
PyModule_AddObject(m, "CFMutableArrayRef", (PyObject *)&CFMutableArrayRef_Type);
|
|
/* Backward-compatible name */
|
|
Py_INCREF(&CFMutableArrayRef_Type);
|
|
PyModule_AddObject(m, "CFMutableArrayRefType", (PyObject *)&CFMutableArrayRef_Type);
|
|
Py_Type(&CFDictionaryRef_Type) = &PyType_Type;
|
|
CFDictionaryRef_Type.tp_base = &CFTypeRef_Type;
|
|
if (PyType_Ready(&CFDictionaryRef_Type) < 0) return;
|
|
Py_INCREF(&CFDictionaryRef_Type);
|
|
PyModule_AddObject(m, "CFDictionaryRef", (PyObject *)&CFDictionaryRef_Type);
|
|
/* Backward-compatible name */
|
|
Py_INCREF(&CFDictionaryRef_Type);
|
|
PyModule_AddObject(m, "CFDictionaryRefType", (PyObject *)&CFDictionaryRef_Type);
|
|
Py_Type(&CFMutableDictionaryRef_Type) = &PyType_Type;
|
|
CFMutableDictionaryRef_Type.tp_base = &CFDictionaryRef_Type;
|
|
if (PyType_Ready(&CFMutableDictionaryRef_Type) < 0) return;
|
|
Py_INCREF(&CFMutableDictionaryRef_Type);
|
|
PyModule_AddObject(m, "CFMutableDictionaryRef", (PyObject *)&CFMutableDictionaryRef_Type);
|
|
/* Backward-compatible name */
|
|
Py_INCREF(&CFMutableDictionaryRef_Type);
|
|
PyModule_AddObject(m, "CFMutableDictionaryRefType", (PyObject *)&CFMutableDictionaryRef_Type);
|
|
Py_Type(&CFDataRef_Type) = &PyType_Type;
|
|
CFDataRef_Type.tp_base = &CFTypeRef_Type;
|
|
if (PyType_Ready(&CFDataRef_Type) < 0) return;
|
|
Py_INCREF(&CFDataRef_Type);
|
|
PyModule_AddObject(m, "CFDataRef", (PyObject *)&CFDataRef_Type);
|
|
/* Backward-compatible name */
|
|
Py_INCREF(&CFDataRef_Type);
|
|
PyModule_AddObject(m, "CFDataRefType", (PyObject *)&CFDataRef_Type);
|
|
Py_Type(&CFMutableDataRef_Type) = &PyType_Type;
|
|
CFMutableDataRef_Type.tp_base = &CFDataRef_Type;
|
|
if (PyType_Ready(&CFMutableDataRef_Type) < 0) return;
|
|
Py_INCREF(&CFMutableDataRef_Type);
|
|
PyModule_AddObject(m, "CFMutableDataRef", (PyObject *)&CFMutableDataRef_Type);
|
|
/* Backward-compatible name */
|
|
Py_INCREF(&CFMutableDataRef_Type);
|
|
PyModule_AddObject(m, "CFMutableDataRefType", (PyObject *)&CFMutableDataRef_Type);
|
|
Py_Type(&CFStringRef_Type) = &PyType_Type;
|
|
CFStringRef_Type.tp_base = &CFTypeRef_Type;
|
|
if (PyType_Ready(&CFStringRef_Type) < 0) return;
|
|
Py_INCREF(&CFStringRef_Type);
|
|
PyModule_AddObject(m, "CFStringRef", (PyObject *)&CFStringRef_Type);
|
|
/* Backward-compatible name */
|
|
Py_INCREF(&CFStringRef_Type);
|
|
PyModule_AddObject(m, "CFStringRefType", (PyObject *)&CFStringRef_Type);
|
|
Py_Type(&CFMutableStringRef_Type) = &PyType_Type;
|
|
CFMutableStringRef_Type.tp_base = &CFStringRef_Type;
|
|
if (PyType_Ready(&CFMutableStringRef_Type) < 0) return;
|
|
Py_INCREF(&CFMutableStringRef_Type);
|
|
PyModule_AddObject(m, "CFMutableStringRef", (PyObject *)&CFMutableStringRef_Type);
|
|
/* Backward-compatible name */
|
|
Py_INCREF(&CFMutableStringRef_Type);
|
|
PyModule_AddObject(m, "CFMutableStringRefType", (PyObject *)&CFMutableStringRef_Type);
|
|
Py_Type(&CFURLRef_Type) = &PyType_Type;
|
|
CFURLRef_Type.tp_base = &CFTypeRef_Type;
|
|
if (PyType_Ready(&CFURLRef_Type) < 0) return;
|
|
Py_INCREF(&CFURLRef_Type);
|
|
PyModule_AddObject(m, "CFURLRef", (PyObject *)&CFURLRef_Type);
|
|
/* Backward-compatible name */
|
|
Py_INCREF(&CFURLRef_Type);
|
|
PyModule_AddObject(m, "CFURLRefType", (PyObject *)&CFURLRef_Type);
|
|
|
|
#define _STRINGCONST(name) PyModule_AddObject(m, #name, CFStringRefObj_New(name))
|
|
_STRINGCONST(kCFPreferencesAnyApplication);
|
|
_STRINGCONST(kCFPreferencesCurrentApplication);
|
|
_STRINGCONST(kCFPreferencesAnyHost);
|
|
_STRINGCONST(kCFPreferencesCurrentHost);
|
|
_STRINGCONST(kCFPreferencesAnyUser);
|
|
_STRINGCONST(kCFPreferencesCurrentUser);
|
|
|
|
|
|
|
|
}
|
|
|
|
/* ========================= End module _CF ========================= */
|
|
|