#include <CFDictionary.h>
#include <CFString.h>
#include <CFURL.h>
+#include <CFPropertyList.h>
#else
#include <CoreServices/CoreServices.h>
#endif
PyObject *CFTypeRefObj_New(CFTypeRef itself)
{
CFTypeRefObject *it;
- if (itself == NULL) return PyMac_Error(resNotFound);
+ 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;
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;
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;
"() -> (CFHashCode _rv)"},
{"CFCopyDescription", (PyCFunction)CFTypeRefObj_CFCopyDescription, 1,
"() -> (CFStringRef _rv)"},
+ {"CFPropertyListCreateXMLData", (PyCFunction)CFTypeRefObj_CFPropertyListCreateXMLData, 1,
+ "() -> (CFDataRef _rv)"},
+ {"CFPropertyListCreateDeepCopy", (PyCFunction)CFTypeRefObj_CFPropertyListCreateDeepCopy, 1,
+ "(CFOptionFlags mutabilityOption) -> (CFTypeRef _rv)"},
{"CFShow", (PyCFunction)CFTypeRefObj_CFShow, 1,
"() -> None"},
+ {"CFPropertyListCreateFromXMLData", (PyCFunction)CFTypeRefObj_CFPropertyListCreateFromXMLData, 1,
+ "(CFOptionFlags mutabilityOption) -> (CFTypeRefObj)"},
{"toPython", (PyCFunction)CFTypeRefObj_toPython, 1,
"() -> (python_object)"},
{NULL, NULL, 0}
PyObject *CFArrayRefObj_New(CFArrayRef itself)
{
CFArrayRefObject *it;
- if (itself == NULL) return PyMac_Error(resNotFound);
+ if (itself == NULL)
+ {
+ PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");
+ return NULL;
+ }
it = PyObject_NEW(CFArrayRefObject, &CFArrayRef_Type);
if (it == NULL) return NULL;
it->ob_itself = itself;
PyObject *CFMutableArrayRefObj_New(CFMutableArrayRef itself)
{
CFMutableArrayRefObject *it;
- if (itself == NULL) return PyMac_Error(resNotFound);
+ if (itself == NULL)
+ {
+ PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");
+ return NULL;
+ }
it = PyObject_NEW(CFMutableArrayRefObject, &CFMutableArrayRef_Type);
if (it == NULL) return NULL;
it->ob_itself = itself;
PyObject *CFDictionaryRefObj_New(CFDictionaryRef itself)
{
CFDictionaryRefObject *it;
- if (itself == NULL) return PyMac_Error(resNotFound);
+ if (itself == NULL)
+ {
+ PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");
+ return NULL;
+ }
it = PyObject_NEW(CFDictionaryRefObject, &CFDictionaryRef_Type);
if (it == NULL) return NULL;
it->ob_itself = itself;
PyObject *CFMutableDictionaryRefObj_New(CFMutableDictionaryRef itself)
{
CFMutableDictionaryRefObject *it;
- if (itself == NULL) return PyMac_Error(resNotFound);
+ if (itself == NULL)
+ {
+ PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");
+ return NULL;
+ }
it = PyObject_NEW(CFMutableDictionaryRefObject, &CFMutableDictionaryRef_Type);
if (it == NULL) return NULL;
it->ob_itself = itself;
PyObject *CFDataRefObj_New(CFDataRef itself)
{
CFDataRefObject *it;
- if (itself == NULL) return PyMac_Error(resNotFound);
+ if (itself == NULL)
+ {
+ PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");
+ return NULL;
+ }
it = PyObject_NEW(CFDataRefObject, &CFDataRef_Type);
if (it == NULL) return NULL;
it->ob_itself = itself;
{
if (v == Py_None) { *p_itself = NULL; return 1; }
- /* Check for other CF objects here */
+ 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;
+ }
if (!CFDataRefObj_Check(v))
{
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,
"() -> (CFDataRef _rv)"},
"() -> (CFIndex _rv)"},
{"CFStringCreateFromExternalRepresentation", (PyCFunction)CFDataRefObj_CFStringCreateFromExternalRepresentation, 1,
"(CFStringEncoding encoding) -> (CFStringRef _rv)"},
+ {"CFDataGetData", (PyCFunction)CFDataRefObj_CFDataGetData, 1,
+ "() -> (string _rv)"},
{NULL, NULL, 0}
};
PyObject *CFMutableDataRefObj_New(CFMutableDataRef itself)
{
CFMutableDataRefObject *it;
- if (itself == NULL) return PyMac_Error(resNotFound);
+ if (itself == NULL)
+ {
+ PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");
+ return NULL;
+ }
it = PyObject_NEW(CFMutableDataRefObject, &CFMutableDataRef_Type);
if (it == NULL) return NULL;
it->ob_itself = itself;
PyObject *CFStringRefObj_New(CFStringRef itself)
{
CFStringRefObject *it;
- if (itself == NULL) return PyMac_Error(resNotFound);
+ if (itself == NULL)
+ {
+ PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");
+ return NULL;
+ }
it = PyObject_NEW(CFStringRefObject, &CFStringRef_Type);
if (it == NULL) return NULL;
it->ob_itself = itself;
PyObject *CFMutableStringRefObj_New(CFMutableStringRef itself)
{
CFMutableStringRefObject *it;
- if (itself == NULL) return PyMac_Error(resNotFound);
+ if (itself == NULL)
+ {
+ PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");
+ return NULL;
+ }
it = PyObject_NEW(CFMutableStringRefObject, &CFMutableStringRef_Type);
if (it == NULL) return NULL;
it->ob_itself = itself;
PyObject *CFURLRefObj_New(CFURLRef itself)
{
CFURLRefObject *it;
- if (itself == NULL) return PyMac_Error(resNotFound);
+ if (itself == NULL)
+ {
+ PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");
+ return NULL;
+ }
it = PyObject_NEW(CFURLRefObject, &CFURLRef_Type);
if (it == NULL) return NULL;
it->ob_itself = itself;
class MyGlobalObjectDefinition(GlobalObjectDefinition):
def outputCheckNewArg(self):
- Output("if (itself == NULL) return PyMac_Error(resNotFound);")
+ Output('if (itself == NULL)')
+ OutLbrace()
+ Output('PyErr_SetString(PyExc_RuntimeError, "cannot wrap NULL");')
+ Output('return NULL;')
+ OutRbrace()
def outputStructMembers(self):
GlobalObjectDefinition.outputStructMembers(self)
Output("void (*ob_freeit)(CFTypeRef ptr);")
f.docstring = lambda: "() -> (unicode _rv)"
CFStringRef_object.add(f)
-toPython_body = """
-return PyCF_CF2Python(_self->ob_itself);
-"""
-
# Get data from CFDataRef
getasdata_body = """
int size = CFDataGetLength(_self->ob_itself);
f.docstring = lambda: "() -> (string _rv)"
CFDataRef_object.add(f)
+# Manual generator for CFPropertyListCreateFromXMLData because of funny error return
+fromxml_body = """
+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;
+"""
+f = ManualGenerator("CFPropertyListCreateFromXMLData", fromxml_body)
+f.docstring = lambda: "(CFOptionFlags mutabilityOption) -> (CFTypeRefObj)"
+CFTypeRef_object.add(f)
+# Convert CF objects to Python objects
+toPython_body = """
+return PyCF_CF2Python(_self->ob_itself);
+"""
f = ManualGenerator("toPython", toPython_body);
f.docstring = lambda: "() -> (python_object)"