<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>