Whitespace normalization, via reindent.py.
diff --git a/Mac/Modules/cf/cfscan.py b/Mac/Modules/cf/cfscan.py
index aa0ea3d..d2de92e 100644
--- a/Mac/Modules/cf/cfscan.py
+++ b/Mac/Modules/cf/cfscan.py
@@ -8,135 +8,135 @@
 
 LONG = "CoreFoundation"
 SHORT = "cf"
-OBJECTS = ("CFTypeRef", 
-		"CFArrayRef", "CFMutableArrayRef",
-		"CFDataRef", "CFMutableDataRef",
-		"CFDictionaryRef", "CFMutableDictionaryRef",
-		"CFStringRef", "CFMutableStringRef",
-		"CFURLRef",
-##		"CFPropertyListRef",
-		)
+OBJECTS = ("CFTypeRef",
+                "CFArrayRef", "CFMutableArrayRef",
+                "CFDataRef", "CFMutableDataRef",
+                "CFDictionaryRef", "CFMutableDictionaryRef",
+                "CFStringRef", "CFMutableStringRef",
+                "CFURLRef",
+##              "CFPropertyListRef",
+                )
 # ADD object typenames here
 
 def main():
-	input = [
-		"CFBase.h",
-		"CFArray.h",
-##		"CFBag.h",
-##		"CFBundle.h",
-##		"CFCharacterSet.h",
-		"CFData.h",
-##		"CFDate.h",
-		"CFDictionary.h",
-##		"CFNumber.h",
-##		"CFPlugIn.h",
-		"CFPreferences.h",
-		"CFPropertyList.h",
-##		"CFSet.h",
-		"CFString.h",
-##		"CFStringEncodingExt.h",
-##		"CFTimeZone.h",
-		"CFURL.h",
-		]
-	output = SHORT + "gen.py"
-	defsoutput = TOOLBOXDIR + LONG + ".py"
-	scanner = MyScanner(input, output, defsoutput)
-	scanner.scan()
-	scanner.gentypetest(SHORT+"typetest.py")
-	scanner.close()
-	print "=== Testing definitions output code ==="
-	execfile(defsoutput, {}, {})
-	print "=== Done scanning and generating, now importing the generated code... ==="
-	exec "import " + SHORT + "support"
-	print "=== Done.  It's up to you to compile it now! ==="
+    input = [
+            "CFBase.h",
+            "CFArray.h",
+##              "CFBag.h",
+##              "CFBundle.h",
+##              "CFCharacterSet.h",
+            "CFData.h",
+##              "CFDate.h",
+            "CFDictionary.h",
+##              "CFNumber.h",
+##              "CFPlugIn.h",
+            "CFPreferences.h",
+            "CFPropertyList.h",
+##              "CFSet.h",
+            "CFString.h",
+##              "CFStringEncodingExt.h",
+##              "CFTimeZone.h",
+            "CFURL.h",
+            ]
+    output = SHORT + "gen.py"
+    defsoutput = TOOLBOXDIR + LONG + ".py"
+    scanner = MyScanner(input, output, defsoutput)
+    scanner.scan()
+    scanner.gentypetest(SHORT+"typetest.py")
+    scanner.close()
+    print "=== Testing definitions output code ==="
+    execfile(defsoutput, {}, {})
+    print "=== Done scanning and generating, now importing the generated code... ==="
+    exec "import " + SHORT + "support"
+    print "=== Done.  It's up to you to compile it now! ==="
 
 class MyScanner(Scanner_OSX):
 
-	def destination(self, type, name, arglist):
-		classname = "Function"
-		listname = "functions"
-		if arglist and name[:13] != 'CFPreferences':
-			t, n, m = arglist[0]
-			if t in OBJECTS and m == "InMode":
-				classname = "Method"
-				listname = t + "_methods"
-			# Special case for the silly first AllocatorRef argument
-			if t == 'CFAllocatorRef' and m == 'InMode' and len(arglist) > 1:
-				t, n, m = arglist[1]
-				if t in OBJECTS and m == "InMode":
-					classname = "MethodSkipArg1"
-					listname = t + "_methods"
-		return classname, listname
+    def destination(self, type, name, arglist):
+        classname = "Function"
+        listname = "functions"
+        if arglist and name[:13] != 'CFPreferences':
+            t, n, m = arglist[0]
+            if t in OBJECTS and m == "InMode":
+                classname = "Method"
+                listname = t + "_methods"
+            # Special case for the silly first AllocatorRef argument
+            if t == 'CFAllocatorRef' and m == 'InMode' and len(arglist) > 1:
+                t, n, m = arglist[1]
+                if t in OBJECTS and m == "InMode":
+                    classname = "MethodSkipArg1"
+                    listname = t + "_methods"
+        return classname, listname
 
-	def writeinitialdefs(self):
-		self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
+    def writeinitialdefs(self):
+        self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
 
-	def makeblacklistnames(self):
-		return [
-			# Memory allocator functions
-			"CFAllocatorGetDefault",
-			"CFAllocatorSetDefault",
-			"CFAllocatorAllocate",
-			"CFAllocatorReallocate",
-			"CFAllocatorDeallocate",
-			"CFGetAllocator",
-			# Array functions we skip for now.
-			"CFArrayGetValueAtIndex",
-			# Data pointer functions. Skip for now.
-			"CFDataGetBytePtr",
-			"CFDataGetMutableBytePtr",
-			"CFDataGetBytes",   # XXXX Should support this one
-			# String functions
-			"CFStringGetPascalString", # Use the C-string methods.
-			"CFStringGetPascalStringPtr", # TBD automatically
-			"CFStringGetCStringPtr", 
-			"CFStringGetCharactersPtr",
-			"CFStringGetCString", 
-			"CFStringGetCharacters",
-			"CFURLCreateStringWithFileSystemPath", # Gone in later releases
-			"CFStringCreateMutableWithExternalCharactersNoCopy", # Not a clue...
-			"CFStringSetExternalCharactersNoCopy",
-			"CFStringGetCharacterAtIndex", # No format for single unichars yet.
-			"kCFStringEncodingInvalidId", # incompatible constant declaration
-			"CFPropertyListCreateFromXMLData", # Manually generated
-			]
+    def makeblacklistnames(self):
+        return [
+                # Memory allocator functions
+                "CFAllocatorGetDefault",
+                "CFAllocatorSetDefault",
+                "CFAllocatorAllocate",
+                "CFAllocatorReallocate",
+                "CFAllocatorDeallocate",
+                "CFGetAllocator",
+                # Array functions we skip for now.
+                "CFArrayGetValueAtIndex",
+                # Data pointer functions. Skip for now.
+                "CFDataGetBytePtr",
+                "CFDataGetMutableBytePtr",
+                "CFDataGetBytes",   # XXXX Should support this one
+                # String functions
+                "CFStringGetPascalString", # Use the C-string methods.
+                "CFStringGetPascalStringPtr", # TBD automatically
+                "CFStringGetCStringPtr",
+                "CFStringGetCharactersPtr",
+                "CFStringGetCString",
+                "CFStringGetCharacters",
+                "CFURLCreateStringWithFileSystemPath", # Gone in later releases
+                "CFStringCreateMutableWithExternalCharactersNoCopy", # Not a clue...
+                "CFStringSetExternalCharactersNoCopy",
+                "CFStringGetCharacterAtIndex", # No format for single unichars yet.
+                "kCFStringEncodingInvalidId", # incompatible constant declaration
+                "CFPropertyListCreateFromXMLData", # Manually generated
+                ]
 
-	def makegreylist(self):
-		return []
+    def makegreylist(self):
+        return []
 
-	def makeblacklisttypes(self):
-		return [
-			"CFComparatorFunction", # Callback function pointer
-			"CFAllocatorContext", # Not interested in providing our own allocator
-			"void_ptr_ptr",  # Tricky. This is the initializer for arrays...
-			"void_ptr", # Ditto for various array lookup methods
-			"CFArrayApplierFunction", # Callback function pointer
-			"CFDictionaryApplierFunction", # Callback function pointer
-			"va_list", # For printf-to-a-cfstring. Use Python.
-			"const_CFStringEncoding_ptr", # To be done, I guess
-			]
+    def makeblacklisttypes(self):
+        return [
+                "CFComparatorFunction", # Callback function pointer
+                "CFAllocatorContext", # Not interested in providing our own allocator
+                "void_ptr_ptr",  # Tricky. This is the initializer for arrays...
+                "void_ptr", # Ditto for various array lookup methods
+                "CFArrayApplierFunction", # Callback function pointer
+                "CFDictionaryApplierFunction", # Callback function pointer
+                "va_list", # For printf-to-a-cfstring. Use Python.
+                "const_CFStringEncoding_ptr", # To be done, I guess
+                ]
 
-	def makerepairinstructions(self):
-		return [
-			# Buffers in CF seem to be passed as UInt8 * normally.
-			([("UInt8_ptr", "*", "InMode"), ("CFIndex", "*", "InMode")],
-			 [("UcharInBuffer", "*", "*")]),
-			 
-			([("UniChar_ptr", "*", "InMode"), ("CFIndex", "*", "InMode")],
-			 [("UnicodeInBuffer", "*", "*")]),
+    def makerepairinstructions(self):
+        return [
+                # Buffers in CF seem to be passed as UInt8 * normally.
+                ([("UInt8_ptr", "*", "InMode"), ("CFIndex", "*", "InMode")],
+                 [("UcharInBuffer", "*", "*")]),
 
-			# Some functions return a const char *. Don't worry, we won't modify it.
-			([("const_char_ptr", "*", "ReturnMode")],
-			 [("return_stringptr", "*", "*")]),
-			 
-			# base URLs are optional (pass None for NULL)
-			([("CFURLRef", "baseURL", "InMode")],
-			 [("OptionalCFURLRef", "*", "*")]),
-			 
-			# We handle CFPropertyListRef objects as plain CFTypeRef
-			([("CFPropertyListRef", "*", "*")],
-			 [("CFTypeRef", "*", "*")]),
-			]
-			
+                ([("UniChar_ptr", "*", "InMode"), ("CFIndex", "*", "InMode")],
+                 [("UnicodeInBuffer", "*", "*")]),
+
+                # Some functions return a const char *. Don't worry, we won't modify it.
+                ([("const_char_ptr", "*", "ReturnMode")],
+                 [("return_stringptr", "*", "*")]),
+
+                # base URLs are optional (pass None for NULL)
+                ([("CFURLRef", "baseURL", "InMode")],
+                 [("OptionalCFURLRef", "*", "*")]),
+
+                # We handle CFPropertyListRef objects as plain CFTypeRef
+                ([("CFPropertyListRef", "*", "*")],
+                 [("CFTypeRef", "*", "*")]),
+                ]
+
 if __name__ == "__main__":
-	main()
+    main()
diff --git a/Mac/Modules/cf/cfsupport.py b/Mac/Modules/cf/cfsupport.py
index 95aeaa7..87b9a6f 100644
--- a/Mac/Modules/cf/cfsupport.py
+++ b/Mac/Modules/cf/cfsupport.py
@@ -8,35 +8,35 @@
 import string
 
 # Declarations that change for each manager
-MODNAME = '_CF'				# The name of the module
+MODNAME = '_CF'                         # The name of the module
 
 # The following is *usually* unchanged but may still require tuning
-MODPREFIX = 'CF'			# The prefix for module-wide routines
+MODPREFIX = 'CF'                        # The prefix for module-wide routines
 INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner
-OUTPUTFILE = MODNAME + "module.c"	# The file generated by this program
+OUTPUTFILE = MODNAME + "module.c"       # The file generated by this program
 
 from macsupport import *
 
 # Special case generator for the functions that have an AllocatorRef first argument,
 # which we skip anyway, and the object as the second arg.
 class MethodSkipArg1(MethodGenerator):
-	"""Similar to MethodGenerator, but has self as last argument"""
+    """Similar to MethodGenerator, but has self as last argument"""
 
-	def parseArgumentList(self, args):
-		if len(args) < 2:
-			raise ValueError, "MethodSkipArg1 expects at least 2 args"
-		a0, a1, args = args[0], args[1], args[2:]
-		t0, n0, m0 = a0
-		if t0 != "CFAllocatorRef" and m0 != InMode:
-			raise ValueError, "MethodSkipArg1 should have dummy AllocatorRef first arg"
-		t1, n1, m1 = a1
-		if m1 != InMode:
-			raise ValueError, "method's 'self' must be 'InMode'"
-		dummy = Variable(t0, n0, m0)
-		self.argumentList.append(dummy)
-		self.itself = Variable(t1, "_self->ob_itself", SelfMode)
-		self.argumentList.append(self.itself)
-		FunctionGenerator.parseArgumentList(self, args)
+    def parseArgumentList(self, args):
+        if len(args) < 2:
+            raise ValueError, "MethodSkipArg1 expects at least 2 args"
+        a0, a1, args = args[0], args[1], args[2:]
+        t0, n0, m0 = a0
+        if t0 != "CFAllocatorRef" and m0 != InMode:
+            raise ValueError, "MethodSkipArg1 should have dummy AllocatorRef first arg"
+        t1, n1, m1 = a1
+        if m1 != InMode:
+            raise ValueError, "method's 'self' must be 'InMode'"
+        dummy = Variable(t0, n0, m0)
+        self.argumentList.append(dummy)
+        self.itself = Variable(t1, "_self->ob_itself", SelfMode)
+        self.argumentList.append(self.itself)
+        FunctionGenerator.parseArgumentList(self, args)
 
 
 # Create the type objects
@@ -111,19 +111,19 @@
 PyObject *CFRange_New(CFRange *itself)
 {
 
-	return Py_BuildValue("ll", (long)itself->location, (long)itself->length);
+        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;
+        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) */
@@ -131,8 +131,8 @@
 OptionalCFURLRefObj_Convert(PyObject *v, CFURLRef *p_itself)
 {
     if ( v == Py_None ) {
-    	p_itself = NULL;
-    	return 1;
+        p_itself = NULL;
+        return 1;
     }
     return CFURLRefObj_Convert(v, p_itself);
 }
@@ -143,42 +143,42 @@
 /* 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);
+        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 (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;
+        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;
 }
 """
 
@@ -225,7 +225,7 @@
 CFURLPathStyle = Type("CFURLPathStyle", "l") #  a bit dangerous, it's an enum
 
 char_ptr = stringptr
-return_stringptr = Type("char *", "s")	# ONLY FOR RETURN VALUES!!
+return_stringptr = Type("char *", "s")  # ONLY FOR RETURN VALUES!!
 
 CFAllocatorRef = FakeType("(CFAllocatorRef)NULL")
 CFArrayCallBacks_ptr = FakeType("&kCFTypeArrayCallBacks")
@@ -251,233 +251,233 @@
 # Our (opaque) objects
 
 class MyGlobalObjectDefinition(PEP253Mixin, GlobalObjectDefinition):
-	def outputCheckNewArg(self):
-		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);")
-	def outputInitStructMembers(self):
-		GlobalObjectDefinition.outputInitStructMembers(self)
-##		Output("it->ob_freeit = NULL;")
-		Output("it->ob_freeit = CFRelease;")
-	def outputCheckConvertArg(self):
-		Out("""
-		if (v == Py_None) { *p_itself = NULL; return 1; }
-		/* Check for other CF objects here */
-		""")
-	def outputCleanupStructMembers(self):
-		Output("if (self->ob_freeit && self->ob_itself)")
-		OutLbrace()
-		Output("self->ob_freeit((CFTypeRef)self->ob_itself);")
-		Output("self->ob_itself = NULL;")
-		OutRbrace()
-		
-	def outputCompare(self):
-		Output()
-		Output("static int %s_compare(%s *self, %s *other)", self.prefix, self.objecttype, self.objecttype)
-		OutLbrace()
-		Output("/* XXXX Or should we use CFEqual?? */")
-		Output("if ( self->ob_itself > other->ob_itself ) return 1;")
-		Output("if ( self->ob_itself < other->ob_itself ) return -1;")
-		Output("return 0;")
-		OutRbrace()
-		
-	def outputHash(self):
-		Output()
-		Output("static int %s_hash(%s *self)", self.prefix, self.objecttype)
-		OutLbrace()
-		Output("/* XXXX Or should we use CFHash?? */")
-		Output("return (int)self->ob_itself;")
-		OutRbrace()
-		
-	def outputRepr(self):
-		Output()
-		Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype)
-		OutLbrace()
-		Output("char buf[100];")
-		Output("""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);""")
-		Output("return PyString_FromString(buf);")
-		OutRbrace()
+    def outputCheckNewArg(self):
+        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);")
+    def outputInitStructMembers(self):
+        GlobalObjectDefinition.outputInitStructMembers(self)
+##              Output("it->ob_freeit = NULL;")
+        Output("it->ob_freeit = CFRelease;")
+    def outputCheckConvertArg(self):
+        Out("""
+        if (v == Py_None) { *p_itself = NULL; return 1; }
+        /* Check for other CF objects here */
+        """)
+    def outputCleanupStructMembers(self):
+        Output("if (self->ob_freeit && self->ob_itself)")
+        OutLbrace()
+        Output("self->ob_freeit((CFTypeRef)self->ob_itself);")
+        Output("self->ob_itself = NULL;")
+        OutRbrace()
 
-	def output_tp_newBody(self):
-		Output("PyObject *self;")
-		Output
-		Output("if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;")
-		Output("((%s *)self)->ob_itself = NULL;", self.objecttype)
-		Output("((%s *)self)->ob_freeit = CFRelease;", self.objecttype)
-		Output("return self;")
-		
-	def output_tp_initBody(self):
-		Output("%s itself;", self.itselftype)
-		Output("char *kw[] = {\"itself\", 0};")
-		Output()
-		Output("if (PyArg_ParseTupleAndKeywords(args, kwds, \"O&\", kw, %s_Convert, &itself))",
-			self.prefix)
-		OutLbrace()
-		Output("((%s *)self)->ob_itself = itself;", self.objecttype)
-		Output("return 0;")
-		OutRbrace()
-		if self.prefix != 'CFTypeRefObj':
-			Output()
-			Output("/* Any CFTypeRef descendent is allowed as initializer too */")
-			Output("if (PyArg_ParseTupleAndKeywords(args, kwds, \"O&\", kw, CFTypeRefObj_Convert, &itself))")
-			OutLbrace()
-			Output("((%s *)self)->ob_itself = itself;", self.objecttype)
-			Output("return 0;")
-			OutRbrace()
-		Output("return -1;")
+    def outputCompare(self):
+        Output()
+        Output("static int %s_compare(%s *self, %s *other)", self.prefix, self.objecttype, self.objecttype)
+        OutLbrace()
+        Output("/* XXXX Or should we use CFEqual?? */")
+        Output("if ( self->ob_itself > other->ob_itself ) return 1;")
+        Output("if ( self->ob_itself < other->ob_itself ) return -1;")
+        Output("return 0;")
+        OutRbrace()
+
+    def outputHash(self):
+        Output()
+        Output("static int %s_hash(%s *self)", self.prefix, self.objecttype)
+        OutLbrace()
+        Output("/* XXXX Or should we use CFHash?? */")
+        Output("return (int)self->ob_itself;")
+        OutRbrace()
+
+    def outputRepr(self):
+        Output()
+        Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype)
+        OutLbrace()
+        Output("char buf[100];")
+        Output("""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);""")
+        Output("return PyString_FromString(buf);")
+        OutRbrace()
+
+    def output_tp_newBody(self):
+        Output("PyObject *self;")
+        Output
+        Output("if ((self = type->tp_alloc(type, 0)) == NULL) return NULL;")
+        Output("((%s *)self)->ob_itself = NULL;", self.objecttype)
+        Output("((%s *)self)->ob_freeit = CFRelease;", self.objecttype)
+        Output("return self;")
+
+    def output_tp_initBody(self):
+        Output("%s itself;", self.itselftype)
+        Output("char *kw[] = {\"itself\", 0};")
+        Output()
+        Output("if (PyArg_ParseTupleAndKeywords(args, kwds, \"O&\", kw, %s_Convert, &itself))",
+                self.prefix)
+        OutLbrace()
+        Output("((%s *)self)->ob_itself = itself;", self.objecttype)
+        Output("return 0;")
+        OutRbrace()
+        if self.prefix != 'CFTypeRefObj':
+            Output()
+            Output("/* Any CFTypeRef descendent is allowed as initializer too */")
+            Output("if (PyArg_ParseTupleAndKeywords(args, kwds, \"O&\", kw, CFTypeRefObj_Convert, &itself))")
+            OutLbrace()
+            Output("((%s *)self)->ob_itself = itself;", self.objecttype)
+            Output("return 0;")
+            OutRbrace()
+        Output("return -1;")
 
 class CFTypeRefObjectDefinition(MyGlobalObjectDefinition):
-	pass
-	
-class CFArrayRefObjectDefinition(MyGlobalObjectDefinition):
-	basetype = "CFTypeRef_Type"
-	
-	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%%8.8x for 0x%%8.8x>", (unsigned)self, (unsigned)self->ob_itself);""")
-		Output("return PyString_FromString(buf);")
-		OutRbrace()
-	
-class CFMutableArrayRefObjectDefinition(MyGlobalObjectDefinition):
-	basetype = "CFArrayRef_Type"
-	
-	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%%8.8x for 0x%%8.8x>", (unsigned)self, (unsigned)self->ob_itself);""")
-		Output("return PyString_FromString(buf);")
-		OutRbrace()
-	
-class CFDictionaryRefObjectDefinition(MyGlobalObjectDefinition):
-	basetype = "CFTypeRef_Type"
-	
-	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%%8.8x for 0x%%8.8x>", (unsigned)self, (unsigned)self->ob_itself);""")
-		Output("return PyString_FromString(buf);")
-		OutRbrace()
-	
-class CFMutableDictionaryRefObjectDefinition(MyGlobalObjectDefinition):
-	basetype = "CFDictionaryRef_Type"
-	
-	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%%8.8x for 0x%%8.8x>", (unsigned)self, (unsigned)self->ob_itself);""")
-		Output("return PyString_FromString(buf);")
-		OutRbrace()
-	
-class CFDataRefObjectDefinition(MyGlobalObjectDefinition):
-	basetype = "CFTypeRef_Type"
-	
-	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;
-		}
-		""")
+    pass
 
-	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%%8.8x for 0x%%8.8x>", (unsigned)self, (unsigned)self->ob_itself);""")
-		Output("return PyString_FromString(buf);")
-		OutRbrace()
-	
+class CFArrayRefObjectDefinition(MyGlobalObjectDefinition):
+    basetype = "CFTypeRef_Type"
+
+    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%%8.8x for 0x%%8.8x>", (unsigned)self, (unsigned)self->ob_itself);""")
+        Output("return PyString_FromString(buf);")
+        OutRbrace()
+
+class CFMutableArrayRefObjectDefinition(MyGlobalObjectDefinition):
+    basetype = "CFArrayRef_Type"
+
+    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%%8.8x for 0x%%8.8x>", (unsigned)self, (unsigned)self->ob_itself);""")
+        Output("return PyString_FromString(buf);")
+        OutRbrace()
+
+class CFDictionaryRefObjectDefinition(MyGlobalObjectDefinition):
+    basetype = "CFTypeRef_Type"
+
+    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%%8.8x for 0x%%8.8x>", (unsigned)self, (unsigned)self->ob_itself);""")
+        Output("return PyString_FromString(buf);")
+        OutRbrace()
+
+class CFMutableDictionaryRefObjectDefinition(MyGlobalObjectDefinition):
+    basetype = "CFDictionaryRef_Type"
+
+    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%%8.8x for 0x%%8.8x>", (unsigned)self, (unsigned)self->ob_itself);""")
+        Output("return PyString_FromString(buf);")
+        OutRbrace()
+
+class CFDataRefObjectDefinition(MyGlobalObjectDefinition):
+    basetype = "CFTypeRef_Type"
+
+    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)
+        OutLbrace()
+        Output("char buf[100];")
+        Output("""sprintf(buf, "<CFDataRef object at 0x%%8.8x for 0x%%8.8x>", (unsigned)self, (unsigned)self->ob_itself);""")
+        Output("return PyString_FromString(buf);")
+        OutRbrace()
+
 class CFMutableDataRefObjectDefinition(MyGlobalObjectDefinition):
-	basetype = "CFDataRef_Type"
-	
-	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%%8.8x for 0x%%8.8x>", (unsigned)self, (unsigned)self->ob_itself);""")
-		Output("return PyString_FromString(buf);")
-		OutRbrace()
+    basetype = "CFDataRef_Type"
+
+    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%%8.8x for 0x%%8.8x>", (unsigned)self, (unsigned)self->ob_itself);""")
+        Output("return PyString_FromString(buf);")
+        OutRbrace()
 
 class CFStringRefObjectDefinition(MyGlobalObjectDefinition):
-	basetype = "CFTypeRef_Type"
-	
-	def outputCheckConvertArg(self):
-		Out("""
-		if (v == Py_None) { *p_itself = NULL; return 1; }
-		if (PyString_Check(v)) {
-		    char *cStr;
-		    if (!PyArg_Parse(v, "es", "ascii", &cStr))
-		    	return NULL;
-			*p_itself = CFStringCreateWithCString((CFAllocatorRef)NULL, cStr, kCFStringEncodingASCII);
-			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;
-		}
-			
-		""")
+    basetype = "CFTypeRef_Type"
 
-	def outputRepr(self):
-		Output()
-		Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype)
-		OutLbrace()
-		Output("char buf[100];")
-		Output("""sprintf(buf, "<CFStringRef object at 0x%%8.8x for 0x%%8.8x>", (unsigned)self, (unsigned)self->ob_itself);""")
-		Output("return PyString_FromString(buf);")
-		OutRbrace()
+    def outputCheckConvertArg(self):
+        Out("""
+        if (v == Py_None) { *p_itself = NULL; return 1; }
+        if (PyString_Check(v)) {
+            char *cStr;
+            if (!PyArg_Parse(v, "es", "ascii", &cStr))
+                return NULL;
+                *p_itself = CFStringCreateWithCString((CFAllocatorRef)NULL, cStr, kCFStringEncodingASCII);
+                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;
+        }
+
+        """)
+
+    def outputRepr(self):
+        Output()
+        Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype)
+        OutLbrace()
+        Output("char buf[100];")
+        Output("""sprintf(buf, "<CFStringRef object at 0x%%8.8x for 0x%%8.8x>", (unsigned)self, (unsigned)self->ob_itself);""")
+        Output("return PyString_FromString(buf);")
+        OutRbrace()
 
 class CFMutableStringRefObjectDefinition(CFStringRefObjectDefinition):
-	basetype = "CFStringRef_Type"
-	
-	def outputCheckConvertArg(self):
-		# Mutable, don't allow Python strings
-		return MyGlobalObjectDefinition.outputCheckConvertArg(self)
-		
-	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%%8.8x for 0x%%8.8x>", (unsigned)self, (unsigned)self->ob_itself);""")
-		Output("return PyString_FromString(buf);")
-		OutRbrace()
+    basetype = "CFStringRef_Type"
+
+    def outputCheckConvertArg(self):
+        # Mutable, don't allow Python strings
+        return MyGlobalObjectDefinition.outputCheckConvertArg(self)
+
+    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%%8.8x for 0x%%8.8x>", (unsigned)self, (unsigned)self->ob_itself);""")
+        Output("return PyString_FromString(buf);")
+        OutRbrace()
 
 class CFURLRefObjectDefinition(MyGlobalObjectDefinition):
-	basetype = "CFTypeRef_Type"
-	
-	def outputRepr(self):
-		Output()
-		Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype)
-		OutLbrace()
-		Output("char buf[100];")
-		Output("""sprintf(buf, "<CFURL object at 0x%%8.8x for 0x%%8.8x>", (unsigned)self, (unsigned)self->ob_itself);""")
-		Output("return PyString_FromString(buf);")
-		OutRbrace()
+    basetype = "CFTypeRef_Type"
+
+    def outputRepr(self):
+        Output()
+        Output("static PyObject * %s_repr(%s *self)", self.prefix, self.objecttype)
+        OutLbrace()
+        Output("char buf[100];")
+        Output("""sprintf(buf, "<CFURL object at 0x%%8.8x for 0x%%8.8x>", (unsigned)self, (unsigned)self->ob_itself);""")
+        Output("return PyString_FromString(buf);")
+        OutRbrace()
 
 
 # ADD object class here
@@ -554,10 +554,10 @@
 
 if( data == NULL ) return PyErr_NoMemory();
 if ( CFStringGetCString(_self->ob_itself, data, size, 0) ) {
-	_res = (PyObject *)PyString_FromString(data);
+        _res = (PyObject *)PyString_FromString(data);
 } else {
-	PyErr_SetString(PyExc_RuntimeError, "CFStringGetCString could not fit the string");
-	_res = NULL;
+        PyErr_SetString(PyExc_RuntimeError, "CFStringGetCString could not fit the string");
+        _res = NULL;
 }
 free(data);
 return _res;
@@ -605,16 +605,16 @@
 CFStringRef errorString;
 if (!PyArg_ParseTuple(_args, "l",
                       &mutabilityOption))
-	return NULL;
+        return NULL;
 _rv = CFPropertyListCreateFromXMLData((CFAllocatorRef)NULL,
                                       _self->ob_itself,
                                       mutabilityOption,
                                       &errorString);
 if (errorString)
-	CFRelease(errorString);
+        CFRelease(errorString);
 if (_rv == NULL) {
-	PyErr_SetString(PyExc_RuntimeError, "Parse error in XML data");
-	return NULL;
+        PyErr_SetString(PyExc_RuntimeError, "Parse error in XML data");
+        return NULL;
 }
 _res = Py_BuildValue("O&",
                      CFTypeRefObj_New, _rv);
@@ -639,17 +639,17 @@
 CFTypeID typeid;
 
 if (!PyArg_ParseTuple(_args, "O&", PyCF_Python2CF, &rv))
-	return NULL;
+        return NULL;
 typeid = CFGetTypeID(rv);
 
 if (typeid == CFStringGetTypeID())
-	return Py_BuildValue("O&", CFStringRefObj_New, rv);
+        return Py_BuildValue("O&", CFStringRefObj_New, rv);
 if (typeid == CFArrayGetTypeID())
-	return Py_BuildValue("O&", CFArrayRefObj_New, rv);
+        return Py_BuildValue("O&", CFArrayRefObj_New, rv);
 if (typeid == CFDictionaryGetTypeID())
-	return Py_BuildValue("O&", CFDictionaryRefObj_New, rv);
+        return Py_BuildValue("O&", CFDictionaryRefObj_New, rv);
 if (typeid == CFURLGetTypeID())
-	return Py_BuildValue("O&", CFURLRefObj_New, rv);
+        return Py_BuildValue("O&", CFURLRefObj_New, rv);
 
 _res = Py_BuildValue("O&", CFTypeRefObj_New, rv);
 return _res;
@@ -663,4 +663,3 @@
 # generate output (open the output file as late as possible)
 SetOutputFileName(OUTPUTFILE)
 module.generate()
-