diff options
author | Jack Jansen <jack.jansen@cwi.nl> | 2002-05-10 22:51:58 (GMT) |
---|---|---|
committer | Jack Jansen <jack.jansen@cwi.nl> | 2002-05-10 22:51:58 (GMT) |
commit | 6d207c09aa7c9b5e155f4e779133c638fdfdd787 (patch) | |
tree | 72bd0560d440bd8025a142f94413e1484374ed1d /Mac/Modules/cf/cfsupport.py | |
parent | e037665f999c2ab5637fd9c2f4ac5c24e44e48f0 (diff) | |
download | cpython-6d207c09aa7c9b5e155f4e779133c638fdfdd787.zip cpython-6d207c09aa7c9b5e155f4e779133c638fdfdd787.tar.gz cpython-6d207c09aa7c9b5e155f4e779133c638fdfdd787.tar.bz2 |
- Get data from CFData objects as Python strings and vv.
- Started on supporting CFPropertyLists.
Diffstat (limited to 'Mac/Modules/cf/cfsupport.py')
-rw-r--r-- | Mac/Modules/cf/cfsupport.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/Mac/Modules/cf/cfsupport.py b/Mac/Modules/cf/cfsupport.py index d690441..b2ff3e1 100644 --- a/Mac/Modules/cf/cfsupport.py +++ b/Mac/Modules/cf/cfsupport.py @@ -49,6 +49,7 @@ includestuff = includestuff + """ #include <CFDictionary.h> #include <CFString.h> #include <CFURL.h> +#include <CFPropertyList.h> #else #include <CoreServices/CoreServices.h> #endif @@ -195,6 +196,7 @@ CFStringRef = OpaqueByValueType("CFStringRef", "CFStringRefObj") CFMutableStringRef = OpaqueByValueType("CFMutableStringRef", "CFMutableStringRefObj") CFURLRef = OpaqueByValueType("CFURLRef", "CFURLRefObj") OptionalCFURLRef = OpaqueByValueType("CFURLRef", "OptionalCFURLRefObj") +##CFPropertyListRef = OpaqueByValueType("CFPropertyListRef", "CFTypeRefObj") # ADD object type here # Our (opaque) objects @@ -301,6 +303,18 @@ class CFMutableDictionaryRefObjectDefinition(MyGlobalObjectDefinition): class CFDataRefObjectDefinition(MyGlobalObjectDefinition): basechain = "&CFTypeRefObj_chain" + def outputCheckConvertArg(self): + Out(""" + if (v == Py_None) { *p_itself = NULL; return 1; } + if (PyString_Check(v)) { + char *cStr; + int cLen; + if( PyString_AsStringAndSize(v, &cStr, &cLen) < 0 ) return 0; + *p_itself = CFDataCreate((CFAllocatorRef)NULL, (unsigned char *)cStr, cLen); + return 1; + } + """) + def outputRepr(self): Output() Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype) @@ -491,6 +505,21 @@ toPython_body = """ return PyCF_CF2Python(_self->ob_itself); """ +# Get data from CFDataRef +getasdata_body = """ +int size = CFDataGetLength(_self->ob_itself); +char *data = (char *)CFDataGetBytePtr(_self->ob_itself); + +_res = (PyObject *)PyString_FromStringAndSize(data, size); +return _res; +""" + +f = ManualGenerator("CFDataGetData", getasdata_body); +f.docstring = lambda: "() -> (string _rv)" +CFDataRef_object.add(f) + + + f = ManualGenerator("toPython", toPython_body); f.docstring = lambda: "() -> (python_object)" CFTypeRef_object.add(f) |