[Python-checkins] CVS: python/dist/src/Mac/Modules/cf cfsupport.py,1.1,1.2

Jack Jansen jackjansen@users.sourceforge.net
Wed, 27 Jun 2001 15:00:57 -0700


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

Modified Files:
	cfsupport.py 
Log Message:
CFArray, CFData and CFDictonary are now covered, but mainly opaque.
CFStrings are in better shape, but Unicode support and automatic conversion to/from Python strings remains to be done.

Index: cfsupport.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Mac/Modules/cf/cfsupport.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** cfsupport.py	2001/06/26 21:51:18	1.1
--- cfsupport.py	2001/06/27 22:00:55	1.2
***************
*** 33,36 ****
--- 33,37 ----
  extern int CFStringRefObj_Convert(PyObject *, CFStringRef *);
  
+ // ADD declarations
  #ifdef NOTYET_USE_TOOLBOX_OBJECT_GLUE
  //extern PyObject *_CFTypeRefObj_New(CFTypeRef);
***************
*** 41,44 ****
--- 42,65 ----
  #endif
  
+ /*
+ ** Parse/generate RGB records
+ */
+ PyObject *CFRange_New(CFRange *itself)
+ {
+ 
+ 	return Py_BuildValue("ll", (long)itself->location, (long)itself->length);
+ }
+ 
+ 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;
+ }
+ 
  """
  
***************
*** 52,62 ****
  CFHashCode = Type("CFHashCode", "l")
  CFIndex = Type("CFIndex", "l")
  CFOptionFlags = Type("CFOptionFlags", "l")
! ## CFStringRef = XXXX
! CFAllocatorRef = FakeType("(CFAllocatorRef)NULL")
  
  # The real objects
  CFTypeRef = OpaqueByValueType("CFTypeRef", "CFTypeRefObj")
  CFStringRef = OpaqueByValueType("CFStringRef", "CFStringRefObj")
  
  # Our (opaque) objects
--- 73,101 ----
  CFHashCode = Type("CFHashCode", "l")
  CFIndex = Type("CFIndex", "l")
+ CFRange = OpaqueByValueType('CFRange', 'CFRange')
  CFOptionFlags = Type("CFOptionFlags", "l")
! CFStringEncoding = Type("CFStringEncoding", "l")
! CFComparisonResult = Type("CFComparisonResult", "l")  # a bit dangerous...
  
+ char_ptr = stringptr
+ return_stringptr = Type("char *", "s")	# ONLY FOR RETURN VALUES!!
+ 
+ CFAllocatorRef = FakeType("(CFAllocatorRef)NULL")
+ CFArrayCallBacks_ptr = FakeType("&kCFTypeArrayCallBacks")
+ CFDictionaryKeyCallBacks_ptr = FakeType("&kCFTypeDictionaryKeyCallBacks")
+ CFDictionaryValueCallBacks_ptr = FakeType("&kCFTypeDictionaryValueCallBacks")
  # The real objects
  CFTypeRef = OpaqueByValueType("CFTypeRef", "CFTypeRefObj")
+ CFArrayRef = OpaqueByValueType("CFArrayRef", "CFArrayRefObj")
+ CFMutableArrayRef = OpaqueByValueType("CFMutableArrayRef", "CFMutableArrayRefObj")
+ CFArrayRef = OpaqueByValueType("CFArrayRef", "CFArrayRefObj")
+ CFMutableArrayRef = OpaqueByValueType("CFMutableArrayRef", "CFMutableArrayRefObj")
+ CFDataRef = OpaqueByValueType("CFDataRef", "CFDataRefObj")
+ CFMutableDataRef = OpaqueByValueType("CFMutableDataRef", "CFMutableDataRefObj")
+ CFDictionaryRef = OpaqueByValueType("CFDictionaryRef", "CFDictionaryRefObj")
+ CFMutableDictionaryRef = OpaqueByValueType("CFMutableDictionaryRef", "CFMutableDictionaryRefObj")
  CFStringRef = OpaqueByValueType("CFStringRef", "CFStringRefObj")
+ CFMutableStringRef = OpaqueByValueType("CFMutableStringRef", "CFMutableStringRefObj")
+ # ADD object type here
  
  # Our (opaque) objects
***************
*** 114,117 ****
--- 153,228 ----
  	pass
  	
+ class CFArrayRefObjectDefinition(MyGlobalObjectDefinition):
+ 	basechain = "&CFTypeRefObj_chain"
+ 	
+ 	def outputRepr(self):
+ 		Output()
+ 		Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype)
+ 		OutLbrace()
+ 		Output("char buf[100];")
+ 		Output("""sprintf(buf, "<CFArrayRef object at 0x%%08.8x for 0x%%08.8x>", CFGetTypeID(self->ob_itself), self, self->ob_itself);""")
+ 		Output("return PyString_FromString(buf);")
+ 		OutRbrace()
+ 	
+ class CFMutableArrayRefObjectDefinition(MyGlobalObjectDefinition):
+ 	basechain = "&CFArrayRefObj_chain"
+ 	
+ 	def outputRepr(self):
+ 		Output()
+ 		Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype)
+ 		OutLbrace()
+ 		Output("char buf[100];")
+ 		Output("""sprintf(buf, "<CFMutableArrayRef object at 0x%%08.8x for 0x%%08.8x>", CFGetTypeID(self->ob_itself), self, self->ob_itself);""")
+ 		Output("return PyString_FromString(buf);")
+ 		OutRbrace()
+ 	
+ class CFDictionaryRefObjectDefinition(MyGlobalObjectDefinition):
+ 	basechain = "&CFTypeRefObj_chain"
+ 	
+ 	def outputRepr(self):
+ 		Output()
+ 		Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype)
+ 		OutLbrace()
+ 		Output("char buf[100];")
+ 		Output("""sprintf(buf, "<CFDictionaryRef object at 0x%%08.8x for 0x%%08.8x>", CFGetTypeID(self->ob_itself), self, self->ob_itself);""")
+ 		Output("return PyString_FromString(buf);")
+ 		OutRbrace()
+ 	
+ class CFMutableDictionaryRefObjectDefinition(MyGlobalObjectDefinition):
+ 	basechain = "&CFDictionaryRefObj_chain"
+ 	
+ 	def outputRepr(self):
+ 		Output()
+ 		Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype)
+ 		OutLbrace()
+ 		Output("char buf[100];")
+ 		Output("""sprintf(buf, "<CFMutableDictionaryRef object at 0x%%08.8x for 0x%%08.8x>", CFGetTypeID(self->ob_itself), self, self->ob_itself);""")
+ 		Output("return PyString_FromString(buf);")
+ 		OutRbrace()
+ 	
+ class CFDataRefObjectDefinition(MyGlobalObjectDefinition):
+ 	basechain = "&CFTypeRefObj_chain"
+ 	
+ 	def outputRepr(self):
+ 		Output()
+ 		Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype)
+ 		OutLbrace()
+ 		Output("char buf[100];")
+ 		Output("""sprintf(buf, "<CFDataRef object at 0x%%08.8x for 0x%%08.8x>", CFGetTypeID(self->ob_itself), self, self->ob_itself);""")
+ 		Output("return PyString_FromString(buf);")
+ 		OutRbrace()
+ 	
+ class CFMutableDataRefObjectDefinition(MyGlobalObjectDefinition):
+ 	basechain = "&CFDataRefObj_chain"
+ 	
+ 	def outputRepr(self):
+ 		Output()
+ 		Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype)
+ 		OutLbrace()
+ 		Output("char buf[100];")
+ 		Output("""sprintf(buf, "<CFMutableDataRef object at 0x%%08.8x for 0x%%08.8x>", CFGetTypeID(self->ob_itself), self, self->ob_itself);""")
+ 		Output("return PyString_FromString(buf);")
+ 		OutRbrace()
+ 
  class CFStringRefObjectDefinition(MyGlobalObjectDefinition):
  	basechain = "&CFTypeRefObj_chain"
***************
*** 122,129 ****
  		OutLbrace()
  		Output("char buf[100];")
! 		Output("""sprintf(buf, "<CFString object at 0x%%08.8x for 0x%%08.8x>", CFGetTypeID(self->ob_itself), self, self->ob_itself);""")
  		Output("return PyString_FromString(buf);")
  		OutRbrace()
  	
  # From here on it's basically all boiler plate...
  
--- 233,255 ----
  		OutLbrace()
  		Output("char buf[100];")
! 		Output("""sprintf(buf, "<CFStringRef object at 0x%%08.8x for 0x%%08.8x>", CFGetTypeID(self->ob_itself), self, self->ob_itself);""")
  		Output("return PyString_FromString(buf);")
  		OutRbrace()
+ 
+ class CFMutableStringRefObjectDefinition(CFStringRefObjectDefinition):
+ 	basechain = "&CFStringRefObj_chain"
  	
+ 	def outputRepr(self):
+ 		Output()
+ 		Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype)
+ 		OutLbrace()
+ 		Output("char buf[100];")
+ 		Output("""sprintf(buf, "<CFMutableStringRef object at 0x%%08.8x for 0x%%08.8x>", CFGetTypeID(self->ob_itself), self, self->ob_itself);""")
+ 		Output("return PyString_FromString(buf);")
+ 		OutRbrace()
+ 
+ 
+ # ADD object class here
+ 
  # From here on it's basically all boiler plate...
  
***************
*** 131,138 ****
--- 257,281 ----
  module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff)
  CFTypeRef_object = CFTypeRefObjectDefinition('CFTypeRef', 'CFTypeRefObj', 'CFTypeRef')
+ CFArrayRef_object = CFTypeRefObjectDefinition('CFArrayRef', 'CFArrayRefObj', 'CFArrayRef')
+ CFMutableArrayRef_object = CFTypeRefObjectDefinition('CFMutableArrayRef', 'CFMutableArrayRefObj', 'CFMutableArrayRef')
+ CFDictionaryRef_object = CFTypeRefObjectDefinition('CFDictionaryRef', 'CFDictionaryRefObj', 'CFDictionaryRef')
+ CFMutableDictionaryRef_object = CFTypeRefObjectDefinition('CFMutableDictionaryRef', 'CFMutableDictionaryRefObj', 'CFMutableDictionaryRef')
+ CFDataRef_object = CFTypeRefObjectDefinition('CFDataRef', 'CFDataRefObj', 'CFDataRef')
+ CFMutableDataRef_object = CFTypeRefObjectDefinition('CFMutableDataRef', 'CFMutableDataRefObj', 'CFMutableDataRef')
  CFStringRef_object = CFTypeRefObjectDefinition('CFStringRef', 'CFStringRefObj', 'CFStringRef')
+ CFMutableStringRef_object = CFTypeRefObjectDefinition('CFMutableStringRef', 'CFMutableStringRefObj', 'CFMutableStringRef')
+ 
+ # ADD object here
  
  module.addobject(CFTypeRef_object)
+ module.addobject(CFArrayRef_object)
+ module.addobject(CFMutableArrayRef_object)
+ module.addobject(CFDictionaryRef_object)
+ module.addobject(CFMutableDictionaryRef_object)
+ module.addobject(CFDataRef_object)
+ module.addobject(CFMutableDataRef_object)
  module.addobject(CFStringRef_object)
+ module.addobject(CFMutableStringRef_object)
+ # ADD addobject call here
  
  # Create the generator classes used to populate the lists
***************
*** 143,147 ****
--- 286,299 ----
  functions = []
  CFTypeRef_methods = []
+ CFArrayRef_methods = []
+ CFMutableArrayRef_methods = []
+ CFDictionaryRef_methods = []
+ CFMutableDictionaryRef_methods = []
+ CFDataRef_methods = []
+ CFMutableDataRef_methods = []
  CFStringRef_methods = []
+ CFMutableStringRef_methods = []
+ 
+ # ADD _methods initializer here
  execfile(INPUTFILE)
  
***************
*** 151,155 ****
--- 303,316 ----
  for f in functions: module.add(f)
  for f in CFTypeRef_methods: CFTypeRef_object.add(f)
+ for f in CFArrayRef_methods: CFArrayRef_object.add(f)
+ for f in CFMutableArrayRef_methods: CFMutableArrayRef_object.add(f)
+ for f in CFDictionaryRef_methods: CFDictionaryRef_object.add(f)
+ for f in CFMutableDictionaryRef_methods: CFMutableDictionaryRef_object.add(f)
+ for f in CFDataRef_methods: CFDataRef_object.add(f)
+ for f in CFMutableDataRef_methods: CFMutableDataRef_object.add(f)
  for f in CFStringRef_methods: CFStringRef_object.add(f)
+ for f in CFMutableStringRef_methods: CFMutableStringRef_object.add(f)
+ 
+ # ADD add forloop here
  
  # generate output (open the output file as late as possible)