<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/8d12c7fdad8f99fc49a049f9dd1c795781500f8e">https://github.com/macports/macports-base/commit/8d12c7fdad8f99fc49a049f9dd1c795781500f8e</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 8d12c7fdad8f99fc49a049f9dd1c795781500f8e
</span>Author: Rainer Müller <raimue@macports.org>
AuthorDate: Fri May 12 16:02:20 2017 +0200

<span style='display:block; white-space:pre;color:#404040;'>    Remove tclobjc1.0 which is unused and dead code
</span>---
 src/tclobjc1.0/MPMethodSignatureExtensions.h |  40 -----
 src/tclobjc1.0/MPMethodSignatureExtensions.m | 144 ----------------
 src/tclobjc1.0/Makefile.in                   |  22 ---
 src/tclobjc1.0/objc_encoding.h               |  62 -------
 src/tclobjc1.0/objc_encoding.m               | 126 --------------
 src/tclobjc1.0/tclobjc.h                     |  38 -----
 src/tclobjc1.0/tclobjc.m                     | 245 ---------------------------
 src/tclobjc1.0/tclobjc_types.h               |  34 ----
 src/tclobjc1.0/tclobjc_types.m               | 207 ----------------------
 9 files changed, 918 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/tclobjc1.0/MPMethodSignatureExtensions.h b/src/tclobjc1.0/MPMethodSignatureExtensions.h
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index d45eb38..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/tclobjc1.0/MPMethodSignatureExtensions.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,40 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * MPMethodSignatureExtensions.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Copyright (c) 2004 Landon J. Fuller <landonf@macports.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;'>-#ifdef HAVE_CONFIG_H
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <config.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <Foundation/Foundation.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-unsigned int tclobjc_getarg_typespecifier (NSMethodSignature* signature, unsigned int index);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-const char *tclobjc_getarg_typestring (NSMethodSignature* signature, unsigned int index);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-const char *tclobjc_getreturn_typestring (NSMethodSignature* signature);
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/tclobjc1.0/MPMethodSignatureExtensions.m b/src/tclobjc1.0/MPMethodSignatureExtensions.m
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 56c25a4..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/tclobjc1.0/MPMethodSignatureExtensions.m
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,144 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * MPMethodSignatureExtension.m
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Copyright (c) 2004 Landon J. Fuller <landonf@macports.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;'>-#ifdef HAVE_CONFIG_H
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <config.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include "MPMethodSignatureExtensions.h"
</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;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include "objc_encoding.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#ifdef GNU_RUNTIME
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-unsigned int tclobjc_getarg_typespecifier (NSMethodSignature* signature, unsigned int index) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           NSArgumentInfo info;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           info = [signature argumentInfoAtIndex: index];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return info.qual;    
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-const char *tclobjc_getarg_typestring (NSMethodSignature* signature, unsigned int index) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    return [signature getArgumentTypeAtIndex: index];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-const char *tclobjc_getreturn_typestring (NSMethodSignature* signature) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    return [signature methodReturnType];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#elif defined(APPLE_RUNTIME)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/**
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Skips any initial argument type specifiers, and returns a pointer
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * to the argument type.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static const char *strip_specifiers (const char *type) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   const char *p;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   for (p = type; p != '\0'; p++) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           switch (*p) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   case _C_BYCOPY:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   case _C_IN:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   case _C_OUT:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   case _C_INOUT:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   case _C_CONST:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   case _C_ONEWAY:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   default:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           return(p);
</span><span style='display:block; white-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 (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;'>- * Returns the argument's type specifier (in GNU Objective-C style).
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-unsigned int tclobjc_getarg_typespecifier (NSMethodSignature* signature, unsigned int index) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           const char *type;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           unsigned int qual = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           type = [signature getArgumentTypeAtIndex: index];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           for (; type != '\0'; type++) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   switch (type[0]) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           case _C_BYCOPY:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                   qual |= _F_BYCOPY;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                   break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           case _C_IN:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                   qual |= _F_IN;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                   break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           case _C_OUT:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                   qual |= _F_OUT;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                   break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           case _C_INOUT:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                   qual |= _F_INOUT;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                   break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           case _C_CONST:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                   qual |= _F_CONST;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                   break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           case _C_ONEWAY:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                   qual |= _F_ONEWAY;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                   break;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           default:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                   goto finish;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-finish:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return (qual);
</span><span style='display:block; white-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;'>- * Returns apointer to the argument's type string.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-const char *tclobjc_getarg_typestring (NSMethodSignature* signature, unsigned int index) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    const char *type;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    /* Fetch the argument type, and strip the type specifiers. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   type = strip_specifiers([signature getArgumentTypeAtIndex: index]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (type == NULL) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           /* This is a fatal condition */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           NSLog(@"No type found in string at %s:%d", __FILE__, __LINE__);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        abort();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return (type);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-const char *tclobjc_getreturn_typestring (NSMethodSignature* signature) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    const char *type;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   type = strip_specifiers([signature methodReturnType]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (type == NULL) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           /* This is a fatal condition */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           NSLog(@"No type found in string at %s:%d", __FILE__, __LINE__);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           abort();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return (type);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/tclobjc1.0/Makefile.in b/src/tclobjc1.0/Makefile.in
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 5a0913e..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/tclobjc1.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,22 +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=              tclobjc.o tclobjc_types.o MPMethodSignatureExtensions.o objc_encoding.o
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-SHLIB_NAME=        tclobjc${SHLIB_SUFFIX}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-INSTALLDIR=        ${DESTDIR}${TCL_PACKAGE_PATH}/tclobjc1.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><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-LDFLAGS+=  ${OBJC_FOUNDATION_LDFLAGS}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-CPPFLAGS+= ${OBJC_FOUNDATION_CPPFLAGS}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-LIBS+=     ${OBJC_FOUNDATION_LIBS}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-clean::
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   rm -f *.o
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-distclean::
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   rm -f Makefile
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-test:
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/tclobjc1.0/objc_encoding.h b/src/tclobjc1.0/objc_encoding.h
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0de8909..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/tclobjc1.0/objc_encoding.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,62 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * objc_encoding.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Copyright (c) 2004 Landon J. Fuller <landonf@macports.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;'>-#ifdef HAVE_CONFIG_H
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <config.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-int objc_to_tclobj(Tcl_Interp *interp, Tcl_Obj **objPtr, const char *type, void *val);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-int tclobj_to_objc(Tcl_Interp *interp, void **val, const char *type, Tcl_Obj *objPtr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#ifdef GNU_RUNTIME
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <objc/encoding.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#ifdef APPLE_RUNTIME
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <objc/objc-class.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _C_BYCOPY       'O'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _C_IN           'n'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _C_OUT          'o'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _C_INOUT        'N'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _C_CONST        'r'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _C_ONEWAY       'V'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _C_BYREF        'R' /* XXX unsupported */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _C_GCINVISIBLE  '!' /* XXX unsupported */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _F_BYCOPY       0x04
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _F_IN           0x01
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _F_OUT          0x02
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _F_INOUT        0x03
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _F_CONST        0x01
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _F_ONEWAY       0x10
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _F_BYREF        0x08
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _F_GCINVISIBLE  0x20 /* XXX unsupported */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/tclobjc1.0/objc_encoding.m b/src/tclobjc1.0/objc_encoding.m
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index b73e08f..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/tclobjc1.0/objc_encoding.m
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,126 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * objc_encoding.m
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Copyright (c) 2004 Landon J. Fuller <landonf@macports.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;'>-#ifdef HAVE_CONFIG_H
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <config.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/* Required by glibc for asprintf() */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _GNU_SOURCE
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <stdint.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <stdio.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <string.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <stdlib.h>
</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;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include "tclobjc.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include "objc_encoding.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include "tclobjc_types.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#ifndef _C_ULNG_LNG
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _C_ULNG_LNG 'Q'
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-int objc_to_tclobj(Tcl_Interp *interp, Tcl_Obj **objPtr, const char *type, void *val) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   char *name;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   switch(*type) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           case _C_CHARPTR:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   *objPtr = Tcl_NewStringObj(*(char **)val, -1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   return (TCL_OK);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           case _C_INT:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   *objPtr = Tcl_NewIntObj(*(int *)val);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   return (TCL_OK);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           case _C_UINT:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   *objPtr = Tcl_NewLongObj(*(unsigned int *)val);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   return (TCL_OK);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           case _C_ULNG_LNG:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   *objPtr = Tcl_NewWideIntObj(*(Tcl_WideUInt *)val);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   return (TCL_OK);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           case _C_ID:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   *objPtr = TclObjC_NewIdObj(*(id *)val);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   name = Tcl_GetString(*objPtr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   Tcl_CreateObjCommand(interp, (char *)name, tclobjc_dispatch, *(id *)val, NULL);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   return (TCL_OK);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           default:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   /* Unhandled objc type encoding */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   *objPtr = Tcl_NewStringObj("Invalid objc type encoding: ", -1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   Tcl_AppendToObj(*objPtr, type, -1);
</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;'>-int tclobj_to_objc(Tcl_Interp *interp, void **val, const char *type, Tcl_Obj *objPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_Obj *tcl_result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   switch(*type) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           char *ptr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           int length;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           case _C_CHARPTR:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   ptr = Tcl_GetStringFromObj(objPtr, &length);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   *val = malloc(length);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   if (*val == 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;'>-                   memcpy(*val, ptr, length);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   return (TCL_OK);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           case _C_INT:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   *val = malloc(sizeof(int));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   if (*val == 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;'>-                   if (Tcl_GetIntFromObj(interp, objPtr, *val) != TCL_OK) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           free(*val);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           return (TCL_ERROR);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   } else {
</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;'>-           case _C_ID:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   *val = malloc(sizeof(id));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   if (TclObjC_GetIdFromObj(interp, objPtr, *val) != TCL_OK) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           free(*val);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           return (TCL_ERROR);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   } else {
</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;'>-           default:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   /* Unhandled objc type encoding */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   if (interp) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           tcl_result = Tcl_NewStringObj("Invalid objc type encoding: ", -1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           Tcl_AppendToObj(tcl_result, type, -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;'>-                   }
</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;color:#808080;'>diff --git a/src/tclobjc1.0/tclobjc.h b/src/tclobjc1.0/tclobjc.h
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index db216b5..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/tclobjc1.0/tclobjc.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,38 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * TclObjC.m
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Authors:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *         Kevin Van Vechten <kvv@apple.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *         Landon J. Fuller  <landonf@macports.org>
</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 <kvv@apple.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Copyright (c) 2004 Landon J. Fuller <landonf@macports.org>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Copyright (c) 2003 Apple Inc.
</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;'>-int tclobjc_dispatch(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]);
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/tclobjc1.0/tclobjc.m b/src/tclobjc1.0/tclobjc.m
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 1cb99a8..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/tclobjc1.0/tclobjc.m
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,245 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * tclobjc.m
</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 <kvv@apple.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Copyright (c) 2004 Landon J. Fuller <landonf@macports.org>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Copyright (c) 2003 Apple Inc.
</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;'>-#ifdef HAVE_CONFIG_H
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <config.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#ifdef GNUSTEP_FOUNDATION
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <objc/NXConstStr.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <Foundation/Foundation.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <tcl.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include "objc_encoding.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include "MPMethodSignatureExtensions.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include "tclobjc_types.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;'>- * Dispatch an Objective-C method call
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-int tclobjc_dispatch(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   int result = TCL_OK;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   id target = (id)clientData;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   SEL selector;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_Obj *selname;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   int i = 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   NSMethodSignature *signature;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   NSInvocation *invocation;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   /*fprintf(stderr, "objc = %d\n", objc);*/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</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, "arguments");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        result = TCL_ERROR;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        goto cleanup;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    /* Look up the selector */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   selname = Tcl_NewObj();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   for (i = 1; i < objc; i += 2) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           Tcl_AppendObjToObj(selname, objv[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;'>-   /*fprintf(stderr, "selector = %s\n", Tcl_GetString(selname));*/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if defined(GNU_RUNTIME)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   selector = sel_get_uid(Tcl_GetString(selname));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#elif defined(APPLE_RUNTIME)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   selector = sel_getUid(Tcl_GetString(selname));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    /* If the selector isn't found, error out */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (!selector) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           Tcl_Obj* tcl_result = Tcl_NewStringObj("Invalid selector specified", -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;'>-        goto cleanup;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   /*fprintf(stderr, "target = %08x\n", target);*/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   signature = [target methodSignatureForSelector:selector];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   invocation = [NSInvocation invocationWithMethodSignature:signature];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   [invocation setTarget:target];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   [invocation setSelector:selector];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    /* Build our arguments list */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   for (i = 2; i < objc; i += 2) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           int arg_num = i / 2 + 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           const char* arg_type = tclobjc_getarg_typestring(signature, arg_num);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           /*fprintf(stderr, "argument type %s\n", arg_type);*/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           if (arg_type[0] == _C_ID) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   id obj;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   if (TclObjC_GetIdFromObj(interp, objv[i], &obj) == TCL_OK) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           [invocation setArgument:&obj atIndex:arg_num];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           } else if (arg_type[0] == _C_INT) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   int word = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   if (Tcl_GetIntFromObj(interp, objv[i], &word) == TCL_OK) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           [invocation setArgument:&word atIndex:arg_num];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           } else if (arg_type[0] == _C_UINT) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            long value;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            if (Tcl_GetLongFromObj(interp, objv[i], &value) == TCL_OK) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                if ((unsigned long)value > UINT_MAX || value < 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    NSString *str = [NSString stringWithFormat:@"Unsigned integer argument invalid: %ld", value];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    Tcl_Obj *tcl_result = Tcl_NewStringObj([str UTF8String], -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;'>-                    [invocation setArgument:&value atIndex:arg_num];
</span><span style='display:block; white-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 if (arg_type[0] == _C_CHARPTR) {
</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(objv[i], &length);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   if (buf)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           [invocation setArgument:&buf atIndex:arg_num];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   NSString* str = [NSString stringWithFormat:@"unexpected argument type %s at %s:%d", arg_type, __FILE__, __LINE__];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   Tcl_Obj* tcl_result = Tcl_NewStringObj([str UTF8String], -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;'>-                   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;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    /* If all is well, invoke the Objective-C method. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (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 *result_ptr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           const char *result_type;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           [invocation invoke];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           /*fprintf(stderr, "result size = %lu\n", (unsigned long)[signature methodReturnLength]);*/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           result_ptr = malloc([signature methodReturnLength]);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           [invocation getReturnValue:result_ptr];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           result_type = tclobjc_getreturn_typestring(signature);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           result = objc_to_tclobj(interp, &tcl_result, result_type, result_ptr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           free(result_ptr);
</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;'>-cleanup:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   [pool release];
</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;'>- * Invoke the standard 'unknown' procedure
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int StandardUnknownObjCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_CmdInfo info;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   int result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (!Tcl_GetCommandInfo(interp, "tclobjc::standard_unknown", &info) || !info.isNativeObjectProc)
</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;'>-   result = (*info.objProc) (info.objClientData, interp, objc, objv);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   /*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    * Make sure the string value of the result is valid.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   (void) Tcl_GetStringResult(interp);
</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;'>- * Replacement 'unknown' procedure.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Dispatches messages to Objective C classes, if one exists, or calls
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * standard 'unknown' procedure
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int UnknownObjCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   const char *className;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   id classId;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_Obj **sobjv;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   int sobjc, result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (objc < 2) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return (StandardUnknownObjCmd(NULL, interp, objc, objv));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   className = 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;'>-   /*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    * In the GNU Objective-C runtime, objc_getClass calls
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    * abort() if the class is not found.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    * On Mac OS X (10.0+), if the class is not found, objc_getClass
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    * calls the class handler call back, and checks again.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    * If the class is again not found, objc_getClass returns nil
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if defined(APPLE_RUNTIME)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if ((classId = objc_getClass(className)) == nil)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#elif defined(GNU_RUNTIME)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if ((classId = objc_lookUpClass(className)) == nil)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           return (StandardUnknownObjCmd(NULL, interp, objc, objv));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</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, "arguments");
</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;'>-   /* dispatch, minus first argument */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   sobjc = objc - 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   sobjv = malloc(sobjc * sizeof(Tcl_Obj));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   memcpy(sobjv, &objv[1], sobjc * sizeof(Tcl_Obj));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   result = tclobjc_dispatch((ClientData *) classId, interp, sobjc, sobjv);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   free(sobjv);
</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 Tclobjc_Init(Tcl_Interp *interp)
</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;'>-   /* Register custom Tcl_Obj types */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   TclObjC_RegisterTclObjTypes();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if(Tcl_Eval(interp, "rename ::unknown tclobjc::standard_unknown") != 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;'>-   Tcl_CreateObjCommand(interp, "unknown", UnknownObjCmd, 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, "TclObjC", "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/tclobjc1.0/tclobjc_types.h b/src/tclobjc1.0/tclobjc_types.h
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 31f3dd7..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/tclobjc1.0/tclobjc_types.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,34 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * TclObjTypes.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Copyright (c) 2004 Landon J. Fuller <landonf@macports.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;'>-Tcl_Obj *TclObjC_NewIdObj(id objcId);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-int TclObjC_GetIdFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, id *objcId);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-void TclObjC_RegisterTclObjTypes(void);
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/tclobjc1.0/tclobjc_types.m b/src/tclobjc1.0/tclobjc_types.m
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 1ccd284..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/tclobjc1.0/tclobjc_types.m
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,207 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * TclObjTypes.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Copyright (c) 2004 Landon J. Fuller <landonf@macports.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;'>-#ifdef HAVE_CONFIG_H
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <config.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/* Required by glibc for asprintf() */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _GNU_SOURCE
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <stdio.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <string.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <Foundation/Foundation.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include <objc/objc.h>
</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;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Tcl Objc Id Object
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/** All (evil) Objective-C string pointer representations start with a common prefix. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static const char tclobjc_name_prefix[] = "objc.id-";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/** Invalid Objective-C pointer string representation. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static const char tclobjc_invalid_string_error[] = "Invalid Objective-C object: ";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/* Standard prototypes */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void free_objc_internalrep(Tcl_Obj *objPtr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void dup_objc_internalrep(Tcl_Obj *srcPtr, Tcl_Obj *dupPtr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void update_objc_string(Tcl_Obj *objPtr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int set_objc_fromstring(Tcl_Interp *interp, Tcl_Obj *objPtr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static Tcl_ObjType tclObjcIdType = {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   /* Name */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   "tclObjcId",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   /* Tcl_FreeInternalRepProc */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   &free_objc_internalrep,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   /* Tcl_DupInternalRepProc */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   &dup_objc_internalrep,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   /* Tcl_UpdateStringProc */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   &update_objc_string,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   /* Tcp_SetFromAnyProc */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   &set_objc_fromstring
</span><span style='display:block; white-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;'>- * Private Functions
</span><span style='display:block; white-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;'>- * Release the internal objective-c instance.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void free_objc_internalrep(Tcl_Obj *objPtr UNUSED) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    /* TODO cleanup */
</span><span style='display:block; white-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;'>- * Duplicate the internal objective-c pointer.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void dup_objc_internalrep(Tcl_Obj *srcPtr, Tcl_Obj *dupPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   dupPtr->internalRep.otherValuePtr = srcPtr->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;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/**
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Update the string value based on the internal pointer address.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static void update_objc_string (Tcl_Obj *objPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   char *string;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   int length;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if ((length = asprintf(&string, "objc.id-%p", objPtr->internalRep.otherValuePtr)) <= 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           /* ack! malloc failed! */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           abort();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   /* Terminating NULL */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   length++;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   /* objPtr->bytes must be allocated with Tcl_Alloc */
</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;'>-   strncpy(objPtr->bytes, string, length);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   free(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;'>- * Evil piece of code that set's the internal ObjC pointer value by
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * converting the provided string value.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-static int set_objc_fromstring (Tcl_Interp *interp, Tcl_Obj *objPtr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_ObjType *oldTypePtr = objPtr->typePtr;
</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 *string, *p;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   id objcId;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   int length;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   string = Tcl_GetStringFromObj(objPtr, &length);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   /* Verify that this is a valid string */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if ((length < (int)sizeof(tclobjc_name_prefix)) ||
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   (strncmp(string, tclobjc_name_prefix,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            sizeof(tclobjc_name_prefix)) != 0)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   goto invalid_obj;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   p = string + sizeof(tclobjc_name_prefix);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (sscanf(p, "%p", (void **)&objcId) != 1)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           goto invalid_obj;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   /* Free the old internal representation before setting new one */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (oldTypePtr != NULL && oldTypePtr->freeIntRepProc != NULL) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           oldTypePtr->freeIntRepProc(objPtr);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   objPtr->internalRep.otherValuePtr = objcId;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   objPtr->typePtr = &tclObjcIdType;
</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;'>-   /* Cleanup Handler */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-invalid_obj:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (interp) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           tcl_result = Tcl_NewStringObj(tclobjc_invalid_string_error, sizeof(tclobjc_invalid_string_error));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           Tcl_AppendObjToObj(tcl_result, objPtr);
</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;'>-   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;'>- * Public Functions
</span><span style='display:block; white-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;'>- * Create a new Tcl Object wrapper for a given Objective-C object.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Tcl_Obj *TclObjC_NewIdObj(id objcId) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_Obj *objPtr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   objPtr = Tcl_NewObj();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   objPtr->bytes = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   objPtr->internalRep.otherValuePtr = [objcId retain]; /* this is a leak */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   objPtr->typePtr = &tclObjcIdType;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return (objPtr);
</span><span style='display:block; white-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;'>- * Returns a pointer to the wrapped Objective-C object.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-int TclObjC_GetIdFromObj(Tcl_Interp *interp, Tcl_Obj *objPtr, id *objcId)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   int result;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (objPtr->typePtr == &tclObjcIdType) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           *objcId = objPtr->internalRep.otherValuePtr;
</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;'>-   result = set_objc_fromstring(interp, objPtr);
</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;'>-           *objcId = objPtr->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;'>-/**
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- * Register the Tcl Objective-C Object type(s).
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-void TclObjC_RegisterTclObjTypes(void) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   Tcl_RegisterObjType(&tclObjcIdType);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span></pre><pre style='margin:0'>

</pre>