<pre style='margin:0'>
Clemens Lang (neverpanic) pushed a commit to branch master
in repository macports-base.

</pre>
<p><a href="https://github.com/macports/macports-base/commit/a6c94e123ded930415e989d5fb1b78da05027c62">https://github.com/macports/macports-base/commit/a6c94e123ded930415e989d5fb1b78da05027c62</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit a6c94e123ded930415e989d5fb1b78da05027c62
</span>Author: Rainer Müller <raimue@macports.org>
AuthorDate: Fri May 12 15:57:25 2017 +0200

<span style='display:block; white-space:pre;color:#404040;'>    Remove cflib1.0 which is unused and dead code
</span>---
 Makefile.in              |    2 +-
 src/cflib1.0/CFLib.c     | 1377 ----------------------------------------------
 src/cflib1.0/Makefile.in |   11 -
 3 files changed, 1 insertion(+), 1389 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/Makefile.in b/Makefile.in
</span><span style='display:block; white-space:pre;color:#808080;'>index c9217ad..3161f8d 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/Makefile.in
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/Makefile.in
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -16,7 +16,7 @@ include Mk/macports.autoconf.mk
</span> 
 all:: Mk/macports.autoconf.mk
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-Mk/macports.autoconf.mk: Mk/macports.autoconf.mk.in src/config.h.in Makefile.in doc/Makefile.in src/Makefile.in src/cflib1.0/Makefile.in src/cregistry/Makefile.in src/darwintracelib1.0/Makefile.in src/machista1.0/Makefile.in src/macports1.0/Makefile.in src/mpcommon1.0/Makefile.in src/package1.0/Makefile.in src/pextlib1.0/Makefile.in src/port/Makefile.in src/port1.0/Makefile.in src/programs/Makefile.in src/programs/daemondo/Makefile.in src/registry2.0/Makefile.in tests/Makefile.in vendor/ [...]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Mk/macports.autoconf.mk: Mk/macports.autoconf.mk.in src/config.h.in Makefile.in doc/Makefile.in src/Makefile.in src/cregistry/Makefile.in src/darwintracelib1.0/Makefile.in src/machista1.0/Makefile.in src/macports1.0/Makefile.in src/mpcommon1.0/Makefile.in src/package1.0/Makefile.in src/pextlib1.0/Makefile.in src/port/Makefile.in src/port1.0/Makefile.in src/programs/Makefile.in src/programs/daemondo/Makefile.in src/registry2.0/Makefile.in tests/Makefile.in vendor/Makefile.in config.status
</span>   ./config.status
        ${MAKE} clean
 
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/cflib1.0/CFLib.c b/src/cflib1.0/CFLib.c
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index ba85dad..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/cflib1.0/CFLib.c
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,1377 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * CFLib.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * CFLib.dylib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Copyright (c) 2003 Kevin Van Vechten <kevin@opendarwin.org>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * All rights reserved.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Redistribution and use in source and binary forms, with or without
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * modification, are permitted provided that the following conditions
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * are met:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * 1. Redistributions of source code must retain the above copyright
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *    notice, this list of conditions and the following disclaimer.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * 2. Redistributions in binary form must reproduce the above copyright
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *    notice, this list of conditions and the following disclaimer in the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *    documentation and/or other materials provided with the distribution.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * 3. Neither the name of the copyright owner nor the names of contributors
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *    may be used to endorse or promote products derived from this software
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *    without specific prior written permission.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * POSSIBILITY OF SUCH DAMAGE.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <tcl.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <CoreFoundation/CoreFoundation.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Wildebeest
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   TCL bindings for CoreFoundation
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Currently CFString, CFData, CFURL, CFArray, and CFDictionary are
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   toll free bridged.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Most of CFArray, CFDictionary, CFBundle, and CFPropertyList
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   have been implemented.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   TODO:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           Toll free bridges for CFNumber, CFDate, CFBoolean.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/* CFBase.h */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/* CFType ObjType */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int tclObjToCFString(Tcl_Interp*, Tcl_Obj*, CFTypeRef*);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int tclObjToCFType(Tcl_Interp* interp, Tcl_Obj* obj, CFTypeRef* outPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   *outPtr = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (obj->typePtr == Tcl_GetObjType("CFString") ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           obj->typePtr == Tcl_GetObjType("CFData") ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           obj->typePtr == Tcl_GetObjType("CFURL") ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           obj->typePtr == Tcl_GetObjType("CFNumber") ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           obj->typePtr == Tcl_GetObjType("CFArray") ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           obj->typePtr == Tcl_GetObjType("CFDictionary") ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           obj->typePtr == Tcl_GetObjType("CFBundle") ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           obj->typePtr == Tcl_GetObjType("CFType")) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           *outPtr = CFRetain(obj->internalRep.otherValuePtr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return tclObjToCFString(interp, obj, outPtr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return TCL_OK;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void cfTypeDupInternalRepProc(Tcl_Obj* srcPtr, Tcl_Obj* dupPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   dupPtr->typePtr = srcPtr->typePtr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   CFTypeRef cf = srcPtr->internalRep.otherValuePtr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   dupPtr->internalRep.otherValuePtr = cf ? (void*)CFRetain(cf) : NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void cfTypeFreeInternalRepProc(Tcl_Obj* objPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   objPtr->typePtr = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   CFTypeRef cf = objPtr->internalRep.otherValuePtr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (cf) CFRelease(cf);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void cfTypeUpdateStringProc2(Tcl_Obj* objPtr, CFStringRef str) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (str) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           CFIndex length = CFStringGetLength(str);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           CFIndex size = CFStringGetMaximumSizeForEncoding(length + 1, kCFStringEncodingUTF8);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           objPtr->bytes = Tcl_Alloc(size);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (objPtr->bytes) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   CFIndex bytesUsed;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   CFStringGetBytes(str, CFRangeMake(0, length), kCFStringEncodingUTF8, '?', 0, objPtr->bytes, size, &bytesUsed);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   objPtr->length = bytesUsed;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   objPtr->bytes[bytesUsed] = 0;        // terminating NUL as per TCL spec.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void cfTypeUpdateStringProc(Tcl_Obj* objPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   CFTypeRef cf = objPtr->internalRep.otherValuePtr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (cf) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           CFStringRef str = CFCopyDescription(cf);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (str) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   cfTypeUpdateStringProc2(objPtr, str);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   CFRelease(str);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int cfTypeSetFromAnyProc(Tcl_Interp* interp, Tcl_Obj* objPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_Obj* tcl_result = Tcl_NewStringObj("CFTypes must be created with CF constructors", -1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_SetObjResult(interp, tcl_result);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void cfTypeRegister() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   static Tcl_ObjType cfTypeType;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfTypeType.name = "CFType";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfTypeType.freeIntRepProc = cfTypeFreeInternalRepProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfTypeType.dupIntRepProc = cfTypeDupInternalRepProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfTypeType.updateStringProc = cfTypeUpdateStringProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfTypeType.setFromAnyProc = cfTypeSetFromAnyProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_RegisterObjType(&cfTypeType);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/* CFString.h */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// tcl string -> CFString implicit conversion
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int tclObjToCFString(Tcl_Interp* interp, Tcl_Obj* obj, CFTypeRef* outString) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   *outString = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (obj->typePtr != Tcl_GetObjType("CFString")) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           int length;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           char* buf = Tcl_GetStringFromObj(obj, &length);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (buf) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   *outString = CFStringCreateWithBytes(NULL, buf, length, kCFStringEncodingUTF8, 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           *outString = CFRetain(obj->internalRep.otherValuePtr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return TCL_OK;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// CFString -> tcl string implicit conversion
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static Tcl_Obj* cfStringToTCLString(CFStringRef cf) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_Obj* tcl_result = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (cf) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           CFIndex length = CFStringGetLength(cf);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           CFIndex size = CFStringGetMaximumSizeForEncoding(length, kCFStringEncodingUnicode);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           UniChar* buffer = (UniChar*)Tcl_Alloc(size);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (buffer) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   CFStringGetCharacters(cf, CFRangeMake(0, length), buffer);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   tcl_result = Tcl_NewUnicodeObj(buffer, length);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   Tcl_Free((char*)buffer);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return tcl_result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/* CFString ObjType */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int cfStringSetFromAnyProc(Tcl_Interp* interp, Tcl_Obj* objPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (objPtr->bytes) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           objPtr->internalRep.otherValuePtr = (void*)CFStringCreateWithBytes(NULL, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                                                                           objPtr->bytes,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                                                                           objPtr->length,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                                                                           kCFStringEncodingUTF8,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                                                                           0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return TCL_OK;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void cfStringUpdateStringProc(Tcl_Obj* objPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfTypeUpdateStringProc2(objPtr, objPtr->internalRep.otherValuePtr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void cfStringRegister() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   static Tcl_ObjType cfStringType;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfStringType.name = "CFString";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfStringType.freeIntRepProc = cfTypeFreeInternalRepProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfStringType.dupIntRepProc = cfTypeDupInternalRepProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfStringType.updateStringProc = cfStringUpdateStringProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfStringType.setFromAnyProc = cfStringSetFromAnyProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_RegisterObjType(&cfStringType);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/* CFData.h */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/* CFData ObjType */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// tcl string -> CFData implicit conversion
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int tclObjToCFData(Tcl_Interp* interp, Tcl_Obj* obj, CFTypeRef* outData) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   *outData = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (obj->typePtr != Tcl_GetObjType("CFData")) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           int length;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           char* buf = Tcl_GetStringFromObj(obj, &length);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (buf) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   *outData = CFDataCreate(NULL, buf, length);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           *outData = CFRetain(obj->internalRep.otherValuePtr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return TCL_OK;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int cfDataSetFromAnyProc(Tcl_Interp* interp, Tcl_Obj* objPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (objPtr->bytes) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           objPtr->internalRep.otherValuePtr = (void*)CFDataCreate(NULL, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                                                                           objPtr->bytes,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                                                                           objPtr->length);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return TCL_OK;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void cfDataUpdateStringProc(Tcl_Obj* objPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   CFDataRef data = objPtr->internalRep.otherValuePtr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (data) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           CFIndex length = CFDataGetLength(data);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           objPtr->bytes = Tcl_Alloc(length);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (objPtr->bytes) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   CFDataGetBytes(data, CFRangeMake(0, length), objPtr->bytes);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   objPtr->length = length;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void cfDataRegister() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   static Tcl_ObjType cfDataType;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfDataType.name = "CFData";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfDataType.freeIntRepProc = cfTypeFreeInternalRepProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfDataType.dupIntRepProc = cfTypeDupInternalRepProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfDataType.updateStringProc = cfDataUpdateStringProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfDataType.setFromAnyProc = cfDataSetFromAnyProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_RegisterObjType(&cfDataType);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/* CFArray.h */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/* CFArray ObjType */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// tcl list -> CFArray implicit conversion
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int tclObjToCFArray(Tcl_Interp* interp, Tcl_Obj* obj, CFTypeRef* outPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   int result = TCL_OK;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   *outPtr = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (obj->typePtr != Tcl_GetObjType("CFArray")) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           int objc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           Tcl_Obj** objv;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           result = Tcl_ListObjGetElements(interp, obj, &objc, &objv);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (result == TCL_OK) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   const void** argv = (const void**)Tcl_Alloc(sizeof(void*) * objc);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   int i;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   for (i = 0; i < objc; ++i) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           result = tclObjToCFType(interp, objv[i], (CFTypeRef*)&argv[i]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           if (result != TCL_OK) break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   if (result == TCL_OK) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           *outPtr = CFArrayCreate(NULL, argv, objc, &kCFTypeArrayCallBacks);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   Tcl_Free((char*)argv);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           *outPtr = CFRetain(obj->internalRep.otherValuePtr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int cfArraySetFromAnyProc(Tcl_Interp* interp, Tcl_Obj* objPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_Obj* tcl_result = Tcl_NewStringObj("CFArrays must be created with CFArrayCreate", -1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_SetObjResult(interp, tcl_result);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void cfArrayRegister() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   static Tcl_ObjType cfArrayType;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfArrayType.name = "CFArray";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfArrayType.freeIntRepProc = cfTypeFreeInternalRepProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfArrayType.dupIntRepProc = cfTypeDupInternalRepProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfArrayType.updateStringProc = cfTypeUpdateStringProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfArrayType.setFromAnyProc = cfArraySetFromAnyProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_RegisterObjType(&cfArrayType);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/* CFDictionary.h */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/* CFDictionary ObjType */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// tcl list -> CFDictionary implicit conversion
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int tclObjToCFDictionary(Tcl_Interp* interp, Tcl_Obj* obj, CFTypeRef* outPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   int result = TCL_OK;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   *outPtr = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (obj->typePtr != Tcl_GetObjType("CFDictionary")) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           int objc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           Tcl_Obj** objv;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           result = Tcl_ListObjGetElements(interp, obj, &objc, &objv);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (result == TCL_OK) {                 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   if (objc & 1) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           Tcl_Obj* tcl_result = Tcl_NewStringObj("list must have an even number of elements", -1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           Tcl_SetObjResult(interp, tcl_result);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           result = TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           const void** keys = (const void**)Tcl_Alloc(sizeof(void*) * objc / 2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           const void** vals = (const void**)Tcl_Alloc(sizeof(void*) * objc / 2);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           int i, j;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           for (i = 0, j = 0; i < objc; i += 2, ++j) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                   result = tclObjToCFType(interp, objv[i], (CFTypeRef*)&keys[j]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                   if (result != TCL_OK) break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                   result = tclObjToCFType(interp, objv[i+1], (CFTypeRef*)&vals[j]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                   if (result != TCL_OK) break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           if (result == TCL_OK) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                   *outPtr = CFDictionaryCreate(NULL, keys, vals, objc / 2, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           Tcl_Free((char*)keys);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           Tcl_Free((char*)vals);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           *outPtr = CFRetain(obj->internalRep.otherValuePtr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int cfDictionarySetFromAnyProc(Tcl_Interp* interp, Tcl_Obj* objPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_Obj* tcl_result = Tcl_NewStringObj("CFDictionaries must be created with CFDictionaryCreate", -1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_SetObjResult(interp, tcl_result);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void cfDictionaryRegister() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   static Tcl_ObjType cfDictionaryType;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfDictionaryType.name = "CFDictionary";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfDictionaryType.freeIntRepProc = cfTypeFreeInternalRepProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfDictionaryType.dupIntRepProc = cfTypeDupInternalRepProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfDictionaryType.updateStringProc = cfTypeUpdateStringProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfDictionaryType.setFromAnyProc = cfDictionarySetFromAnyProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_RegisterObjType(&cfDictionaryType);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/* CFNumber.h */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/* CFNumber ObjType */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int cfNumberSetFromAnyProc(Tcl_Interp* interp, Tcl_Obj* objPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_Obj* tcl_result = Tcl_NewStringObj("CFNumbers must be created with CFNumberCreate", -1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_SetObjResult(interp, tcl_result);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// XXX: consolidate with cfStringUpdateStringProc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void cfNumberUpdateStringProc(Tcl_Obj* objPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   CFNumberRef number = objPtr->internalRep.otherValuePtr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   CFStringRef str = CFStringCreateWithFormat(NULL, NULL, CFSTR("%@"), number);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (str) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           cfTypeUpdateStringProc2(objPtr, str);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           CFRelease(str);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void cfNumberRegister() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   static Tcl_ObjType cfNumberType;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfNumberType.name = "CFNumber";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfNumberType.freeIntRepProc = cfTypeFreeInternalRepProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfNumberType.dupIntRepProc = cfTypeDupInternalRepProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfNumberType.updateStringProc = cfNumberUpdateStringProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfNumberType.setFromAnyProc = cfNumberSetFromAnyProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_RegisterObjType(&cfNumberType);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-//CFNumberRef CFNumberCreate(CFAllocatorRef allocator, CFNumberType theType, const void *valuePtr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-int tclCFNumberCreate(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   CFStringRef string;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   int                     result = TCL_OK;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_Obj*        tcl_result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   char*           theType;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (objc != 3) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           Tcl_WrongNumArgs(interp, 1, objv, "theType value");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   theType = Tcl_GetStringFromObj(objv[1], NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   tcl_result = Tcl_NewObj();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   tcl_result->typePtr = Tcl_GetObjType("CFNumber");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   tcl_result->bytes = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   tcl_result->length = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   // This may be cutting corners, but since property lists only
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   // distinguish between real and integer, we'll only make that
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   // distinction here too.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (strcmp(theType, "kCFNumberSInt8Type") == 0 ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           strcmp(theType, "kCFNumberSInt16Type") == 0 ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           strcmp(theType, "kCFNumberSInt32Type") == 0 ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           strcmp(theType, "kCFNumberSInt64Type") == 0 ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           strcmp(theType, "kCFNumberCharType") == 0 ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           strcmp(theType, "kCFNumberShortType") == 0 ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           strcmp(theType, "kCFNumberIntType") == 0 ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           strcmp(theType, "kCFNumberLongType") == 0 ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           strcmp(theType, "kCFNumberLongLongType") == 0 ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           strcmp(theType, "kCFNumberCFIndexType") == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   long val;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   result = Tcl_GetLongFromObj(interp, objv[2], &val);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   if (result == TCL_ERROR) return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   tcl_result->internalRep.otherValuePtr = (void*)CFNumberCreate(NULL, kCFNumberLongType, &val);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else if (strcmp(theType, "kCFNumberFloatType") == 0 ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           strcmp(theType, "kCFNumberDoubleType") == 0 ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           strcmp(theType, "kCFNumberFloat32Type") == 0 ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           strcmp(theType, "kCFNumberFloat64Type") == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   double val;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   result = Tcl_GetDoubleFromObj(interp, objv[2], &val);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   if (result == TCL_ERROR) return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   tcl_result->internalRep.otherValuePtr = (void*)CFNumberCreate(NULL, kCFNumberDoubleType, &val);          
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           Tcl_Obj* tcl_result = Tcl_NewStringObj("unknown CFNumberType", -1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           Tcl_SetObjResult(interp, tcl_result);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_SetObjResult(interp, tcl_result);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/* CFURL.h */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// tcl string -> CFString implicit conversion
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int tclObjToCFURL(Tcl_Interp* interp, Tcl_Obj* obj, CFTypeRef* outURL) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   *outURL = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (obj->typePtr != Tcl_GetObjType("CFURL")) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           int length;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           char* buf = Tcl_GetStringFromObj(obj, &length);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (buf) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   *outURL = CFURLCreateWithBytes(NULL, buf, length, kCFStringEncodingUTF8, NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           *outURL = CFRetain(obj->internalRep.otherValuePtr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return TCL_OK;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// CFString -> tcl string implicit conversion
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static Tcl_Obj* cfURLToTCLString(CFURLRef url) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   CFDataRef data = CFURLCreateData(NULL, url, kCFStringEncodingUTF8, 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_Obj* tcl_result = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (data) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           CFIndex length = CFDataGetLength(data);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           char* buffer = Tcl_Alloc(length);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (buffer) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   CFDataGetBytes(data, CFRangeMake(0, length), buffer);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   tcl_result = Tcl_NewStringObj(buffer, length);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   Tcl_Free(buffer);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return tcl_result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-*/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/* CFString ObjType */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int cfURLSetFromAnyProc(Tcl_Interp* interp, Tcl_Obj* objPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (objPtr->bytes) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           objPtr->internalRep.otherValuePtr = (void*)CFURLCreateWithBytes(NULL, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                                                                           objPtr->bytes,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                                                                           objPtr->length,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                                                                           kCFStringEncodingUTF8,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                                                                           NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (objPtr->internalRep.otherValuePtr == NULL) return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return TCL_OK;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void cfURLUpdateStringProc(Tcl_Obj* objPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   CFURLRef url = objPtr->internalRep.otherValuePtr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (url) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           CFURLRef absurl = CFURLCopyAbsoluteURL(url);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (absurl) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   CFStringRef str = CFURLGetString(absurl);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   cfTypeUpdateStringProc2(objPtr, str);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   CFRelease(absurl);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void cfURLRegister() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   static Tcl_ObjType cfURLType;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfURLType.name = "CFURL";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfURLType.freeIntRepProc = cfTypeFreeInternalRepProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfURLType.dupIntRepProc = cfTypeDupInternalRepProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfURLType.updateStringProc = cfURLUpdateStringProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfURLType.setFromAnyProc = cfURLSetFromAnyProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_RegisterObjType(&cfURLType);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/* CFBase.h */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static Tcl_Obj* cfTypeToTCLString(CFTypeRef cf) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (CFGetTypeID(cf) == CFStringGetTypeID()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return cfStringToTCLString(cf);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           CFStringRef string = CFCopyDescription(cf);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return cfStringToTCLString(string);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// CFGetTypeID(cf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-int tclCFGetTypeID(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   CFTypeRef cf;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_Obj* tcl_result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (objc != 2) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           Tcl_WrongNumArgs(interp, 1, objv, "cftype");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cf = objv[1]->internalRep.otherValuePtr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (cf) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           // xxx: test for valid objv[1]->typePtr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           tcl_result = Tcl_NewIntObj(CFGetTypeID(cf));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (!tcl_result) return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           Tcl_SetObjResult(interp, tcl_result);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return TCL_OK;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-// CFNumberGetTypeID(), CFStringGetTypeID(), et al.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-int tclCFGetTypeID2(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_Obj* tcl_result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (objc != 1) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           Tcl_WrongNumArgs(interp, 1, objv, "");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   tcl_result = Tcl_NewIntObj((int)clientData);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (!tcl_result) return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_SetObjResult(interp, tcl_result);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return TCL_OK;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/* CFPropertyList.h */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int tclObjToCFPropertyList(Tcl_Interp* interp, Tcl_Obj* obj, CFTypeRef* outPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   *outPtr = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (obj->typePtr == Tcl_GetObjType("CFString") ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           obj->typePtr == Tcl_GetObjType("CFData") ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           obj->typePtr == Tcl_GetObjType("CFNumber") ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           obj->typePtr == Tcl_GetObjType("CFArray") ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           obj->typePtr == Tcl_GetObjType("CFDictionary")) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           *outPtr = CFRetain(obj->internalRep.otherValuePtr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return tclObjToCFString(interp, obj, outPtr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return TCL_OK;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int tclObjToCFPropertyListFormat(Tcl_Interp* interp, Tcl_Obj* obj, CFTypeRef* outPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   int result = TCL_OK, length;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   char* buf = Tcl_GetStringFromObj(obj, &length);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   *outPtr = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (buf && strcmp(buf, "kCFPropertyListOpenStepFormat") == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           *outPtr = (CFTypeRef) kCFPropertyListOpenStepFormat;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else if (buf && strcmp(buf, "kCFPropertyListXMLFormat_v1_0") == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           *outPtr = (CFTypeRef) kCFPropertyListXMLFormat_v1_0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else if (buf && strcmp(buf, "kCFPropertyListBinaryFormat_v1_0") == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           *outPtr = (CFTypeRef) kCFPropertyListBinaryFormat_v1_0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           Tcl_Obj* tcl_result = Tcl_NewStringObj("invalid property list format constant", -1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           Tcl_SetObjResult(interp, tcl_result);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           result = TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int tclObjToCFMutabilityOption(Tcl_Interp* interp, Tcl_Obj* obj, CFTypeRef* outPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   int result = TCL_OK, length;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   char* buf = Tcl_GetStringFromObj(obj, &length);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   *outPtr = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (buf && strcmp(buf, "kCFPropertyListImmutable") == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           *outPtr = (CFTypeRef) kCFPropertyListImmutable;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else if (buf && strcmp(buf, "kCFPropertyListMutableContainers") == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           *outPtr = (CFTypeRef) kCFPropertyListMutableContainers;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else if (buf && strcmp(buf, "kCFPropertyListMutableContainersAndLeaves") == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           *outPtr = (CFTypeRef) kCFPropertyListMutableContainersAndLeaves;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           Tcl_Obj* tcl_result = Tcl_NewStringObj("invalid mutability option constant", -1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           Tcl_SetObjResult(interp, tcl_result);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           result = TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/* CFBundle.h */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/* CFBundle ObjType */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int tclObjToCFBundle(Tcl_Interp* interp, Tcl_Obj* obj, CFTypeRef* outPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   *outPtr = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (obj->typePtr == Tcl_GetObjType("CFBundle")) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           *outPtr = CFRetain(obj->internalRep.otherValuePtr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           Tcl_Obj* tcl_result = Tcl_NewStringObj("argument must be a CFBundle", -1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           Tcl_SetObjResult(interp, tcl_result);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return TCL_OK;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int cfBundleSetFromAnyProc(Tcl_Interp* interp, Tcl_Obj* objPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_Obj* tcl_result = Tcl_NewStringObj("CFBundles must be created with CFBundleCreate", -1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_SetObjResult(interp, tcl_result);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void cfBundleUpdateStringProc(Tcl_Obj* objPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   CFBundleRef bundle = objPtr->internalRep.otherValuePtr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (bundle) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           CFStringRef description = CFCopyDescription(bundle);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (description) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   CFIndex length = CFStringGetLength(description);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   CFIndex size = CFStringGetMaximumSizeForEncoding(length + 1, kCFStringEncodingUTF8);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   objPtr->bytes = Tcl_Alloc(size);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   if (objPtr->bytes) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           CFIndex bytesUsed;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           CFStringGetBytes(description, CFRangeMake(0, length), kCFStringEncodingUTF8, '?', 0, objPtr->bytes, size, &bytesUsed);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           objPtr->length = bytesUsed;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           objPtr->bytes[bytesUsed] = 0;        // terminating NUL as per TCL spec.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   CFRelease(description);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void cfBundleDupInternalRepProc(Tcl_Obj* srcPtr, Tcl_Obj* dupPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   CFBundleRef bundle = srcPtr->internalRep.otherValuePtr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   dupPtr->internalRep.otherValuePtr = bundle ? (void*)CFRetain(bundle) : NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void cfBundleFreeInternalRepProc(Tcl_Obj* objPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   CFBundleRef bundle = objPtr->internalRep.otherValuePtr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (bundle) CFRelease(bundle);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void cfBundleRegister() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   static Tcl_ObjType cfBundleType;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfBundleType.name = "CFBundle";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfBundleType.freeIntRepProc = cfBundleFreeInternalRepProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfBundleType.dupIntRepProc = cfBundleDupInternalRepProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfBundleType.updateStringProc = cfBundleUpdateStringProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfBundleType.setFromAnyProc = cfBundleSetFromAnyProc;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_RegisterObjType(&cfBundleType);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-enum {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   LITERAL,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   CFTYPE,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   CFRANGE,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   CFINDEX,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   CFERRORSTR,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   END
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-typedef struct cfParam {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   int kind;                       // LITERAL (doesn't pop argument), CFTYPE (32bit), CFRANGE (64bit)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   char* class;            // if present, type check, if null, don't type check.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   int (*func)(Tcl_Interp*, Tcl_Obj*, CFTypeRef*); // conversion function or literal value.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-} cfParam;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-typedef struct cfSignature {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   char* name;                     // name of CF function to call
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   void* func;                     // pointer to CF function to call
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   char* format;           // tcl format string
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   char* result;           // type of result
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   int releaseResult;      // true if result should be released (create and copy funcs)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfParam argv[10];       // description of arguments
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-} cfSignature;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int tclCFFunc(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfSignature* sig = (cfSignature*)clientData;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   int result = TCL_OK;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_Obj* tcl_result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   void* res;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   int i, j, k;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   void** args;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   // iterate through argv and count up all non-LITERALs
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   // this is the expected objc.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   for (i = 0, j = 1; sig->argv[i].kind != END; ++i) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (sig->argv[i].kind != LITERAL && sig->argv[i].kind != CFERRORSTR) ++j;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (objc != j) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           Tcl_WrongNumArgs(interp, 1, objv, sig->format);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   args = (void**)Tcl_Alloc(sizeof(void*) * /* argc */ 20);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   for (i = 0, j = 0, k = 1; sig->argv[j].kind != END; ++i, ++j) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           // i is index to local args array.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           // j is index to argv
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           // k is index to objv
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           // Copy literal value, don't pop from Tcl stack.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           switch (sig->argv[j].kind) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   case LITERAL:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           args[i] = (void*)sig->argv[j].func;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   case CFTYPE:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           // test that the classes match, if both are set.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           //if (!sig->argv[j].class || objv[k]->typePtr == NULL || objv[k]->typePtr == Tcl_GetObjType(sig->argv[j].class)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                   result = sig->argv[j].func(interp, objv[k], (CFTypeRef*) &args[i]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           //} else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           //      Tcl_Obj* tcl_result = Tcl_NewStringObj("argument must be a ", -1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           //      Tcl_AppendToObj(tcl_result, sig->argv[j].class, -1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           //      Tcl_SetObjResult(interp, tcl_result);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           //      result = TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           //}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           ++k;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   case CFINDEX:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           result = Tcl_GetIntFromObj(interp, objv[k], (int*) &args[i]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           ++k;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   case CFERRORSTR:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           args[i] = (void*) Tcl_Alloc(sizeof(CFStringRef));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   case CFRANGE:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           ++k;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   default:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (result != TCL_OK) break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (result == TCL_OK) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   objc = i;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (objc == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           res = ((void* (*)())sig->func)();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else if (objc == 1) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           res = ((void* (*)(void*))sig->func)(args[0]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else if (objc == 2) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           res = ((void* (*)(void*,void*))sig->func)(args[0],args[1]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else if (objc == 3) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           res = ((void* (*)(void*,void*,void*))sig->func)(args[0],args[1],args[2]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else if (objc == 4) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           res = ((void* (*)(void*,void*,void*,void*))sig->func)(args[0],args[1],args[2],args[3]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else if (objc == 5) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           res = ((void* (*)(void*,void*,void*,void*,void*))sig->func)(args[0],args[1],args[2],args[3],args[4]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } else if (objc == 6) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           res = ((void* (*)(void*,void*,void*,void*,void*,void*))sig->func)(args[0],args[1],args[2],args[3],args[4],args[5]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (sig->result && strcmp(sig->result, "void") != 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           tcl_result = Tcl_NewObj();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           tcl_result->bytes = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           tcl_result->length = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (strcmp(sig->result, "CFType") == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   if (res) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           CFTypeID id = CFGetTypeID(res);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           if (id == CFStringGetTypeID()) tcl_result->typePtr = Tcl_GetObjType("CFString");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           else if (id == CFNumberGetTypeID()) tcl_result->typePtr = Tcl_GetObjType("CFNumber");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           else if (id == CFDataGetTypeID()) tcl_result->typePtr = Tcl_GetObjType("CFData");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           else if (id == CFURLGetTypeID()) tcl_result->typePtr = Tcl_GetObjType("CFURL");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           else if (id == CFBundleGetTypeID()) tcl_result->typePtr = Tcl_GetObjType("CFBundle");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           else if (id == CFDictionaryGetTypeID()) tcl_result->typePtr = Tcl_GetObjType("CFDictionary");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           else if (id == CFArrayGetTypeID()) tcl_result->typePtr = Tcl_GetObjType("CFArray");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           else tcl_result->typePtr = Tcl_GetObjType("CFType");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           tcl_result->internalRep.otherValuePtr = (void*)CFRetain(res);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           Tcl_SetObjResult(interp, tcl_result);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           if (sig->releaseResult) CFRelease(res);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           tcl_result->typePtr = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           tcl_result->internalRep.otherValuePtr = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           } else if (strcmp(sig->result, "CFIndex") == 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   tcl_result = Tcl_NewIntObj((int)res);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   Tcl_SetObjResult(interp, tcl_result);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   } // end TCL_OK
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   for (i = 0; sig->argv[i].kind != END; ++i) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (sig->argv[i].kind == CFERRORSTR && result == TCL_OK) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   if (*((CFStringRef*)args[i])) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           Tcl_Obj* tcl_result = cfStringToTCLString(*((CFStringRef*)args[i]));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           Tcl_SetObjResult(interp, tcl_result);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           result = TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   Tcl_Free(args[i]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (args) Tcl_Free((char*)args);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-int Cflib_Init(Tcl_Interp *interp)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   int i;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   static cfSignature sig[] = {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           /* CFBundle.h */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleGetMainBundle", CFBundleGetMainBundle, "", "CFType", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   { 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleGetBundleWithIdentifier", CFBundleGetBundleWithIdentifier, "", "CFType", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFString", tclObjToCFString },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleGetAllBundles", CFBundleGetAllBundles, "", "CFType", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   { 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleCreate", CFBundleCreate, "bundleURL", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   { 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { LITERAL, NULL, NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFURL", tclObjToCFURL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleCreateBundlesFromDirectory", CFBundleCreateBundlesFromDirectory, "directoryURL bundleType", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   { 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { LITERAL, NULL, NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFURL", tclObjToCFURL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFString", tclObjToCFString },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleCopyBundleURL", CFBundleCopyBundleURL, "bundle", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFBundle", tclObjToCFBundle },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleGetValueForInfoDictionaryKey", CFBundleGetValueForInfoDictionaryKey, "bundle key", "CFType", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFBundle", tclObjToCFBundle },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFString", tclObjToCFString },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleGetInfoDictionary", CFBundleGetInfoDictionary, "bundle", "CFType", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFBundle", tclObjToCFBundle },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleGetLocalInfoDictionary", CFBundleGetLocalInfoDictionary, "bundle", "CFType", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFBundle", tclObjToCFBundle },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           // CFBundleGetPackageInfo
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleGetIdentifier", CFBundleGetIdentifier, "bundle", "CFType", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFBundle", tclObjToCFBundle },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleGetVersionNumber", CFBundleGetVersionNumber, "bundle", "CFIndex", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFBundle", tclObjToCFBundle },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleGetDevelopmentRegion", CFBundleGetDevelopmentRegion, "bundle", "CFType", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFBundle", tclObjToCFBundle },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleCopySupportFilesDirectoryURL", CFBundleCopySupportFilesDirectoryURL, "bundle", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFBundle", tclObjToCFBundle },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleCopyResourcesDirectoryURL", CFBundleCopyResourcesDirectoryURL, "bundle", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFBundle", tclObjToCFBundle },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleCopyPrivateFrameworksURL", CFBundleCopyPrivateFrameworksURL, "bundle", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFBundle", tclObjToCFBundle },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleCopySharedFrameworksURL", CFBundleCopySharedFrameworksURL, "bundle", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFBundle", tclObjToCFBundle },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleCopySharedSupportURL", CFBundleCopySharedSupportURL, "bundle", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFBundle", tclObjToCFBundle },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleCopyBuiltInPlugInsURL", CFBundleCopyBuiltInPlugInsURL, "bundle", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFBundle", tclObjToCFBundle },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleCopyInfoDictionaryInDirectory", CFBundleCopyResourcesDirectoryURL, "bundelURL", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFURL", tclObjToCFURL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           // CFBundleGetPackageInfoInDirectory
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleCopyResourceURL", CFBundleCopyResourceURL, "bundle resourceName resourceType subDirName", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFBundle", tclObjToCFBundle },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFString", tclObjToCFString },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFString", tclObjToCFString },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFString", tclObjToCFString },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleCopyResourceURLsOfType", CFBundleCopyResourceURLsOfType, "bundle resourceType subDirName", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFBundle", tclObjToCFType },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFString", tclObjToCFString },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFString", tclObjToCFString },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleCopyLocalizedString", CFBundleCopyLocalizedString, "bundle key value tableName", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFBundle", tclObjToCFBundle },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFString", tclObjToCFString },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFString", tclObjToCFString },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFString", tclObjToCFString },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleCopyResourceURLInDirectory", CFBundleCopyResourceURLInDirectory, "bundleURL resourceName resourceType subDirName", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFURL", tclObjToCFURL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFString", tclObjToCFString },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFString", tclObjToCFString },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFString", tclObjToCFString },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleCopyResourceURLsOfTypeInDirectory", CFBundleCopyResourceURLsOfTypeInDirectory, "bundleURL resourceType subDirName", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFURL", tclObjToCFURL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFString", tclObjToCFString },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFString", tclObjToCFString },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleCopyBundleLocalizations", CFBundleCopyBundleLocalizations, "bundle", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFBundle", tclObjToCFBundle },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleCopyPreferredLocalizationsFromArray", CFBundleCopyPreferredLocalizationsFromArray, "locArray", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFArray", tclObjToCFArray },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFBundleCopyLocalizationsForPreferences", CFBundleCopyPreferredLocalizationsFromArray, "locArray prefArray", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFArray", tclObjToCFArray },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFArray", tclObjToCFArray },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           // CFBundleCopyResourceURLForLocalization
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           // CFBundleCopyResourceURLsOfTypeForLocalization
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           // CFBundleCopyInfoDictionaryForURL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           // CFBundleCopyLocalizationsForURL
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           /* CFPropertyList.h */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFPropertyListCreateFromXMLData", CFPropertyListCreateFromXMLData, "xmlData mutabilityOption", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { LITERAL, NULL, NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFData", tclObjToCFData },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFMutabilityOption },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFERRORSTR, NULL, NULL }, // xxx: error string
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFPropertyListCreateXMLData", CFPropertyListCreateXMLData, "propertyList", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { LITERAL, NULL, NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFPropertyList }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFPropertyListCreateDeepCopy", CFPropertyListCreateDeepCopy, "propertyList mutabilityOption", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { LITERAL, NULL, NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFPropertyList },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFMutabilityOption },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFPropertyListIsValid", CFPropertyListIsValid, "propertyList format", "CFIndex", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFPropertyList },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFPropertyListFormat },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           // CFPropertyListWriteToStream
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           // CFPropertyListCreateFromStream
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           /* CFArray.h */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           // CFArrayCreate
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFArrayCreateCopy", CFArrayCreateCopy, "theArray", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { LITERAL, NULL, NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFArray", NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFArrayCreateMutable", CFArrayCreateMutable, "capacity", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { LITERAL, NULL, NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFINDEX, "CFIndex", NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { LITERAL, NULL, (void*)&kCFTypeArrayCallBacks },   // xxx: func to handle callbacks
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFArrayCreateMutableCopy", CFArrayCreateMutableCopy, "capacity theArray", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { LITERAL, NULL, NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFINDEX, "CFIndex", NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFArray", NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFArrayGetCount", CFDictionaryGetCount, "theArray", "CFIndex", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFArray", tclObjToCFArray },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFArrayGetCountOfValue", CFArrayGetCountOfValue, "theArray start end value", "CFIndex", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFArray", tclObjToCFArray },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFINDEX, NULL, NULL },        // xxx: these part of CFRange
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFINDEX, NULL, NULL }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFType }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFArrayContainsValue", CFArrayContainsValue, "theArray start end value", "CFIndex", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFArray", tclObjToCFArray },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFINDEX, NULL, NULL },        // xxx: these part of CFRange
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFINDEX, NULL, NULL }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFType }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFArrayGetValueAtIndex", CFArrayGetValueAtIndex, "theArray index", "CFType", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFArray", tclObjToCFArray },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFINDEX, NULL, NULL }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           // CFArrayGetValues
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           // CFArrayApplyFunction
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFArrayGetFirstIndexOfValue", CFArrayGetFirstIndexOfValue, "theArray start end value", "CFIndex", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFArray", tclObjToCFArray },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFINDEX, NULL, NULL },        // xxx: these part of CFRange
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFINDEX, NULL, NULL }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFType }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFArrayGetLastIndexOfValue", CFArrayGetLastIndexOfValue, "theArray start end value", "CFIndex", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFArray", tclObjToCFArray },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFINDEX, NULL, NULL },        // xxx: these part of CFRange
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFINDEX, NULL, NULL }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFType }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           // CFArrayBSearchValues
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFArrayAppendValue", CFArrayAppendValue, "theArray index", "void", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFArray", tclObjToCFArray },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFType }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFArrayInsertValueAtIndex", CFArrayInsertValueAtIndex, "theArray index value", "void", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFArray", tclObjToCFArray },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFINDEX, NULL, NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFType }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFArraySetValueAtIndex", CFArraySetValueAtIndex, "theArray index value", "void", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFArray", tclObjToCFArray },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFINDEX, NULL, NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFType }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFArrayRemoveValueAtIndex", CFArrayRemoveValueAtIndex, "theArray index", "void", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFArray", tclObjToCFArray },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFINDEX, NULL, NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFArrayRemoveAllValues", CFArrayRemoveAllValues, "theArray", "void", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFArray", tclObjToCFArray },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           // CFArrayReplaceValues
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFArrayExchangeValuesAtIndices", CFArrayExchangeValuesAtIndices, "theArray idx1 idx2", "void", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFArray", tclObjToCFArray },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFINDEX, NULL, NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFINDEX, NULL, NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           // CFArraySortValues
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFArrayAppendArray", CFArrayAppendArray, "theArray otherArray start end", "void", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFArray", tclObjToCFArray },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFArray", tclObjToCFArray },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFINDEX, NULL, NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFINDEX, NULL, NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           /* CFDictionary.h */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           // CFDictionaryCreate
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFDictionaryCreateCopy", CFDictionaryCreateCopy, "theDict", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { LITERAL, NULL, NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFDictionary", NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFDictionaryCreateMutable", CFDictionaryCreateMutable, "capacity", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { LITERAL, NULL, NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFINDEX, "CFIndex", NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { LITERAL, NULL, (void*)&kCFTypeDictionaryKeyCallBacks },   // xxx: func to handle callbacks
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { LITERAL, NULL, (void*)&kCFTypeDictionaryValueCallBacks }, // xxx: func to handle callbacks
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFDictionaryCreateMutableCopy", CFDictionaryCreateMutableCopy, "capacity theDict", "CFType", 1,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { LITERAL, NULL, NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFINDEX, "CFIndex", NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFDictionary", NULL },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFDictionaryGetCount", CFDictionaryGetCount, "dictionary", "CFIndex", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFDictionary", tclObjToCFDictionary },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFDictionaryGetCountOfKey", CFDictionaryGetCountOfKey, "dictionary key", "CFIndex", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFDictionary", tclObjToCFDictionary },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFType }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFDictionaryGetCountOfValue", CFDictionaryGetCountOfValue, "dictionary value", "CFIndex", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFDictionary", tclObjToCFDictionary },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFType }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFDictionaryContainsKey", CFDictionaryContainsKey, "dictionary key", "CFIndex", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFDictionary", tclObjToCFDictionary },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFType }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFDictionaryContainsValue", CFDictionaryContainsValue, "dictionary value", "CFIndex", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFDictionary", tclObjToCFDictionary },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFType }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFDictionaryGetValue", CFDictionaryGetValue, "dictionary key", "CFType", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFDictionary", tclObjToCFDictionary },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFType }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           // CFDictionaryGetValueIfPresent
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           // CFDictionaryGetKeysAndValues
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           // CFDictionaryApplyFunction
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFDictionaryAddValue", CFDictionaryAddValue, "dictionary key value", "void", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFDictionary", tclObjToCFDictionary },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFType }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFType }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFDictionarySetValue", CFDictionarySetValue, "dictionary key value", "void", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFDictionary", tclObjToCFDictionary },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFType }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFType }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFDictionaryReplaceValue", CFDictionaryReplaceValue, "dictionary key value", "void", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFDictionary", tclObjToCFDictionary },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFType }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFType }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFDictionaryRemoveValue", CFDictionaryRemoveValue, "dictionary key", "void", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFDictionary", tclObjToCFDictionary },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, NULL, tclObjToCFType }, 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   "CFDictionaryRemoveAllValues", CFDictionaryRemoveAllValues, "dictionary", "void", 0,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { CFTYPE, "CFDictionary", tclObjToCFDictionary },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           { END, NULL, NULL }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   NULL, NULL, NULL, NULL, 0, { { END, NULL, NULL } }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if(Tcl_InitStubs(interp, "8.4", 0) == NULL)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   for (i = 0; sig[i].name != NULL; ++i) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           Tcl_CreateObjCommand(interp, sig[i].name, tclCFFunc, &sig[i], NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfTypeRegister();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfStringRegister();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfNumberRegister();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfDataRegister();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfBundleRegister();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfURLRegister();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfDictionaryRegister();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   cfArrayRegister();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_CreateObjCommand(interp, "CFGetTypeID", tclCFGetTypeID, NULL, NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_CreateObjCommand(interp, "CFStringGetTypeID", tclCFGetTypeID2, (void*)CFStringGetTypeID(), NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_CreateObjCommand(interp, "CFNumberCreate", tclCFNumberCreate, NULL, NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_CreateObjCommand(interp, "CFNumberGetTypeID", tclCFGetTypeID2, (void*)CFNumberGetTypeID(), NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_CreateObjCommand(interp, "CFURLGetTypeID", tclCFGetTypeID2, (void*)CFURLGetTypeID(), NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_CreateObjCommand(interp, "CFBundleGetTypeID", tclCFGetTypeID2, (void*)CFBundleGetTypeID(), NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_CreateObjCommand(interp, "CFDictionaryGetTypeID", tclCFGetTypeID2, (void*)CFDictionaryGetTypeID(), NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_CreateObjCommand(interp, "CFArrayGetTypeID", tclCFGetTypeID2, (void*)CFArrayGetTypeID(), NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   //Tcl_CreateObjCommand(interp, "CFBundleCreateBundlesFromDirectory", tclCFBundleCreateBundlesFromDirectory, NULL, NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if(Tcl_PkgProvide(interp, "CFLib", "1.0") != TCL_OK)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return TCL_OK;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/cflib1.0/Makefile.in b/src/cflib1.0/Makefile.in
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index ddb1a55..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/cflib1.0/Makefile.in
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,11 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-srcdir = @srcdir@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-VPATH  = @srcdir@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-include ../../Mk/macports.autoconf.mk
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-OBJS=              CFLib.o
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-SHLIB_NAME=        CFLib${SHLIB_SUFFIX}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-LIBS+=             -framework CoreFoundation
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-INSTALLDIR= ${DESTDIR}${TCL_PACKAGE_PATH}/cflib1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-include $(srcdir)/../../Mk/macports.tea.mk
</span></pre><pre style='margin:0'>

</pre>