[Python-checkins] python/dist/src/Mac/Modules/cf cfsupport.py,1.14,1.15

jackjansen@sourceforge.net jackjansen@sourceforge.net
Tue, 07 May 2002 16:00:00 -0700


Update of /cvsroot/python/python/dist/src/Mac/Modules/cf
In directory usw-pr-cvs1:/tmp/cvs-serv27523/Python/Mac/Modules/cf

Modified Files:
	cfsupport.py 
Log Message:
More support for bridging between Python and CoreFoundation objects. Still untested.

Index: cfsupport.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Mac/Modules/cf/cfsupport.py,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** cfsupport.py	1 Jan 2002 22:43:13 -0000	1.14
--- cfsupport.py	7 May 2002 22:59:58 -0000	1.15
***************
*** 54,57 ****
--- 54,59 ----
  #endif
  
+ #include "pycfbridge.h"
+ 
  #ifdef USE_TOOLBOX_OBJECT_GLUE
  extern PyObject *_CFTypeRefObj_New(CFTypeRef);
***************
*** 485,488 ****
--- 487,521 ----
  f.docstring = lambda: "() -> (unicode _rv)"
  CFStringRef_object.add(f)
+ 
+ toPython_body = """
+ return PyCF_CF2Python(_self->ob_itself);
+ """
+ 
+ f = ManualGenerator("toPython", toPython_body);
+ f.docstring = lambda: "() -> (python_object)"
+ CFTypeRef_object.add(f)
+ 
+ toCF_body = """
+ 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);
+ 
+ return Py_BuildValue("O&", CFTypeRefObj_New, rv);
+ """
+ f = ManualGenerator("toCF", toCF_body);
+ f.docstring = lambda: "(python_object) -> (CF_object)"
+ module.add(f)
  
  # ADD add forloop here