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