[PD-cvs] SF.net SVN: pure-data:[10639] trunk/externals/moocow/pdstring

mukau at users.sourceforge.net mukau at users.sourceforge.net
Sun Jan 25 23:23:14 CET 2009


Revision: 10639
          http://pure-data.svn.sourceforge.net/pure-data/?rev=10639&view=rev
Author:   mukau
Date:     2009-01-25 22:23:14 +0000 (Sun, 25 Jan 2009)

Log Message:
-----------
+ merged pstring+wchar changes from r10606:10638 into pdstring

Modified Paths:
--------------
    trunk/externals/moocow/pdstring/configure
    trunk/externals/moocow/pdstring/configure.ac
    trunk/externals/moocow/pdstring/src/Makefile.am
    trunk/externals/moocow/pdstring/src/Makefile.in
    trunk/externals/moocow/pdstring/src/config.h.in
    trunk/externals/moocow/pdstring/src/pdstring-help.pd
    trunk/externals/moocow/pdstring/src/pdstring.c
    trunk/externals/moocow/pdstring/src/unsigned.pd

Added Paths:
-----------
    trunk/externals/moocow/pdstring/src/any2bytes-help.pd
    trunk/externals/moocow/pdstring/src/any2bytes.c
    trunk/externals/moocow/pdstring/src/any2wchars-help.pd
    trunk/externals/moocow/pdstring/src/any2wchars.pd
    trunk/externals/moocow/pdstring/src/bytes2any-help.pd
    trunk/externals/moocow/pdstring/src/bytes2any.c
    trunk/externals/moocow/pdstring/src/bytes2wchars-help.pd
    trunk/externals/moocow/pdstring/src/bytes2wchars-test.pd
    trunk/externals/moocow/pdstring/src/bytes2wchars.c
    trunk/externals/moocow/pdstring/src/pdstringUtils.c
    trunk/externals/moocow/pdstring/src/pdstringUtils.h
    trunk/externals/moocow/pdstring/src/wchars2any-help.pd
    trunk/externals/moocow/pdstring/src/wchars2any.pd
    trunk/externals/moocow/pdstring/src/wchars2bytes-help.pd
    trunk/externals/moocow/pdstring/src/wchars2bytes-test.pd
    trunk/externals/moocow/pdstring/src/wchars2bytes.c

Removed Paths:
-------------
    trunk/externals/moocow/pdstring/src/any2string-help.pd
    trunk/externals/moocow/pdstring/src/any2string.c
    trunk/externals/moocow/pdstring/src/any2string_static.c
    trunk/externals/moocow/pdstring/src/string2any-help.pd
    trunk/externals/moocow/pdstring/src/string2any.c

Modified: trunk/externals/moocow/pdstring/configure
===================================================================
--- trunk/externals/moocow/pdstring/configure	2009-01-25 22:16:17 UTC (rev 10638)
+++ trunk/externals/moocow/pdstring/configure	2009-01-25 22:23:14 UTC (rev 10639)
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for pdstring 0.07.
+# Generated by GNU Autoconf 2.61 for pdstring 0.08.
 #
 # Report bugs to <moocow at ling.uni-potsdam.de>.
 #
@@ -574,8 +574,8 @@
 # Identity of this package.
 PACKAGE_NAME='pdstring'
 PACKAGE_TARNAME='pdstring'
-PACKAGE_VERSION='0.07'
-PACKAGE_STRING='pdstring 0.07'
+PACKAGE_VERSION='0.08'
+PACKAGE_STRING='pdstring 0.08'
 PACKAGE_BUGREPORT='moocow at ling.uni-potsdam.de'
 
 ac_default_prefix=/usr/local
@@ -1181,7 +1181,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures pdstring 0.07 to adapt to many kinds of systems.
+\`configure' configures pdstring 0.08 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1247,7 +1247,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of pdstring 0.07:";;
+     short | recursive ) echo "Configuration of pdstring 0.08:";;
    esac
   cat <<\_ACEOF
 
@@ -1341,7 +1341,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-pdstring configure 0.07
+pdstring configure 0.08
 generated by GNU Autoconf 2.61
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1355,7 +1355,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by pdstring $as_me 0.07, which was
+It was created by pdstring $as_me 0.08, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   $ $0 $@
@@ -2030,7 +2030,7 @@
 
 # Define the identity of the package.
  PACKAGE=pdstring
- VERSION=0.07
+ VERSION=0.08
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3543,7 +3543,7 @@
 
 ##------- PD externals: hack EXEEXT?
 PD_LIB_EXTERNALS="pdstring"
-PD_OBJ_EXTERNALS="any2string string2any"
+PD_OBJ_EXTERNALS="any2bytes bytes2any bytes2wchars wchars2bytes"
 
 # Check whether --enable-object-externals was given.
 if test "${enable_object_externals+set}" = set; then
@@ -3687,12 +3687,12 @@
   DEBUG="yes"
 
 cat >>confdefs.h <<\_ACEOF
-#define ANY2STRING_DEBUG 1
+#define ANY2BYTES_DEBUG 1
 _ACEOF
 
 
 cat >>confdefs.h <<\_ACEOF
-#define STRING2ANY_DEBUG 1
+#define BYTES2ANY_DEBUG 1
 _ACEOF
 
 else
@@ -4198,7 +4198,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by pdstring $as_me 0.07, which was
+This file was extended by pdstring $as_me 0.08, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -4251,7 +4251,7 @@
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-pdstring config.status 0.07
+pdstring config.status 0.08
 configured by $0, generated by GNU Autoconf 2.61,
   with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 

Modified: trunk/externals/moocow/pdstring/configure.ac
===================================================================
--- trunk/externals/moocow/pdstring/configure.ac	2009-01-25 22:16:17 UTC (rev 10638)
+++ trunk/externals/moocow/pdstring/configure.ac	2009-01-25 22:23:14 UTC (rev 10639)
@@ -4,7 +4,7 @@
 
 dnl Some handy macros
 define([THE_PACKAGE_NAME],    [pdstring])
-define([THE_PACKAGE_VERSION], [0.07])
+define([THE_PACKAGE_VERSION], [0.08])
 define([THE_PACKAGE_AUTHOR],  [moocow at ling.uni-potsdam.de])
 
 AC_INIT(THE_PACKAGE_NAME, THE_PACKAGE_VERSION, THE_PACKAGE_AUTHOR)
@@ -88,7 +88,7 @@
 
 ##------- PD externals: hack EXEEXT?
 PD_LIB_EXTERNALS="pdstring"
-PD_OBJ_EXTERNALS="any2string string2any"
+PD_OBJ_EXTERNALS="any2bytes bytes2any bytes2wchars wchars2bytes"
 
 AC_ARG_ENABLE(object-externals,
 	AC_HELP_STRING([--enable-object-externals], [Whether to build single-object externals (default=no)]),
@@ -162,10 +162,10 @@
 if test "$enable_debug" = "yes" ; then
   AC_MSG_RESULT(yes)
   DEBUG="yes"
-  AC_DEFINE(ANY2STRING_DEBUG,1,
-	[Define this to include debugging code for the 'string2any' external.])
-  AC_DEFINE(STRING2ANY_DEBUG,1,
-	[Define this to include debugging code for the 'any2string' external.])
+  AC_DEFINE(ANY2BYTES_DEBUG,1,
+	[Define this to include debugging code for the 'bytes2any' external.])
+  AC_DEFINE(BYTES2ANY_DEBUG,1,
+	[Define this to include debugging code for the 'any2bytes' external.])
 else
   AC_MSG_RESULT(no)
   DEBUG="no"

Modified: trunk/externals/moocow/pdstring/src/Makefile.am
===================================================================
--- trunk/externals/moocow/pdstring/src/Makefile.am	2009-01-25 22:16:17 UTC (rev 10638)
+++ trunk/externals/moocow/pdstring/src/Makefile.am	2009-01-25 22:23:14 UTC (rev 10639)
@@ -32,29 +32,43 @@
 ## --- possible externals
 EXTRA_PROGRAMS = \
 	pdstring \
-	any2string \
-	string2any
+	any2bytes \
+	bytes2any \
+	bytes2wchars \
+	wchars2bytes
 
 ## --- patches
-pdexterns_DATA =
+pdexterns_DATA = \
+	any2wchars.pd \
+	wchars2any.pd
 
 ## --- documentation
 pddoc_DATA = \
 	pdstring-help.pd \
-	any2string-help.pd \
-	string2any-help.pd
+	any2bytes-help.pd \
+	bytes2any-help.pd \
+	bytes2wchars-help.pd \
+	wchars2bytes-help.pd \
+	any2wchars-help.pd \
+	wchars2any-help.pd
 
 
 #-----------------------------------------------------------------------
 # sources
 #-----------------------------------------------------------------------
 
-pdstring_SOURCES = pdstring.c mooPdUtils.h
+any2bytes_SOURCES = any2bytes.c mooPdUtils.h pdstringUtils.h
 
-any2string_SOURCES = any2string.c mooPdUtils.h
+bytes2any_SOURCES = bytes2any.c mooPdUtils.h pdstringUtils.h
 
-string2any_SOURCES = string2any.c mooPdUtils.h
+bytes2wchars_SOURCES = bytes2wchars.c mooPdUtils.h pdstringUtils.h
 
+wchars2bytes_SOURCES = wchars2bytes.c mooPdUtils.h pdstringUtils.h
+
+pdstring_SOURCES = pdstring.c mooPdUtils.h pdstringUtils.h
+
+pdstring.$(OBJECT): $(any2bytes_SOURCES) $(bytes2any_SOURCES) $(bytes2wchars_SOURCES) $(wchars2bytes_SOURCES)
+
 #-----------------------------------------------------------------------
 # external compilation : flags
 #-----------------------------------------------------------------------
@@ -74,10 +88,14 @@
 
 pdstring_LDFLAGS = $(LFLAGS)
 
-string2any_LDFLAGS = $(LFLAGS)
+bytes2any_LDFLAGS = $(LFLAGS)
 
-any2string_LDFLAGS = $(LFLAGS)
+any2bytes_LDFLAGS = $(LFLAGS)
 
+bytes2wchars_LDFLAGS = $(LFLAGS)
+
+wchars2bytes_LDFLAGS = $(LFLAGS)
+
 #-----------------------------------------------------------------------
 # Variables: cleanup
 #-----------------------------------------------------------------------

Modified: trunk/externals/moocow/pdstring/src/Makefile.in
===================================================================
--- trunk/externals/moocow/pdstring/src/Makefile.in	2009-01-25 22:16:17 UTC (rev 10638)
+++ trunk/externals/moocow/pdstring/src/Makefile.in	2009-01-25 22:23:14 UTC (rev 10639)
@@ -50,8 +50,8 @@
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
 pdexterns_PROGRAMS = @PD_OBJECT_EXTERNALS@
-EXTRA_PROGRAMS = pdstring$(EXEEXT) any2string$(EXEEXT) \
-	string2any$(EXEEXT)
+EXTRA_PROGRAMS = pdstring$(EXEEXT) any2bytes$(EXEEXT) \
+	bytes2any$(EXEEXT) bytes2wchars$(EXEEXT) wchars2bytes$(EXEEXT)
 subdir = src
 SUBDIRS =
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
@@ -67,15 +67,21 @@
 	"$(DESTDIR)$(pdexternsdir)"
 pdexternsPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
 PROGRAMS = $(pdexterns_PROGRAMS)
-am_any2string_OBJECTS = any2string.$(OBJEXT)
-any2string_OBJECTS = $(am_any2string_OBJECTS)
-any2string_LDADD = $(LDADD)
+am_any2bytes_OBJECTS = any2bytes.$(OBJEXT)
+any2bytes_OBJECTS = $(am_any2bytes_OBJECTS)
+any2bytes_LDADD = $(LDADD)
+am_bytes2any_OBJECTS = bytes2any.$(OBJEXT)
+bytes2any_OBJECTS = $(am_bytes2any_OBJECTS)
+bytes2any_LDADD = $(LDADD)
+am_bytes2wchars_OBJECTS = bytes2wchars.$(OBJEXT)
+bytes2wchars_OBJECTS = $(am_bytes2wchars_OBJECTS)
+bytes2wchars_LDADD = $(LDADD)
 am_pdstring_OBJECTS = pdstring.$(OBJEXT)
 pdstring_OBJECTS = $(am_pdstring_OBJECTS)
 pdstring_LDADD = $(LDADD)
-am_string2any_OBJECTS = string2any.$(OBJEXT)
-string2any_OBJECTS = $(am_string2any_OBJECTS)
-string2any_LDADD = $(LDADD)
+am_wchars2bytes_OBJECTS = wchars2bytes.$(OBJEXT)
+wchars2bytes_OBJECTS = $(am_wchars2bytes_OBJECTS)
+wchars2bytes_LDADD = $(LDADD)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I.
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
@@ -83,10 +89,12 @@
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 CCLD = $(CC)
 LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(any2string_SOURCES) $(pdstring_SOURCES) \
-	$(string2any_SOURCES)
-DIST_SOURCES = $(any2string_SOURCES) $(pdstring_SOURCES) \
-	$(string2any_SOURCES)
+SOURCES = $(any2bytes_SOURCES) $(bytes2any_SOURCES) \
+	$(bytes2wchars_SOURCES) $(pdstring_SOURCES) \
+	$(wchars2bytes_SOURCES)
+DIST_SOURCES = $(any2bytes_SOURCES) $(bytes2any_SOURCES) \
+	$(bytes2wchars_SOURCES) $(pdstring_SOURCES) \
+	$(wchars2bytes_SOURCES)
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	html-recursive info-recursive install-data-recursive \
 	install-exec-recursive install-info-recursive \
@@ -204,27 +212,38 @@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 SUFFIXES = . at PDEXT@
-pdexterns_DATA = 
+pdexterns_DATA = \
+	any2wchars.pd \
+	wchars2any.pd
+
 pddoc_DATA = \
 	pdstring-help.pd \
-	any2string-help.pd \
-	string2any-help.pd
+	any2bytes-help.pd \
+	bytes2any-help.pd \
+	bytes2wchars-help.pd \
+	wchars2bytes-help.pd \
+	any2wchars-help.pd \
+	wchars2any-help.pd
 
 
 #-----------------------------------------------------------------------
 # sources
 #-----------------------------------------------------------------------
-pdstring_SOURCES = pdstring.c mooPdUtils.h
-any2string_SOURCES = any2string.c mooPdUtils.h
-string2any_SOURCES = string2any.c mooPdUtils.h
+any2bytes_SOURCES = any2bytes.c mooPdUtils.h pdstringUtils.h
+bytes2any_SOURCES = bytes2any.c mooPdUtils.h pdstringUtils.h
+bytes2wchars_SOURCES = bytes2wchars.c mooPdUtils.h pdstringUtils.h
+wchars2bytes_SOURCES = wchars2bytes.c mooPdUtils.h pdstringUtils.h
+pdstring_SOURCES = pdstring.c mooPdUtils.h pdstringUtils.h
 
 #GLIB_IFLAGS = @GLIB_IFLAGS@
 #GLIB_LFLAGS = @GLIB_LFLAGS@
 AM_CPPFLAGS = $(IFLAGS) $(GLIB_IFLAGS) $(DFLAGS)
 AM_CFLAGS = $(OFLAGS) $(WFLAGS) $(AFLAGS)
 pdstring_LDFLAGS = $(LFLAGS)
-string2any_LDFLAGS = $(LFLAGS)
-any2string_LDFLAGS = $(LFLAGS)
+bytes2any_LDFLAGS = $(LFLAGS)
+any2bytes_LDFLAGS = $(LFLAGS)
+bytes2wchars_LDFLAGS = $(LFLAGS)
+wchars2bytes_LDFLAGS = $(LFLAGS)
 
 #-----------------------------------------------------------------------
 # Variables: cleanup
@@ -332,15 +351,21 @@
 
 clean-pdexternsPROGRAMS:
 	-test -z "$(pdexterns_PROGRAMS)" || rm -f $(pdexterns_PROGRAMS)
-any2string$(EXEEXT): $(any2string_OBJECTS) $(any2string_DEPENDENCIES) 
-	@rm -f any2string$(EXEEXT)
-	$(LINK) $(any2string_LDFLAGS) $(any2string_OBJECTS) $(any2string_LDADD) $(LIBS)
+any2bytes$(EXEEXT): $(any2bytes_OBJECTS) $(any2bytes_DEPENDENCIES) 
+	@rm -f any2bytes$(EXEEXT)
+	$(LINK) $(any2bytes_LDFLAGS) $(any2bytes_OBJECTS) $(any2bytes_LDADD) $(LIBS)
+bytes2any$(EXEEXT): $(bytes2any_OBJECTS) $(bytes2any_DEPENDENCIES) 
+	@rm -f bytes2any$(EXEEXT)
+	$(LINK) $(bytes2any_LDFLAGS) $(bytes2any_OBJECTS) $(bytes2any_LDADD) $(LIBS)
+bytes2wchars$(EXEEXT): $(bytes2wchars_OBJECTS) $(bytes2wchars_DEPENDENCIES) 
+	@rm -f bytes2wchars$(EXEEXT)
+	$(LINK) $(bytes2wchars_LDFLAGS) $(bytes2wchars_OBJECTS) $(bytes2wchars_LDADD) $(LIBS)
 pdstring$(EXEEXT): $(pdstring_OBJECTS) $(pdstring_DEPENDENCIES) 
 	@rm -f pdstring$(EXEEXT)
 	$(LINK) $(pdstring_LDFLAGS) $(pdstring_OBJECTS) $(pdstring_LDADD) $(LIBS)
-string2any$(EXEEXT): $(string2any_OBJECTS) $(string2any_DEPENDENCIES) 
-	@rm -f string2any$(EXEEXT)
-	$(LINK) $(string2any_LDFLAGS) $(string2any_OBJECTS) $(string2any_LDADD) $(LIBS)
+wchars2bytes$(EXEEXT): $(wchars2bytes_OBJECTS) $(wchars2bytes_DEPENDENCIES) 
+	@rm -f wchars2bytes$(EXEEXT)
+	$(LINK) $(wchars2bytes_LDFLAGS) $(wchars2bytes_OBJECTS) $(wchars2bytes_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -348,9 +373,11 @@
 distclean-compile:
 	-rm -f *.tab.c
 
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/any2string.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/any2bytes.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bytes2any.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bytes2wchars.Po at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/pdstring.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/string2any.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/wchars2bytes.Po at am__quote@
 
 .c.o:
 @am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
@@ -682,6 +709,8 @@
 	uninstall-pdexternsPROGRAMS
 
 
+pdstring.$(OBJECT): $(any2bytes_SOURCES) $(bytes2any_SOURCES) $(bytes2wchars_SOURCES) $(wchars2bytes_SOURCES)
+
 maintainer-clean-local:
 	rm -rf autom4te.cache
 

Copied: trunk/externals/moocow/pdstring/src/any2bytes-help.pd (from rev 10638, trunk/externals/moocow/pdstring+wchar/src/any2bytes-help.pd)
===================================================================
--- trunk/externals/moocow/pdstring/src/any2bytes-help.pd	                        (rev 0)
+++ trunk/externals/moocow/pdstring/src/any2bytes-help.pd	2009-01-25 22:23:14 UTC (rev 10639)
@@ -0,0 +1,40 @@
+#N canvas 90 20 636 478 10;
+#X msg 109 197 0;
+#X msg 77 197 -1;
+#X text 19 47 INLETS:;
+#X text 31 61 1 - pd messages;
+#X text 247 49 OUTLETS:;
+#X floatatom 44 147 8 0 0 0 - - -;
+#X symbolatom 34 125 10 0 0 0 - - -;
+#X text 189 125 ... no special handling for symbols;
+#X text 188 103 anything can be converted to a list...;
+#X text 190 147 ... but "float" selector is silently dropped;
+#X msg 25 104 A B C;
+#X text 182 312 First argument: initial buffer size (length of object-local
+text buffer). This should get re-allocated when necessary. Specify
+0 (zero) to use the default value.;
+#X text 184 367 Second argument: initial EOS character. See above.
+;
+#X text 320 458 Bryan Jurish <moocow at ling.uni-potsdam.de>;
+#X text 19 439 SEE ALSO:;
+#X msg 139 197 42;
+#X text 184 194 The second inlet sets the terminating EOS ("end-of-string")
+character. This value gets implicitly appended to all output lists.
+Specify a negative value here to avoid implicit EOS characters entirely.
+For backwards compatibility \, the default EOS character is 0 (zero).
+;
+#X text 31 75 2 - EOS character (float);
+#X obj 100 438 pdstring;
+#X obj 25 314 any2bytes 128 -1;
+#X obj 25 400 print any2bytes-help;
+#X text 21 29 SYNTAX: any2bytes [INITIAL_BUFSIZE [EOS_CHAR]];
+#X text 263 63 1 - lists of byte-valued floats;
+#X text 49 5 any2bytes : convert pd messages to a list of byte values
+;
+#X connect 0 0 19 1;
+#X connect 1 0 19 1;
+#X connect 5 0 19 0;
+#X connect 6 0 19 0;
+#X connect 10 0 19 0;
+#X connect 15 0 19 1;
+#X connect 19 0 20 0;

Copied: trunk/externals/moocow/pdstring/src/any2bytes.c (from rev 10638, trunk/externals/moocow/pdstring+wchar/src/any2bytes.c)
===================================================================
--- trunk/externals/moocow/pdstring/src/any2bytes.c	                        (rev 0)
+++ trunk/externals/moocow/pdstring/src/any2bytes.c	2009-01-25 22:23:14 UTC (rev 10639)
@@ -0,0 +1,181 @@
+/* -*- Mode: C -*- */
+/*=============================================================================*\
+ * File: any2bytes.c
+ * Author: Bryan Jurish <moocow at ling.uni-potsdam.de>
+ * Description: convert pd messages to strings (dynamic allocation)
+ *
+ * Copyright (c) 2004-2009 Bryan Jurish.
+ *
+ * For information on usage and redistribution, and for a DISCLAIMER OF ALL
+ * WARRANTIES, see the file "COPYING", in this distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *=============================================================================*/
+
+#include <string.h>
+#include <m_pd.h>
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "mooPdUtils.h"
+#include "pdstringUtils.h"
+
+/* black magic */
+#ifdef NT
+#pragma warning( disable : 4244 )
+#pragma warning( disable : 4305 )
+#endif
+
+/*--------------------------------------------------------------------
+ * DEBUG
+ *--------------------------------------------------------------------*/
+/*#define ANY2BYTES_DEBUG 1*/
+
+#ifdef ANY2BYTES_DEBUG
+# define A2SDEBUG(x) x
+#else
+# define A2SDEBUG(x)
+#endif
+
+#define ANY2BYTES_DEFAULT_BUFLEN PDSTRING_DEFAULT_BUFLEN
+
+
+/*=====================================================================
+ * Structures and Types: any2bytes
+ *=====================================================================*/
+static t_class *any2bytes_class;
+
+typedef struct _any2bytes
+{
+  t_object       x_obj;
+  t_pdstring_bytes x_bytes;  //-- byte buffer
+  t_pdstring_atoms x_atoms;  //-- atom buffer (for output)
+  t_float          x_eos;      //-- EOS character to add (<0 for none)
+  t_binbuf        *x_binbuf;
+  t_inlet         *x_eos_in;
+  t_outlet        *x_outlet;
+} t_any2bytes;
+
+
+/*=====================================================================
+ * Constants
+ *=====================================================================*/
+static char *any2bytes_banner = "any2bytes: pdstring version " PACKAGE_VERSION " by Bryan Jurish";
+
+/*=====================================================================
+ * Methods
+ *=====================================================================*/
+
+/*--------------------------------------------------------------------
+ * anything
+ */
+static void any2bytes_anything(t_any2bytes *x, t_symbol *sel, int argc, t_atom *argv)
+{
+  //-- convert any -> bytes -> atoms
+  t_pdstring_atoms arg_atoms = {argv,argc,0};
+  pdstring_bytes_clear(&x->x_bytes);
+  pdstring_any2bytes(x, &x->x_bytes, sel, &arg_atoms, x->x_binbuf);
+  pdstring_bytes2atoms(x, &x->x_atoms, &x->x_bytes, x->x_eos);
+
+  //-- output
+  outlet_list(x->x_outlet, &s_list, x->x_atoms.a_len, x->x_atoms.a_buf);
+}
+
+/*--------------------------------------------------------------------
+ * new
+ */
+static void *any2bytes_new(MOO_UNUSED t_symbol *sel, int argc, t_atom *argv)
+{
+    t_any2bytes *x = (t_any2bytes *)pd_new(any2bytes_class);
+    int bufsize = ANY2BYTES_DEFAULT_BUFLEN;
+
+    //-- defaults
+    x->x_eos      = 0;
+
+    //-- args: 0: bufsize
+    if (argc > 0) {
+      int initial_bufsize = atom_getintarg(0, argc, argv);
+      if (initial_bufsize > 0) { bufsize = initial_bufsize; }
+    }
+    //-- args: 1: eos
+    if (argc > 1) {
+      x->x_eos = atom_getfloatarg(1, argc, argv);
+    }
+
+    //-- allocate
+    pdstring_bytes_init(&x->x_bytes, 0); //-- x_bytes gets clobbered by binbuf_gettext()
+    pdstring_atoms_init(&x->x_atoms, bufsize);
+    x->x_binbuf = binbuf_new();
+
+    //-- inlets
+    x->x_eos_in = floatinlet_new(&x->x_obj, &x->x_eos);
+
+    //-- outlets
+    x->x_outlet = outlet_new(&x->x_obj, &s_list);
+
+    //-- report
+    A2SDEBUG(post("any2bytes_new(): x=%p, eos=%d, binbuf=%p", x, x->x_eos, x->x_binbuf));
+
+    return (void *)x;
+}
+
+/*--------------------------------------------------------------------
+ * free
+ */
+static void any2bytes_free(t_any2bytes *x)
+{
+  pdstring_bytes_clear(&x->x_bytes);
+  pdstring_atoms_clear(&x->x_atoms);
+  binbuf_free(x->x_binbuf);
+  inlet_free(x->x_eos_in);
+  outlet_free(x->x_outlet);
+  return;
+}
+
+/*--------------------------------------------------------------------
+ * setup (guts)
+ */
+void any2bytes_setup_guts(void)
+{
+  //-- class
+  any2bytes_class = class_new(gensym("any2bytes"),
+			       (t_newmethod)any2bytes_new,
+			       (t_method)any2bytes_free,
+			       sizeof(t_any2bytes),
+			       CLASS_DEFAULT,
+			       A_GIMME,                   //-- initial_bufsize, eos_char
+			       0);
+
+  //-- alias
+  class_addcreator((t_newmethod)any2bytes_new, gensym("any2string"), A_GIMME, 0);
+  
+  //-- methods
+  class_addanything(any2bytes_class, (t_method)any2bytes_anything);
+  
+  //-- help symbol
+  //class_sethelpsymbol(any2bytes_class, gensym("any2bytes-help.pd")); //-- breaks pd-extended help lookup
+}
+
+
+/*--------------------------------------------------------------------
+ * setup
+ */
+void any2bytes_setup(void)
+{
+  post(any2bytes_banner);
+  any2bytes_setup_guts();
+}

Deleted: trunk/externals/moocow/pdstring/src/any2string-help.pd
===================================================================
--- trunk/externals/moocow/pdstring/src/any2string-help.pd	2009-01-25 22:16:17 UTC (rev 10638)
+++ trunk/externals/moocow/pdstring/src/any2string-help.pd	2009-01-25 22:23:14 UTC (rev 10639)
@@ -1,39 +0,0 @@
-#N canvas 90 20 636 478 10;
-#X obj 25 400 print any2string-help;
-#X obj 25 314 any2string 128 -1;
-#X msg 109 197 0;
-#X msg 77 197 -1;
-#X text 19 47 INLETS:;
-#X text 31 61 1 - pd messages;
-#X text 247 49 OUTLETS:;
-#X text 263 63 1 - lists of ASCII-valued floats;
-#X floatatom 44 147 8 0 0 0 - - -;
-#X symbolatom 34 125 10 0 0 0 - - -;
-#X text 189 125 ... no special handling for symbols;
-#X text 188 103 anything can be converted to a list...;
-#X text 190 147 ... but "float" selector is silently dropped;
-#X msg 25 104 A B C;
-#X text 193 312 First argument: initial buffer size (length of object-local
-text buffer). This should get re-allocated when necessary. Specify
-0 (zero) to use the default value.;
-#X text 195 367 Second argument: initial EOS character. See above.
-;
-#X text 320 458 Bryan Jurish <moocow at ling.uni-potsdam.de>;
-#X text 19 439 SEE ALSO:;
-#X msg 139 197 42;
-#X text 21 29 SYNTAX: any2string [INITIAL_BUFSIZE [EOS_CHAR]];
-#X text 184 194 The second inlet sets the terminating EOS ("end-of-string")
-character. This value gets implicitly appended to all output lists.
-Specify a negative value here to avoid implicit EOS characters entirely.
-For backwards compatibility \, the default EOS character is 0 (zero).
-;
-#X text 51 5 any2string : convert pd messages to a list of floats;
-#X text 31 75 2 - EOS character (float);
-#X obj 100 438 pdstring;
-#X connect 1 0 0 0;
-#X connect 2 0 1 1;
-#X connect 3 0 1 1;
-#X connect 8 0 1 0;
-#X connect 9 0 1 0;
-#X connect 13 0 1 0;
-#X connect 18 0 1 1;

Deleted: trunk/externals/moocow/pdstring/src/any2string.c
===================================================================
--- trunk/externals/moocow/pdstring/src/any2string.c	2009-01-25 22:16:17 UTC (rev 10638)
+++ trunk/externals/moocow/pdstring/src/any2string.c	2009-01-25 22:23:14 UTC (rev 10639)
@@ -1,239 +0,0 @@
-/* -*- Mode: C -*- */
-/*=============================================================================*\
- * File: any2string.c
- * Author: Bryan Jurish <moocow at ling.uni-potsdam.de>
- * Description: convert pd messages to strings (dynamic allocation)
- *
- * Copyright (c) 2004 - 2009 Bryan Jurish.
- *
- * For information on usage and redistribution, and for a DISCLAIMER OF ALL
- * WARRANTIES, see the file "COPYING", in this distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
- *=============================================================================*/
-
-#include <string.h>
-#include <m_pd.h>
-#include "mooPdUtils.h"
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-/* black magic */
-#ifdef NT
-#pragma warning( disable : 4244 )
-#pragma warning( disable : 4305 )
-#endif
-
-/*--------------------------------------------------------------------
- * DEBUG
- *--------------------------------------------------------------------*/
-/*#define ANY2STRING_DEBUG 1*/
-
-#ifdef ANY2STRING_DEBUG
-# define A2SDEBUG(x) x
-#else
-# define A2SDEBUG(x)
-#endif
-
-#define ANY2STRING_DEFAULT_BUFLEN 256
-
-
-/*=====================================================================
- * Structures and Types: any2string
- *=====================================================================*/
-static t_class *any2string_class;
-
-typedef struct _any2string
-{
-  t_object       x_obj;
-  int            x_alloc;
-  int            x_argc;
-  t_float        x_eos;      //-- EOS character to add (<0 for none)
-  char          *x_text;
-  t_atom        *x_argv;
-  t_binbuf      *x_binbuf;
-  t_inlet       *x_eos_in;
-  t_outlet      *x_outlet;
-} t_any2string;
-
-
-/*=====================================================================
- * Constants
- *=====================================================================*/
-static char *any2string_banner = "any2string: pdstring version " PACKAGE_VERSION " by Bryan Jurish";
-
-/*=====================================================================
- * Methods
- *=====================================================================*/
-
-/*--------------------------------------------------------------------
- * anything
- */
-static void any2string_anything(t_any2string *x, t_symbol *sel, int argc, t_atom *argv)
-{
-  t_atom *ap;
-  unsigned char *s, *s_max;
-  int len;
-
-  A2SDEBUG(post("-------any2string_anything(%p,...)---------", x));
-
-  /*-- set up binbuf --*/
-  A2SDEBUG(post("any2string[%p]: binbuf_clear()", x));
-  binbuf_clear(x->x_binbuf);
-
-  /*-- binbuf_add(): selector --*/
-  if (sel != &s_float && sel != &s_list && sel != &s_) {
-    t_atom a;
-    A2SDEBUG(post("any2string[%p]: binbuf_add(): selector: '%s'", x, sel->s_name));
-    SETSYMBOL((&a), sel);
-    binbuf_add(x->x_binbuf, 1, &a);
-  }
-  A2SDEBUG(else { post("any2string[%p]: selector: '%s': IGNORED", x, sel->s_name); });
-
-  /*-- binbuf_add(): arg list --*/
-  A2SDEBUG(post("any2string[%p]: binbuf_add(): arg list", x));
-  binbuf_add(x->x_binbuf, argc, argv);
-  A2SDEBUG(post("any2string[%p]: binbuf_print: ", x));
-  A2SDEBUG(binbuf_print(x->x_binbuf));
-
-  A2SDEBUG(post("any2string[%p]: binbuf_gettext()", x));
-  binbuf_gettext(x->x_binbuf, &(x->x_text), &len);
-  A2SDEBUG(post("any2string[%p]: binbuf_gettext() = \"%s\" ; len=%d", x, x->x_text, len));
-  /*text[len] = 0;*/ /*-- ? avoid errors: "free(): invalid next size(fast): 0x..." */
-
-  /*-- get output atom-list length --*/
-  x->x_argc = len;
-  if (x->x_eos >= 0) { x->x_argc++; }
-  A2SDEBUG(post("any2string[%p]: argc=%d", x, x->x_argc));
-
-  /*-- (re-)allocate (maybe) --*/
-  if (x->x_alloc < x->x_argc) {
-    A2SDEBUG(post("any2string[%p]: reallocate(%d->%d)", x, x->x_alloc, x->x_argc));
-    freebytes(x->x_argv, x->x_alloc*sizeof(t_atom));
-    x->x_argv = (t_atom*)getbytes(x->x_argc * sizeof(t_atom));
-    x->x_alloc = x->x_argc;
-  }
-
-  /*-- atom buffer: binbuf text --*/
-  A2SDEBUG(post("any2string[%p]: atom buffer: for {...}", x));
-  ap    = x->x_argv;
-  s_max = ((unsigned char *)x->x_text)+len;
-  for (s=((unsigned char *)x->x_text); s < s_max; s++, ap++) {
-    A2SDEBUG(post("any2string[%p]: atom buffer[%d]: SETFLOAT(a,%d='%c')", x, (ap-x->x_argv), *s, *s));
-    SETFLOAT(ap,*s);
-  }
-  A2SDEBUG(post("any2string: atom buffer: DONE"));
-
-  /*-- add EOS character (maybe) --*/
-  if (x->x_eos >= 0) { SETFLOAT(ap, ((int)x->x_eos)); }
-
-  A2SDEBUG(post("any2string: outlet_list(..., %d, ...)", x->x_argc));
-  outlet_list(x->x_outlet, &s_list, x->x_argc, x->x_argv);
-}
-
-
-/*--------------------------------------------------------------------
- * new
- */
-static void *any2string_new(MOO_UNUSED t_symbol *sel, int argc, t_atom *argv)
-{
-    t_any2string *x = (t_any2string *)pd_new(any2string_class);
-
-    //-- defaults
-    x->x_eos      = 0;       
-    x->x_alloc    = ANY2STRING_DEFAULT_BUFLEN;
-
-    //-- args: 0: bufsize
-    if (argc > 0) {
-      int bufsize = atom_getintarg(0, argc, argv);
-      if (bufsize > 0) { x->x_alloc = bufsize; }
-    }
-    //-- args: 1: eos
-    if (argc > 1) {
-      x->x_eos = atom_getfloatarg(1, argc, argv);
-    }
-
-    //-- allocate
-    x->x_text   = getbytes(x->x_alloc*sizeof(char));
-    x->x_argc   = 0;
-    x->x_argv   = (t_atom *)getbytes(x->x_alloc*sizeof(t_atom));
-    x->x_binbuf = binbuf_new();
-
-    //-- inlets
-    x->x_eos_in = floatinlet_new(&x->x_obj, &x->x_eos);
-
-    //-- outlets
-    x->x_outlet = outlet_new(&x->x_obj, &s_list);
-
-    //-- report
-    A2SDEBUG(post("any2string_new(): x=%p, alloc=%d, eos=%d, text=%p, argv=%p, binbuf=%p", x, x->x_alloc, x->x_eos, x->x_text, x->x_argv, x->x_binbuf));
-
-    return (void *)x;
-}
-
-/*--------------------------------------------------------------------
- * free
- */
-static void any2string_free(t_any2string *x)
-{
-  if (x->x_text) {
-    freebytes(x->x_text, x->x_alloc*sizeof(char));
-    x->x_text = NULL;
-  }
-  if (x->x_argv) {
-    freebytes(x->x_argv, x->x_alloc*sizeof(t_atom));
-    x->x_argv = NULL;
-  }
-  binbuf_free(x->x_binbuf);
-  inlet_free(x->x_eos_in);
-  outlet_free(x->x_outlet);
-  return;
-}
-
-/*--------------------------------------------------------------------
- * setup (guts)
- */
-void any2string_setup_guts(void)
-{
-  //-- class
-  any2string_class = class_new(gensym("any2string"),
-			       (t_newmethod)any2string_new,
-			       (t_method)any2string_free,
-			       sizeof(t_any2string),
-			       CLASS_DEFAULT,
-			       A_GIMME,                   //-- initial_bufsize, eos_char
-			       0);
-
-  //-- alias
-  class_addcreator((t_newmethod)any2string_new, gensym("any2bytes"), A_GIMME, 0);
-  
-  //-- methods
-  class_addanything(any2string_class, (t_method)any2string_anything);
-  
-  //-- help symbol
-  //class_sethelpsymbol(any2string_class, gensym("any2string-help.pd")); //-- breaks pd-extended help lookup
-}
-
-
-/*--------------------------------------------------------------------
- * setup
- */
-void any2string_setup(void)
-{
-  post(any2string_banner);
-  any2string_setup_guts();
-}

Deleted: trunk/externals/moocow/pdstring/src/any2string_static.c
===================================================================
--- trunk/externals/moocow/pdstring/src/any2string_static.c	2009-01-25 22:16:17 UTC (rev 10638)
+++ trunk/externals/moocow/pdstring/src/any2string_static.c	2009-01-25 22:23:14 UTC (rev 10639)
@@ -1,246 +0,0 @@
-/* -*- Mode: C -*- */
-/*=============================================================================*\
- * File: any2string_static.c
- * Author: Bryan Jurish <moocow at ling.uni-potsdam.de>
- * Description: convert pd messages to strings (static buffer allocation)
- *
- * Copyright (c) 2004 - 2007 Bryan Jurish.
- *
- * For information on usage and redistribution, and for a DISCLAIMER OF ALL
- * WARRANTIES, see the file "COPYING", in this distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
- *=============================================================================*/
-
-#include <string.h>
-#include <stdio.h>
-
-#include <m_pd.h>
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-/* black magic */
-#ifdef NT
-#pragma warning( disable : 4244 )
-#pragma warning( disable : 4305 )
-#endif
-
-/*--------------------------------------------------------------------
- * DEBUG
- *--------------------------------------------------------------------*/
-/*#define ANY2STRING_DEBUG 1*/
-/*#undef ANY2STRING_DEBUG*/
-
-#ifdef ANY2STRING_DEBUG
-# define A2SDEBUG(x) x
-#else
-# define A2SDEBUG(x)
-#endif
-
-#define ANY2STRING_DEFAULT_BUFLEN 512
-
-
-/*=====================================================================
- * Structures and Types: any2string
- *=====================================================================*/
-static t_class *any2string_class;
-
-typedef struct _any2string
-{
-  t_object       x_obj;
-  int            x_alloc;  //-- buffer size (text, x_argv)
-  int            x_argc;   //-- current number of atoms to outlet
-  t_atom        *x_argv;   //-- float-list to outlet
-  t_outlet      *x_outlet; //-- outlet
-} t_any2string;
-
-
-/*=====================================================================
- * Utilities
- *=====================================================================*/
-
-/*--------------------------------------------------------------------
- * append_string
- */
-static void any2string_append_string(t_any2string *x, char *s, unsigned int maxlen, int doescape)
-{
-  char *sp;
-  char *ep = s+maxlen;
-
-  for (sp=s; *sp && sp<ep && *sp && x->x_argc<x->x_alloc; sp++, x->x_argc++) {
-    if (doescape && (*sp==';' || *sp==',' || *sp=='\\'
-		     || (*sp == '$' && sp<(ep-1) && sp[1] >= '0' && sp[1] <= '9')))
-      {
-	A2SDEBUG(post("any2string_append_string: ESCAPE: x_argv[%d] = '%c' = %d", x->x_argc, '\\', '\\'));
-	x->x_argv[x->x_argc++].a_w.w_float = '\\';
-	if (x->x_argc >= x->x_alloc) break;
-      }
-    A2SDEBUG(post("any2string_append_string: x_argv[%d] = '%c' = %d", x->x_argc, *sp, *sp));
-    x->x_argv[x->x_argc].a_w.w_float = *sp;
-  }
-}
-
-/*--------------------------------------------------------------------
- * append_atom
- */
-#define ANY2STRING_APPEND_BUFSIZE 30
-static void any2string_append_atom(t_any2string *x, t_atom *a)
-{
-  char buf[ANY2STRING_APPEND_BUFSIZE];
-  A2SDEBUG(post("~~ any2string_append_atom(%p,...) ~~", x));
-
-  if (x->x_argc >= x->x_alloc) { return; }
-
-  /*-- stringify a single atom (inspired by atom_string() from m_atom.c) --*/
-  switch (a->a_type) {
-  case A_SEMI:    any2string_append_string(x, ";", 1, 0); break;
-  case A_COMMA:   any2string_append_string(x, ",", 1, 0); break;
-  case A_POINTER: any2string_append_string(x, "(pointer)", 9, 0); break;
-  case A_FLOAT:
-    snprintf(buf, ANY2STRING_APPEND_BUFSIZE, "%g", a->a_w.w_float);
-    any2string_append_string(x, buf, ANY2STRING_APPEND_BUFSIZE, 0);
-    break;
-  case A_SYMBOL:
-    any2string_append_string(x, a->a_w.w_symbol->s_name, strlen(a->a_w.w_symbol->s_name), 1);
-    break;
-  case A_DOLLAR:
-    snprintf(buf, ANY2STRING_APPEND_BUFSIZE, "$%d", a->a_w.w_index);
-    any2string_append_string(x, buf, ANY2STRING_APPEND_BUFSIZE, 0);
-    break;
-  case A_DOLLSYM:
-    any2string_append_string(x, a->a_w.w_symbol->s_name, strlen(a->a_w.w_symbol->s_name), 0);
-    break;
-  default:
-    pd_error(x,"any2string_append_atom: unknown atom type '%d'", a->a_type);
-    break;
-  }
-
-  if (x->x_argc < x->x_alloc) {
-    A2SDEBUG(post("any2string_append_atom[%p]: x_argv[%d] = '%c' = %d", x, x->x_argc, ' ', ' '));
-    x->x_argv[x->x_argc++].a_w.w_float = ' ';
-  }
-}
-
-/*=====================================================================
- * Methods
- *=====================================================================*/
-
-/*--------------------------------------------------------------------
- * anything
- */
-static void any2string_anything(t_any2string *x, t_symbol *sel, int argc, t_atom *argv)
-{
-  t_atom *argv_end = argv+argc;
-  x->x_argc=0;
-
-  A2SDEBUG(post("-------any2string_anything(%p,...) ---------", x));
-
-  /*-- stringify selector (maybe) --*/
-  if (sel != &s_float && sel != &s_list && sel != &s_) {
-    t_atom a;
-    SETSYMBOL(&a,sel);
-    any2string_append_atom(x, &a);
-  }
-
-  /*-- stringify arg list --*/
-  for ( ; argv<argv_end && x->x_argc<x->x_alloc; argv++) {
-    any2string_append_atom(x, argv);
-  }
-
-  /*-- add terminating NUL (if we can) --*/
-  A2SDEBUG(post("any2string[%p]: terminating NUL: x_argv[%d]=0", x, x->x_argc-1));
-  if (x->x_argc >= x->x_alloc) {
-    pd_error(x, "any2string: input length exceeds buffer size!");
-    x->x_argc = x->x_alloc;
-    x->x_argv[x->x_argc-1].a_w.w_float = '*'; //-- simulate atom_string() behavior
-  } else if (x->x_argc > 0) {
-    x->x_argv[x->x_argc-1].a_w.w_float = 0;
-  }
-
-  A2SDEBUG(post("any2string[%p]: outlet_list(..., %d, ...)", x, x->x_argc));
-  outlet_list(x->x_outlet, &s_list, x->x_argc, x->x_argv);
-}
-
-
-/*--------------------------------------------------------------------
- * new
- */
-static void *any2string_new(t_floatarg bufsize)
-{
-    t_any2string *x = (t_any2string *)pd_new(any2string_class);
-    int i;
-
-    //-- bufsize
-    if (bufsize <= 0) {
-      x->x_alloc = ANY2STRING_DEFAULT_BUFLEN;
-    } else {
-      x->x_alloc = bufsize;
-    }
-    A2SDEBUG(post("any2string_new: buf_req=%g, alloc=%d", bufsize, x->x_alloc));
-
-    //-- defaults
-    x->x_argc  = 0;
-    x->x_argv  = (t_atom*)getbytes(x->x_alloc*sizeof(t_atom));
-
-    //-- initialize (set a_type)
-    for (i=0; i < x->x_alloc; i++) {
-      SETFLOAT((x->x_argv+i),0);
-    }
-
-    //-- outlets
-    x->x_outlet = outlet_new(&x->x_obj, &s_list);
-    A2SDEBUG(post("any2string_new: x=%p, alloc=%d, argv=%p, nbytes=%d", x, x->x_alloc,x->x_argv,x->x_alloc*sizeof(t_atom)));
-    return (void *)x;
-}
-
-/*--------------------------------------------------------------------
- * free
- */
-static void any2string_free(t_any2string *x)
-{
-  A2SDEBUG(post("any2string_free(x=%p)", x));
-  if (x->x_argv) {
-    A2SDEBUG(post("any2string_free(x=%p): x_argv=%p (size=%d)", x, x->x_argv, x->x_alloc*sizeof(t_atom)));
-    freebytes(x->x_argv, x->x_alloc*sizeof(t_atom));
-  }
-  A2SDEBUG(post("any2string_free(x=%p): x_outlet=%p", x, x->x_outlet));
-  outlet_free(x->x_outlet);
-  return;
-}
-
-/*--------------------------------------------------------------------
- * setup
- */
-void any2string_setup(void)
-{
-  //-- class
-  any2string_class = class_new(gensym("any2string"),
-			       (t_newmethod)any2string_new,
-			       (t_method)any2string_free,
-			       sizeof(t_any2string),
-			       CLASS_DEFAULT,
-			       A_DEFFLOAT,
-			       0);
-  
-  //-- methods
-  class_addanything(any2string_class,
-		    (t_method)any2string_anything);
-
-  
-  //-- help symbol
-  class_sethelpsymbol(any2string_class, gensym("pdstring-help.pd"));
-}

Copied: trunk/externals/moocow/pdstring/src/any2wchars-help.pd (from rev 10638, trunk/externals/moocow/pdstring+wchar/src/any2wchars-help.pd)
===================================================================
--- trunk/externals/moocow/pdstring/src/any2wchars-help.pd	                        (rev 0)
+++ trunk/externals/moocow/pdstring/src/any2wchars-help.pd	2009-01-25 22:23:14 UTC (rev 10639)
@@ -0,0 +1,37 @@
+#N canvas 72 8 636 478 10;
+#X msg 109 197 0;
+#X msg 77 197 -1;
+#X text 19 47 INLETS:;
+#X text 31 61 1 - pd messages;
+#X text 247 49 OUTLETS:;
+#X floatatom 44 147 8 0 0 0 - - -;
+#X symbolatom 34 125 10 0 0 0 - - -;
+#X text 189 125 ... no special handling for symbols;
+#X text 188 103 anything can be converted to a list...;
+#X text 190 147 ... but "float" selector is silently dropped;
+#X msg 25 104 A B C;
+#X text 182 312 First argument: initial buffer size (length of object-local
+text buffer). This should get re-allocated when necessary. Specify
+0 (zero) to use the default value.;
+#X text 320 458 Bryan Jurish <moocow at ling.uni-potsdam.de>;
+#X text 19 439 SEE ALSO:;
+#X msg 139 197 42;
+#X text 31 75 2 - EOS character (float);
+#X obj 100 438 pdstring;
+#X obj 25 314 any2wchars 128 -1;
+#X obj 25 400 print any2wchars-help;
+#X text 21 29 SYNTAX: any2wchars [INITIAL_BUFSIZE [EOS_CHAR]];
+#X text 49 5 any2wchars : convert pd messages to a list of wchar_t
+values;
+#X text 263 63 1 - lists of wchar_t-valued floats;
+#X text 184 194 The second inlet is as for [any2bytes];
+#X text 184 367 Second argument: initial EOS character. See [any2bytes].
+;
+#X obj 168 438 locale;
+#X connect 0 0 17 1;
+#X connect 1 0 17 1;
+#X connect 5 0 17 0;
+#X connect 6 0 17 0;
+#X connect 10 0 17 0;
+#X connect 14 0 17 1;
+#X connect 17 0 18 0;

Copied: trunk/externals/moocow/pdstring/src/any2wchars.pd (from rev 10638, trunk/externals/moocow/pdstring+wchar/src/any2wchars.pd)
===================================================================
--- trunk/externals/moocow/pdstring/src/any2wchars.pd	                        (rev 0)
+++ trunk/externals/moocow/pdstring/src/any2wchars.pd	2009-01-25 22:23:14 UTC (rev 10639)
@@ -0,0 +1,10 @@
+#N canvas 398 18 328 196 10;
+#X obj 54 20 inlet;
+#X obj 154 20 inlet;
+#X obj 54 62 any2bytes \$1 \$2;
+#X obj 54 134 outlet;
+#X obj 54 90 bytes2wchars \$1;
+#X connect 0 0 2 0;
+#X connect 1 0 2 1;
+#X connect 2 0 4 0;
+#X connect 4 0 3 0;

Copied: trunk/externals/moocow/pdstring/src/bytes2any-help.pd (from rev 10638, trunk/externals/moocow/pdstring+wchar/src/bytes2any-help.pd)
===================================================================
--- trunk/externals/moocow/pdstring/src/bytes2any-help.pd	                        (rev 0)
+++ trunk/externals/moocow/pdstring/src/bytes2any-help.pd	2009-01-25 22:23:14 UTC (rev 10639)
@@ -0,0 +1,47 @@
+#N canvas 507 20 612 604 10;
+#X text 13 52 INLETS:;
+#X text 309 54 OUTLETS:;
+#X text 325 68 1 - pd messages;
+#X text 325 82 2 - bang on done;
+#X msg 24 113 97 32 98 32 99;
+#X msg 39 135 97 0 98 0 99;
+#X msg 92 206 0;
+#X msg 60 206 -1;
+#X msg 124 206 32;
+#X text 166 202 The second inlet sets the message-separating EOS ("end-of-string")
+character. If this character is encountered in an input list \, the
+list is "split" at that point \, and two separate messages are output
+at the leftmost outlet. You can specify a negative value here to avoid
+implicit input splitting entirely. For backwards compatibility \, the
+default EOS character is -1 \, which results in truncation of input
+messages whenever a 0 (zero) is encountered.;
+#X text 163 350 First argument: initial buffer size (length of object-local
+text buffer). This should get re-allocated when necessary. Specify
+0 (zero) to use the default value.;
+#X text 165 405 Second argument: initial EOS character. See above.
+;
+#X text 159 477 Right outlet gives a bang after the entire input list
+has been processed.;
+#X text 189 531 Parsed pd messages are sent to the left outlet.;
+#X text 306 580 Bryan Jurish <moocow at ling.uni-potsdam.de>;
+#X text 27 83 2 - EOS character (float);
+#X text 161 121 lists of floats are converted to pd messages.;
+#X text 168 161 ... selector is ignored ...;
+#X text 21 571 SEE ALSO:;
+#X obj 102 570 pdstring;
+#X text 27 68 1 - byte-valued float lists;
+#X text 59 7 bytes2any : convert lists of byte values to pd messages
+;
+#X text 13 30 SYNTAX: bytes2any [INITIAL_BUFSIZE [EOS_CHAR]];
+#X obj 124 454 print bytes2any-help-done;
+#X obj 24 529 print bytes2any-help;
+#X msg 54 161 StringThing 97;
+#X obj 24 350 bytes2any 128 0;
+#X connect 4 0 26 0;
+#X connect 5 0 26 0;
+#X connect 6 0 26 1;
+#X connect 7 0 26 1;
+#X connect 8 0 26 1;
+#X connect 25 0 26 0;
+#X connect 26 0 24 0;
+#X connect 26 1 23 0;

Copied: trunk/externals/moocow/pdstring/src/bytes2any.c (from rev 10638, trunk/externals/moocow/pdstring+wchar/src/bytes2any.c)
===================================================================
--- trunk/externals/moocow/pdstring/src/bytes2any.c	                        (rev 0)
+++ trunk/externals/moocow/pdstring/src/bytes2any.c	2009-01-25 22:23:14 UTC (rev 10639)
@@ -0,0 +1,226 @@
+/* -*- Mode: C -*- */
+/*=============================================================================*\
+ * File: bytes2any.c
+ * Author: Bryan Jurish <moocow at ling.uni-potsdam.de>
+ * Description: convert strings to pd messages
+ *
+ * Copyright (c) 2004-2009 Bryan Jurish.
+ *
+ * For information on usage and redistribution, and for a DISCLAIMER OF ALL
+ * WARRANTIES, see the file "COPYING", in this distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *=============================================================================*/
+
+#include <string.h>
+#include <m_pd.h>
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "mooPdUtils.h"
+#include "pdstringUtils.h"
+
+/* black magic */
+#ifdef NT
+#pragma warning( disable : 4244 )
+#pragma warning( disable : 4305 )
+#endif
+
+/*--------------------------------------------------------------------
+ * DEBUG
+ *--------------------------------------------------------------------*/
+/*#define BYTES2ANY_DEBUG 1*/
+/*#undef BYTES2ANY_DEBUG*/
+
+#ifdef BYTES2ANY_DEBUG
+# define S2ADEBUG(x) x
+#else
+# define S2ADEBUG(x)
+#endif
+
+#define BYTES2ANY_DEFAULT_BUFLEN PDSTRING_DEFAULT_BUFLEN
+
+/*=====================================================================
+ * Constants
+ *=====================================================================*/
+static char *bytes2any_banner = "bytes2any: pdstring version " PACKAGE_VERSION " by Bryan Jurish";
+
+/*=====================================================================
+ * Structures and Types: any2string
+ *=====================================================================*/
+
+static t_class *bytes2any_class;
+
+typedef struct _bytes2any
+{
+  t_object       x_obj;
+  t_pdstring_bytes x_bytes; //-- byte buffer: {b_buf~x_text,b_len~?,b_alloc~x_size}
+  t_float        x_eos;     //-- eos byte value
+  t_binbuf      *x_binbuf;
+  t_inlet       *x_eos_in;
+  t_outlet      *x_outlet;
+  t_outlet      *x_outlet_done;
+} t_bytes2any;
+
+
+/*=====================================================================
+ * Utilities
+ *=====================================================================*/
+
+/*--------------------------------------------------------------------
+ * bytes2any_atoms()
+ */
+static void bytes2any_atoms(t_bytes2any *x, int argc, t_atom *argv)
+{
+  t_pdstring_atoms src = {argv,argc,argc};
+  pdstring_atoms2bytes(x, &(x->x_bytes), &src, x->x_eos);
+  pdstring_bytes2any(x, NULL, &(x->x_bytes), x->x_binbuf);
+  int x_argc;
+  t_atom *x_argv;
+
+  /*-- output --*/
+  x_argc = binbuf_getnatom(x->x_binbuf);
+  x_argv = binbuf_getvec(x->x_binbuf);
+  if (x_argc && x_argv->a_type == A_SYMBOL) {
+    outlet_anything(x->x_outlet,
+		    x_argv->a_w.w_symbol,
+		    x_argc-1,
+		    x_argv+1);
+  }
+  else {
+    outlet_anything(x->x_outlet,
+		    &s_list,
+		    x_argc,
+		    x_argv);
+  }
+}
+
+
+/*=====================================================================
+ * Methods
+ *=====================================================================*/
+
+/*--------------------------------------------------------------------
+ * anything
+ */
+static void bytes2any_anything(t_bytes2any *x, MOO_UNUSED t_symbol *sel, int argc, t_atom *argv)
+{
+  int i0=0, i;
+
+  /*-- scan & output --*/
+  if (x->x_eos >= 0) {
+    for (i=i0; i < argc; i++) {
+      if (((int)atom_getfloatarg(i,argc,argv))==((int)x->x_eos)) {
+	bytes2any_atoms(x, i-i0, argv+i0);
+	i0=i+1;
+      }
+    }
+  }
+
+  if (i0 < argc) {
+    bytes2any_atoms(x, argc-i0, argv+i0);
+  }
+
+  outlet_bang(x->x_outlet_done);
+}
+
+
+/*--------------------------------------------------------------------
+ * new
+ */
+static void *bytes2any_new(MOO_UNUSED t_symbol *sel, int argc, t_atom *argv)
+{
+    t_bytes2any *x = (t_bytes2any *)pd_new(bytes2any_class);
+    int bufsize    = BYTES2ANY_DEFAULT_BUFLEN;
+
+    //-- defaults
+    x->x_binbuf = binbuf_new();
+    x->x_eos    = -1;
+
+    //-- args: 0: bufsize
+    if (argc > 0) {
+      int initial_bufsize = atom_getintarg(0,argc,argv);
+      if (initial_bufsize > 0) bufsize = initial_bufsize;
+      x->x_eos = -1;   //-- backwards-compatibility hack: no default eos character if only bufsize is specified
+    } 
+    //-- args: 1: separator
+    if (argc > 1) {
+      x->x_eos = atom_getfloatarg(1,argc,argv);
+    }
+
+    //-- allocate x_bytes
+    pdstring_bytes_init(&x->x_bytes, bufsize);
+
+    //-- inlets
+    x->x_eos_in = floatinlet_new(&x->x_obj, &x->x_eos);
+
+    //-- outlets
+    x->x_outlet      = outlet_new(&x->x_obj, &s_list);
+    x->x_outlet_done = outlet_new(&x->x_obj, &s_bang);
+
+    //-- debug
+    S2ADEBUG(post("bytes2any_new: x=%p, size=%d, eos=%d, binbuf=%p, text=%p", x, x->x_size, x->x_eos, x->x_binbuf, x->x_text));
+
+    return (void *)x;
+}
+
+/*--------------------------------------------------------------------
+ * free
+ */
+static void bytes2any_free(t_bytes2any *x)
+{
+  pdstring_bytes_clear(&x->x_bytes);
+  binbuf_free(x->x_binbuf);
+  inlet_free(x->x_eos_in);
+  outlet_free(x->x_outlet_done);
+  outlet_free(x->x_outlet);
+  return;
+}
+
+/*--------------------------------------------------------------------
+ * setup: guts
+ */
+void bytes2any_setup_guts(void)
+{
+  //-- class
+  bytes2any_class = class_new(gensym("bytes2any"),
+			       (t_newmethod)bytes2any_new,
+			       (t_method)bytes2any_free,
+			       sizeof(t_bytes2any),
+			       CLASS_DEFAULT,
+			       A_GIMME,                     //-- initial_bufsize, eos_char
+			       0);
+
+  //-- alias
+  class_addcreator((t_newmethod)bytes2any_new, gensym("bytes2any"), A_GIMME, 0);
+  
+  //-- methods
+  class_addanything(bytes2any_class, (t_method)bytes2any_anything);
+
+  
+  //-- help symbol
+  //class_sethelpsymbol(bytes2any_class, gensym("bytes2any-help.pd")); //-- breaks pd-extended help lookup
+}
+
+/*--------------------------------------------------------------------
+ * setup
+ */
+void bytes2any_setup(void)
+{
+  post(bytes2any_banner);
+  bytes2any_setup_guts();
+}

Copied: trunk/externals/moocow/pdstring/src/bytes2wchars-help.pd (from rev 10638, trunk/externals/moocow/pdstring+wchar/src/bytes2wchars-help.pd)
===================================================================
--- trunk/externals/moocow/pdstring/src/bytes2wchars-help.pd	                        (rev 0)
+++ trunk/externals/moocow/pdstring/src/bytes2wchars-help.pd	2009-01-25 22:23:14 UTC (rev 10639)
@@ -0,0 +1,46 @@
+#N canvas 610 14 566 410 10;
+#X text 81 5 bytes2wchars : convert bytes to wide characters;
+#X text 11 27 SYNTAX: bytes2wchars [INITIAL_BUFSIZE];
+#X text 11 46 INLETS:;
+#X text 241 48 OUTLETS:;
+#X text 19 62 1 - byte-valued float lists;
+#X text 257 62 1 - wchar_t-valued float lists;
+#X obj 24 310 bytes2wchars;
+#X obj 24 334 print bytes2wchars-help;
+#X msg 24 95 97 32 98 32 99;
+#X msg 41 227 228 246 252;
+#X msg 71 159 C;
+#X text 69 129 8-bit values are interpreted according to the current
+locale's LC_CTYPE category: here are some examples:;
+#N canvas 0 0 338 182 locale_LC_CTYPE 0;
+#X obj 48 124 locale;
+#X obj 48 36 inlet;
+#X obj 48 64 symbol;
+#X msg 48 92 set LC_CTYPE \$1;
+#X text 57 143 + requires the "locale" external;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 0 0;
+#X restore 103 190 pd locale_LC_CTYPE;
+#X msg 45 255 195 164 195 182 195 188;
+#X text 219 253 ... the same string encoded in UTF-8;
+#X text 205 387 Bryan Jurish <moocow at ling.uni-potsdam.de>;
+#X text 11 371 SEE ALSO:;
+#X obj 26 388 pdstring;
+#X obj 93 388 locale;
+#X text 11 355 BUGS: float representation is only safe up to 24-bit
+values;
+#X msg 103 159 en_DK.ISO-8859-1;
+#X msg 225 159 en_DK.UTF-8;
+#X text 145 97 Values <= 127 are unchanged;
+#X msg 49 281 207 128 206 180;
+#X text 217 225 ISO-8859-1 bytes "&auml \, &ouml \, &uuml";
+#X text 219 283 "&pi &delta" in UTF-8;
+#X connect 6 0 7 0;
+#X connect 8 0 6 0;
+#X connect 9 0 6 0;
+#X connect 10 0 12 0;
+#X connect 13 0 6 0;
+#X connect 20 0 12 0;
+#X connect 21 0 12 0;
+#X connect 23 0 6 0;

Copied: trunk/externals/moocow/pdstring/src/bytes2wchars-test.pd (from rev 10638, trunk/externals/moocow/pdstring+wchar/src/bytes2wchars-test.pd)
===================================================================
--- trunk/externals/moocow/pdstring/src/bytes2wchars-test.pd	                        (rev 0)
+++ trunk/externals/moocow/pdstring/src/bytes2wchars-test.pd	2009-01-25 22:23:14 UTC (rev 10639)
@@ -0,0 +1,42 @@
+#N canvas 600 24 578 300 10;
+#X obj 114 136 bytes2wchars;
+#X obj 138 168 print wchars;
+#X obj 285 238 locale;
+#X msg 285 159 get;
+#X msg 321 215 set LC_CTYPE \$1;
+#X obj 321 194 symbol;
+#X msg 321 163 C;
+#X msg 355 163 en_US.ISO-8859-1;
+#X msg 477 163 en_US.UTF-8;
+#X obj 284 262 print locale;
+#X msg 41 41 246;
+#X floatatom 116 204 5 0 0 0 - - -;
+#X msg 41 61 195 182;
+#X text 39 23 &ouml \;;
+#X msg 159 61 197 147;
+#X text 155 23 &oelig \;;
+#X msg 159 39 339;
+#X msg 245 37 960;
+#X msg 245 59 207 128;
+#X text 245 21 &pi \;;
+#X obj 353 136 loadbang;
+#X text 97 41 ucs-4;
+#X text 99 59 utf-8;
+#X msg 337 63 207 128 0 197 147 0 195 182 0;
+#X connect 0 0 1 0;
+#X connect 0 0 11 0;
+#X connect 2 0 9 0;
+#X connect 3 0 2 0;
+#X connect 4 0 2 0;
+#X connect 5 0 4 0;
+#X connect 6 0 5 0;
+#X connect 7 0 5 0;
+#X connect 8 0 5 0;
+#X connect 10 0 0 0;
+#X connect 12 0 0 0;
+#X connect 14 0 0 0;
+#X connect 16 0 0 0;
+#X connect 17 0 0 0;
+#X connect 18 0 0 0;
+#X connect 20 0 7 0;
+#X connect 23 0 0 0;

Copied: trunk/externals/moocow/pdstring/src/bytes2wchars.c (from rev 10638, trunk/externals/moocow/pdstring+wchar/src/bytes2wchars.c)
===================================================================
--- trunk/externals/moocow/pdstring/src/bytes2wchars.c	                        (rev 0)
+++ trunk/externals/moocow/pdstring/src/bytes2wchars.c	2009-01-25 22:23:14 UTC (rev 10639)
@@ -0,0 +1,171 @@
+/* -*- Mode: C -*- */
+/*=============================================================================*\
+ * File: bytes2wchars.c
+ * Author: Bryan Jurish <moocow at ling.uni-potsdam.de>
+ * Description: convert byte-valued atom lists to wchar_t-valued atom lists
+ *
+ * Copyright (c) 2009 Bryan Jurish.
+ *
+ * For information on usage and redistribution, and for a DISCLAIMER OF ALL
+ * WARRANTIES, see the file "COPYING", in this distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *=============================================================================*/
+
+#include <string.h>
+#include <wchar.h>
+#include <stdlib.h>
+#include <m_pd.h>
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "mooPdUtils.h"
+#include "pdstringUtils.h"
+
+/* black magic */
+#ifdef NT
+#pragma warning( disable : 4244 )
+#pragma warning( disable : 4305 )
+#endif
+
+/*--------------------------------------------------------------------
+ * DEBUG
+ *--------------------------------------------------------------------*/
+
+/*=====================================================================
+ * Constants
+ *=====================================================================*/
+static char *bytes2wchars_banner = "bytes2wchars: pdstring version " PACKAGE_VERSION " by Bryan Jurish";
+
+#define BYTES2WCHARS_DEFAULT_BUFLEN PDSTRING_DEFAULT_BUFLEN
+
+/*=====================================================================
+ * Structures and Types: any2string
+ *=====================================================================*/
+
+static t_class *bytes2wchars_class;
+
+typedef struct _bytes2wchars
+{
+  t_object          x_obj;
+  t_pdstring_bytes  x_bytes;  //-- byte buffer
+  t_pdstring_wchars x_wchars; //-- wide character buffer
+  t_pdstring_atoms  x_atoms;  //-- atoms to output
+  t_outlet         *x_outlet;
+} t_bytes2wchars;
+
+
+/*=====================================================================
+ * Utilities
+ *=====================================================================*/
+
+/*--------------------------------------------------------------------
+ * bytes2wchars_atoms()
+ */
+static void bytes2wchars_atoms(t_bytes2wchars *x, int argc, t_atom *argv)
+{
+  t_pdstring_atoms src = {argv,argc,0};
+
+  /*-- convert atoms -> bytes -> wchars -> atoms --*/
+  pdstring_atoms2bytes (x, &x->x_bytes, &src, PDSTRING_EOS_NONE);
+  pdstring_bytes2wchars(x, &x->x_wchars, &x->x_bytes);
+  pdstring_wchars2atoms(x, &x->x_atoms, &x->x_wchars);
+}
+
+
+/*=====================================================================
+ * Methods
+ *=====================================================================*/
+
+/*--------------------------------------------------------------------
+ * anything
+ */
+static void bytes2wchars_anything(t_bytes2wchars *x, MOO_UNUSED t_symbol *sel, int argc, t_atom *argv)
+{
+  bytes2wchars_atoms(x, argc, argv);
+
+  /*-- output --*/
+  outlet_anything(x->x_outlet, &s_list, x->x_atoms.a_len, x->x_atoms.a_buf);
+}
+
+
+/*--------------------------------------------------------------------
+ * new
+ */
+static void *bytes2wchars_new(MOO_UNUSED t_symbol *sel, int argc, t_atom *argv)
+{
+    t_bytes2wchars *x = (t_bytes2wchars *)pd_new(bytes2wchars_class);
+    int bufsize = PDSTRING_DEFAULT_BUFLEN;
+
+    //-- args: 0: bufsize
+    if (argc > 0) {
+      int initial_bufsize = atom_getintarg(0,argc,argv);
+      if (initial_bufsize > 0) bufsize = initial_bufsize;
+    } 
+
+    //-- allocate
+    pdstring_bytes_init(&x->x_bytes, bufsize);
+    pdstring_wchars_init(&x->x_wchars, bufsize);
+    pdstring_atoms_init(&x->x_atoms, bufsize);
+
+    //-- outlets
+    x->x_outlet      = outlet_new(&x->x_obj, &s_list);
+
+    return (void *)x;
+}
+
+/*--------------------------------------------------------------------
+ * free
+ */
+static void bytes2wchars_free(t_bytes2wchars *x)
+{
+  pdstring_bytes_clear(&x->x_bytes);
+  pdstring_wchars_clear(&x->x_wchars);
+  pdstring_atoms_clear(&x->x_atoms);
+  outlet_free(x->x_outlet);
+  return;
+}
+
+/*--------------------------------------------------------------------
+ * setup: guts
+ */
+void bytes2wchars_setup_guts(void)
+{
+  //-- class
+  bytes2wchars_class = class_new(gensym("bytes2wchars"),
+				 (t_newmethod)bytes2wchars_new,
+				 (t_method)bytes2wchars_free,
+				 sizeof(t_bytes2wchars),
+				 CLASS_DEFAULT,
+				 A_GIMME,                   //-- initial_bufsize
+				 0);
+
+  //-- methods
+  class_addanything(bytes2wchars_class, (t_method)bytes2wchars_anything);
+  
+  //-- help symbol
+  //class_sethelpsymbol(bytes2wchars_class, gensym("bytes2wchars-help.pd")); //-- breaks pd-extended help lookup
+}
+
+/*--------------------------------------------------------------------
+ * setup
+ */
+void bytes2wchars_setup(void)
+{
+  post(bytes2wchars_banner);
+  bytes2wchars_setup_guts();
+}

Modified: trunk/externals/moocow/pdstring/src/config.h.in
===================================================================
--- trunk/externals/moocow/pdstring/src/config.h.in	2009-01-25 22:16:17 UTC (rev 10638)
+++ trunk/externals/moocow/pdstring/src/config.h.in	2009-01-25 22:23:14 UTC (rev 10639)
@@ -1,8 +1,11 @@
 /* src/config.h.in.  Generated from configure.ac by autoheader.  */
 
-/* Define this to include debugging code for the 'string2any' external. */
-#undef ANY2STRING_DEBUG
+/* Define this to include debugging code for the 'bytes2any' external. */
+#undef ANY2BYTES_DEBUG
 
+/* Define this to include debugging code for the 'any2bytes' external. */
+#undef BYTES2ANY_DEBUG
+
 /* Define to 1 if you have the <string.h> header file. */
 #undef HAVE_STRING_H
 
@@ -33,8 +36,5 @@
 /* User who configured this external */
 #undef PDSTRING_USER
 
-/* Define this to include debugging code for the 'any2string' external. */
-#undef STRING2ANY_DEBUG
-
 /* Version number of package */
 #undef VERSION

Modified: trunk/externals/moocow/pdstring/src/pdstring-help.pd
===================================================================
--- trunk/externals/moocow/pdstring/src/pdstring-help.pd	2009-01-25 22:16:17 UTC (rev 10638)
+++ trunk/externals/moocow/pdstring/src/pdstring-help.pd	2009-01-25 22:23:14 UTC (rev 10639)
@@ -1,19 +1,31 @@
-#N canvas 191 76 563 311 10;
-#X text 258 284 Bryan Jurish <moocow at ling.uni-potsdam.de>;
+#N canvas 163 18 501 441 10;
+#X text 196 400 Bryan Jurish <moocow at ling.uni-potsdam.de>;
+#X text 54 3 [pdstring] library : byte and wide-character strings;
+#X obj 51 76 bytes2any;
+#X obj 51 52 any2bytes;
+#X text 148 77 convert byte strings to pd messages;
+#X text 148 53 convert pd messages to byte strings;
+#X obj 45 142 bytes2wchars;
+#X text 147 143 convert byte strings to wide character strings;
+#X obj 45 168 wchars2bytes;
+#X text 148 169 convert wide character strings to byte strings;
+#X text 22 121 BYTES <-> WIDE CHARACTERS;
+#X text 26 33 BYTES <-> PD MESSAGES;
+#X text 20 211 WIDE CHARACTERS <-> PD MESSAGES;
+#X text 145 233 convert pd messages to wide character strings;
+#X text 146 259 convert wide character strings to pd messages;
+#X text 18 369 SEE ALSO:;
+#N canvas 0 0 584 308 pdstring-bytes 0;
 #X floatatom 56 81 8 0 0 0 - - -;
 #X symbolatom 46 59 10 0 0 0 - - -;
 #X text 201 59 ... no special handling for symbols;
 #X text 200 37 anything can be converted to a list...;
-#X obj 37 108 any2string;
-#X obj 37 230 string2any;
 #X floatatom 54 178 4 0 0 0 - - -;
-#X text 213 230 string2any converts ASCII lists to Pd messages...;
 #X text 202 81 ... but "float" selector is silently dropped;
 #N canvas 0 0 448 335 ascii-table 0;
 #X obj 162 144 f 0;
 #X obj 134 153 + 1;
 #X obj 161 165 t f f f;
-#X obj 133 198 string2any;
 #X obj 154 243 pack s 0;
 #X obj 162 119 until;
 #X obj 133 218 symbol;
@@ -23,37 +35,69 @@
 #X obj 162 54 t b b;
 #X obj 154 266 route list;
 #X obj 154 293 print charset;
+#X obj 133 198 bytes2any;
 #X connect 0 0 2 0;
 #X connect 1 0 0 1;
 #X connect 2 0 1 0;
-#X connect 2 1 3 0;
-#X connect 2 2 4 1;
-#X connect 3 0 6 0;
-#X connect 4 0 11 0;
-#X connect 5 0 0 0;
+#X connect 2 1 12 0;
+#X connect 2 2 3 1;
+#X connect 3 0 10 0;
+#X connect 4 0 0 0;
+#X connect 5 0 3 0;
 #X connect 6 0 4 0;
-#X connect 7 0 5 0;
-#X connect 8 0 0 1;
-#X connect 9 0 10 0;
-#X connect 10 0 7 0;
-#X connect 10 1 8 0;
-#X connect 11 0 12 0;
-#X connect 11 1 12 0;
-#X restore 249 144 pd ascii-table;
-#X msg 249 121 bang;
-#X text 361 143 know your charset;
-#X obj 58 139 print any2string-out;
-#X obj 37 254 print string2any-out;
+#X connect 7 0 0 1;
+#X connect 8 0 9 0;
+#X connect 9 0 6 0;
+#X connect 9 1 7 0;
+#X connect 10 0 11 0;
+#X connect 10 1 11 0;
+#X connect 12 0 5 0;
+#X restore 289 156 pd ascii-table;
+#X msg 289 133 bang;
 #X msg 37 38 A B C;
 #X msg 55 199 list 49 50 51;
-#X text 54 3 any2string \, string2any : ASCII conversions in [pdstring]
-lib;
-#X connect 1 0 5 0;
-#X connect 2 0 5 0;
-#X connect 5 0 13 0;
-#X connect 5 0 6 0;
-#X connect 6 0 14 0;
+#X obj 58 139 print any2bytes-out;
+#X obj 37 108 any2bytes;
+#X obj 37 254 print bytes2any-out;
+#X obj 37 230 bytes2any;
+#X text 289 173 ... know your character set;
+#X text 213 230 bytes2any converts byte lists to Pd messages...;
+#X connect 0 0 11 0;
+#X connect 1 0 11 0;
+#X connect 4 0 13 0;
 #X connect 7 0 6 0;
+#X connect 8 0 11 0;
+#X connect 9 0 13 0;
 #X connect 11 0 10 0;
-#X connect 15 0 5 0;
-#X connect 16 0 6 0;
+#X connect 11 0 13 0;
+#X connect 13 0 12 0;
+#X restore 87 368 pd pdstring-bytes;
+#N canvas 0 0 584 308 pdstring-wchars 0;
+#X floatatom 56 81 8 0 0 0 - - -;
+#X symbolatom 46 59 10 0 0 0 - - -;
+#X text 201 59 ... no special handling for symbols;
+#X text 200 37 anything can be converted to a list...;
+#X floatatom 54 178 4 0 0 0 - - -;
+#X text 202 81 ... but "float" selector is silently dropped;
+#X msg 37 38 A B C;
+#X msg 55 199 list 49 50 51;
+#X obj 37 254 print wchars2any-out;
+#X text 213 230 wchars2any converts wchar lists to Pd messages...;
+#X obj 58 139 print any2wchars-out;
+#X obj 37 108 any2wchars;
+#X obj 37 230 wchars2any;
+#X connect 0 0 11 0;
+#X connect 1 0 11 0;
+#X connect 4 0 12 0;
+#X connect 6 0 11 0;
+#X connect 7 0 12 0;
+#X connect 11 0 10 0;
+#X connect 11 0 12 0;
+#X connect 12 0 8 0;
+#X restore 217 368 pd pdstring-wchars;
+#X obj 43 232 any2wchars;
+#X obj 43 258 wchars2any;
+#X obj 355 368 locale;
+#X text 18 303 NOTE:;
+#X text 26 319 Wide character support requires locale support to be
+enabled \, e.g. by the [locale] external.;

Modified: trunk/externals/moocow/pdstring/src/pdstring.c
===================================================================
--- trunk/externals/moocow/pdstring/src/pdstring.c	2009-01-25 22:16:17 UTC (rev 10638)
+++ trunk/externals/moocow/pdstring/src/pdstring.c	2009-01-25 22:23:14 UTC (rev 10639)
@@ -55,13 +55,10 @@
  * External declarations
  *=====================================================================*/
 #ifndef PDSTRING_OBJECT_EXTERNALS
-/*
-extern void any2string_setup_guts(void);
-extern void string2any_setup_guts(void);
-*/
-#include "any2string.c"
-#include "string2any.c"
-
+# include "any2bytes.c"
+# include "bytes2any.c"
+# include "bytes2wchars.c"
+# include "wchars2bytes.c"
 #endif
 
 /*--------------------------------------------------------------------
@@ -91,8 +88,10 @@
   pdstring_help(NULL);
 
 #ifndef PDSTRING_OBJECT_EXTERNALS
-  any2string_setup_guts();
-  string2any_setup_guts();
+  any2bytes_setup_guts();
+  bytes2any_setup_guts();
+  bytes2wchars_setup_guts();
+  wchars2bytes_setup_guts();
 #endif
 
   pdstring_class = class_new(gensym("pdstring"),

Copied: trunk/externals/moocow/pdstring/src/pdstringUtils.c (from rev 10638, trunk/externals/moocow/pdstring+wchar/src/pdstringUtils.c)
===================================================================
--- trunk/externals/moocow/pdstring/src/pdstringUtils.c	                        (rev 0)
+++ trunk/externals/moocow/pdstring/src/pdstringUtils.c	2009-01-25 22:23:14 UTC (rev 10639)
@@ -0,0 +1,452 @@
+/* -*- Mode: C -*- */
+/*=============================================================================*\
+ * File: pdstringUtils.c
+ * Author: Bryan Jurish <moocow at ling.uni-potsdam.de>
+ * Description: pdstring: common utilities
+ *
+ * Copyright (c) 2009 Bryan Jurish.
+ *
+ * For information on usage and redistribution, and for a DISCLAIMER OF ALL
+ * WARRANTIES, see the file "COPYING", in this distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *=============================================================================*/
+
+#ifndef PDSTRING_UTILS_C
+#define PDSTRING_UTILS_C
+
+#include <string.h>
+#include <m_pd.h>
+#include <stdlib.h>
+#include "mooPdUtils.h"
+
+/*=====================================================================
+ * Debugging
+ *=====================================================================*/
+#define PDSTRING_UTILS_DEBUG 1
+//#undef  PDSTRING_UTILS_DEBUG
+
+#ifdef PDSTRING_UTILS_DEBUG
+# define PDSDEBUG(x) x
+#else
+# define PDSDEBUG(x)
+#endif
+
+/*=====================================================================
+ * Constants
+ *=====================================================================*/
+
+/* PDSTRING_EOS_NONE
+ *  + "safe" float value to use as x_eos if no truncation is desired
+ */
+#define PDSTRING_EOS_NONE 1e38f
+
+/* PDSTRING_DEFAULT_BUFLEN
+ *  + common default buffer length
+ */
+#define PDSTRING_DEFAULT_BUFLEN 256
+
+/* PDSTRING_DEFAULT_GET
+ *  + common default buffer grow length
+ */
+#define PDSTRING_DEFAULT_GET 256
+
+/* PDSTRING_BYSTES_GET
+ *  + number of extra bytes to get when buffer must grow
+ */
+#define PDSTRING_BYTES_GET PDSTRING_DEFAULT_GET
+#define PDSTRING_WCHARS_GET PDSTRING_DEFAULT_GET
+#define PDSTRING_ATOMS_GET PDSTRING_DEFAULT_GET
+
+/*=====================================================================
+ * Structures & Types
+ *=====================================================================*/
+
+/* t_pdstring_bytes
+ *  + a byte-string buffer
+ */
+typedef struct _pdstring_bytes {
+  unsigned char *b_buf;    //-- byte-string buffer
+  int            b_len;    //-- current length of b_buf
+  size_t         b_alloc;  //-- allocated size of b_buf
+} t_pdstring_bytes;
+
+/* t_pdstring_wchars
+ *  + a wide character buffer
+ */
+typedef struct _pdstring_wchars {
+  wchar_t       *w_buf;    //-- wide character buffer
+  int            w_len;    //-- current length of w_buf
+  size_t         w_alloc;  //-- allocated size of w_buf
+} t_pdstring_wchars;
+
+/* t_pdstring_atoms
+ *  + an atom-list buffer
+ */
+typedef struct _pdstring_atoms {
+  t_atom        *a_buf;    //-- t_atom buffer (aka argv)
+  int            a_len;    //-- current length of a_buf (aka argc)
+  size_t         a_alloc;  //-- allocated size of a_buf
+} t_pdstring_atoms;
+
+/*=====================================================================
+ * Initialization
+ *=====================================================================*/
+
+/*---------------------------------------------------------------------
+ * bytes
+ */
+static void pdstring_bytes_clear(t_pdstring_bytes *b)
+{
+  if (b->b_alloc) freebytes(b->b_buf, (b->b_alloc)*sizeof(unsigned char));
+  b->b_buf   = NULL;
+  b->b_len   = 0;
+  b->b_alloc = 0;
+}
+static void pdstring_bytes_realloc(t_pdstring_bytes *b, size_t n)
+{
+  pdstring_bytes_clear(b);
+  b->b_buf   = n ? (unsigned char*)getbytes(n*sizeof(unsigned char)) : NULL;
+  b->b_alloc = n;
+}
+static void pdstring_bytes_init(t_pdstring_bytes *b, size_t n)
+{
+  pdstring_bytes_clear(b);
+  pdstring_bytes_realloc(b,n);
+}
+
+/*---------------------------------------------------------------------
+ * wchars
+ */
+static void pdstring_wchars_clear(t_pdstring_wchars *w)
+{
+  if (w->w_alloc) freebytes(w->w_buf, (w->w_alloc)*sizeof(wchar_t));
+  w->w_buf   = NULL;
+  w->w_len   = 0;
+  w->w_alloc = 0;
+}
+static void pdstring_wchars_realloc(t_pdstring_wchars *w, size_t n)
+{
+  pdstring_wchars_clear(w);
+  w->w_buf   = n ? (wchar_t*)getbytes(n*sizeof(wchar_t)) : NULL;
+  w->w_alloc = n;
+}
+static void pdstring_wchars_init(t_pdstring_wchars *w, size_t n)
+{
+  pdstring_wchars_clear(w);
+  pdstring_wchars_realloc(w,n);
+}
+
+/*---------------------------------------------------------------------
+ * atoms
+ */
+static void pdstring_atoms_clear(t_pdstring_atoms *a)
+{
+  if (a->a_alloc) freebytes(a->a_buf, (a->a_alloc)*sizeof(t_atom));
+  a->a_buf   = NULL;
+  a->a_len   = 0;
+  a->a_alloc = 0;
+}
+static void pdstring_atoms_realloc(t_pdstring_atoms *a, size_t n)
+{
+  pdstring_atoms_clear(a);
+  a->a_buf   = n ? (t_atom*)getbytes(n*sizeof(t_atom)) : NULL;
+  a->a_alloc = n;
+}
+static void pdstring_atoms_init(t_pdstring_atoms *a, size_t n)
+{
+  pdstring_atoms_clear(a);
+  pdstring_atoms_realloc(a,n);
+}
+
+
+/*=====================================================================
+ * Utilities
+ *=====================================================================*/
+
+/*--------------------------------------------------------------------
+ * pdstring_any2bytes()
+ *  + x is used for error reporting
+ *  + uses x_binbuf for conversion
+ *  + selector sel is added to binbuf too, if it is none of  {NULL, &s_float, &s_list, &s_}
+ *  + x_binbuf may be NULL, in which case a temporary t_binbuf is created and used
+ *    - in this case, output bytes are copied into *dst, reallocating if required
+ *  + if x_binbuf is given and non-NULL, dst may be NULL.
+ *    - if dst is non-NULL, its values will be clobbered by those returned by
+ *      binbuf_gettext()
+ */
+static void pdstring_any2bytes(void *x, t_pdstring_bytes *dst, t_symbol *sel, t_pdstring_atoms *src, t_binbuf *x_binbuf)
+{
+  int bb_is_tmp=0;
+
+  //-- create temporary binbuf?
+  if (!x_binbuf) {
+    x_binbuf = binbuf_new();
+    bb_is_tmp = 1;
+  }
+
+  //-- prepare binbuf
+  binbuf_clear(x_binbuf);
+
+  //-- binbuf_add(): selector
+  if (sel && sel != &s_float && sel != &s_list && sel != &s_) {
+    t_atom a;
+    SETSYMBOL((&a), sel);
+    binbuf_add(x_binbuf, 1, &a);
+  }
+
+  //-- binbuf_add(): src atoms
+  binbuf_add(x_binbuf, src->a_len, src->a_buf);
+
+  //-- output: get text string
+  if (bb_is_tmp) {
+    //-- temporary binbuf: copy text
+    char *text;
+    int   len;
+    binbuf_gettext(x_binbuf, &text, &len);
+
+    //-- reallocate?
+    if ( dst->b_alloc < len )
+      pdstring_bytes_realloc(dst, len + PDSTRING_BYTES_GET);
+
+    //-- copy
+    memcpy(dst->b_buf, text, len*sizeof(char));
+    dst->b_len = len;
+
+    //-- cleanup
+    binbuf_free(x_binbuf);
+    if (text) freebytes(text,len);
+  }
+  else if (dst) {
+    //-- permanent binbuf: clobber dst
+    pdstring_bytes_clear(dst);
+    binbuf_gettext(x_binbuf, ((char**)((void*)(&dst->b_buf))), &dst->b_len);
+    dst->b_alloc = dst->b_len;
+  }
+}
+
+
+/*--------------------------------------------------------------------
+ * pdstring_bytes2any()
+ *  + uses x_binbuf for conversion
+ *  + x_binbuf may be NULL, in which case a temporary t_binbuf is created and used
+ *    - in this case, output atoms are copied into *dst, reallocating if required
+ *  + if x_binbuf is given and non-NULL, dst may be NULL.
+ *    - if dst is non-NULL, its values will be clobbered by those returned by
+ *      binbuf_getnatom() and binbuf_getvec()
+ */
+static void pdstring_bytes2any(void *x, t_pdstring_atoms *dst, t_pdstring_bytes *src, t_binbuf *x_binbuf)
+{
+  int bb_is_tmp=0;
+
+  //-- create temporary binbuf?
+  if (!x_binbuf) {
+    x_binbuf = binbuf_new();
+    bb_is_tmp = 1;
+  }
+
+  //-- populate binbuf
+  binbuf_clear(x_binbuf);
+  binbuf_text(x_binbuf, (char*)src->b_buf, src->b_len);
+  //PDSDEBUG(post("bytes2any[dst=%p,src=%p,bb=%p]: binbuf_print: ", dst,src,x_binbuf));
+  //PDSDEBUG(binbuf_print(x_binbuf));
+
+  //-- populate atom list
+  if (bb_is_tmp) {
+    //-- temporary binbuf: copy atoms
+    t_atom *argv = binbuf_getvec(x_binbuf);
+    int     argc = binbuf_getnatom(x_binbuf);
+
+    //-- reallocate?
+    if ( dst->a_alloc < argc )
+      pdstring_atoms_realloc(dst, argc + PDSTRING_ATOMS_GET);
+
+    //-- copy
+    memcpy(dst->a_buf, argv, argc*sizeof(t_atom));
+    dst->a_len = argc;
+
+    //-- cleanup
+    binbuf_free(x_binbuf);
+  }
+  else if (dst) {
+    //-- permanent binbuf: clobber dst
+    dst->a_buf = binbuf_getvec(x_binbuf);
+    dst->a_len = binbuf_getnatom(x_binbuf);
+    dst->a_alloc = 0;  //-- don't try to free this
+  }
+}
+
+
+/*--------------------------------------------------------------------
+ * pdstring_atoms2bytes()
+ *  + always appends a final NUL byte to *dst_buf, even if src_argv doesn't contain one
+ *  + returns number of bytes actually written to *dst_buf, __including__ implicit trailing NUL
+ */
+static int pdstring_atoms2bytes(void *x, t_pdstring_bytes *dst, t_pdstring_atoms *src, t_float x_eos)
+{
+  t_atom *argv = src->a_buf;
+  int     argc = src->a_len;
+  unsigned char *s;
+  int     new_len=0;
+
+  /*-- re-allocate? --*/
+  if (dst->b_alloc <= (argc+1))
+    pdstring_bytes_realloc(dst, argc + 1 + PDSTRING_BYTES_GET);
+
+  /*-- get byte string --*/
+  for (s=dst->b_buf, new_len=0; argc > 0; argc--, argv++, s++, new_len++)
+    {
+      *s = atom_getfloat(argv);
+      if ((x_eos<0 && !*s) || (*s==x_eos)) { break; } /*-- hack: truncate at first EOS char --*/
+    }
+  *s = '\0'; /*-- always append terminating NUL */
+  dst->b_len = new_len;
+
+  return new_len+1;
+}
+
+/*--------------------------------------------------------------------
+ * pdstring_atoms2wchars()
+ *  + always appends a final NUL wchar_t to dst->w_buf, even if src->a_buf doesn't contain one
+ *  + returns number of bytes actually written to dst->w_buf, __including__ implicit trailing NUL
+ *  + but dst->w_len does NOT include implicit trailing NUL
+ */
+static int pdstring_atoms2wchars(void *x, t_pdstring_wchars *dst, t_pdstring_atoms *src, t_float x_eos)
+{
+  t_atom *argv = src->a_buf;
+  int     argc = src->a_len;
+  int     new_len=0;
+  wchar_t *s;
+
+  /*-- re-allocate? --*/
+  if (dst->w_alloc <= (argc+1))
+    pdstring_wchars_realloc(dst, argc + 1 + PDSTRING_WCHARS_GET);
+
+  /*-- get wchar_t string --*/
+  for (s=dst->w_buf, new_len=0; argc > 0; argc--, argv++, s++, new_len++)
+    {
+      *s = atom_getfloat(argv);
+      if ((x_eos<0 && !*s) || (*s==x_eos)) { break; } /*-- hack: truncate at first EOS char --*/
+    }
+  *s = L'\0'; /*-- always append terminating NUL */
+  dst->w_len = new_len;
+
+  return new_len+1;
+}
+
+
+/*--------------------------------------------------------------------
+ * pdstring_bytes2wchars()
+ */
+static int pdstring_bytes2wchars(void *x, t_pdstring_wchars *dst, t_pdstring_bytes *src)
+{
+  size_t bi, wi;
+
+  //-- re-allocate?
+  if ( dst->w_alloc < src->b_len )
+    pdstring_wchars_realloc(dst, src->b_len + PDSTRING_WCHARS_GET);
+
+  //-- convert
+  //PDSDEBUG(post("\nbytes2wchars[dst=%p,src=%p]: init", dst,src);)
+  mbtowc(NULL,NULL,0); //-- re-initialize conversion state for mbtowc()
+  for (bi=0,wi=0; bi<src->b_len; wi++) {
+    int nbytes = mbtowc(dst->w_buf+wi, (char*)(src->b_buf+bi), src->b_len-bi);
+    if (nbytes <= 0) {
+      if (nbytes < 0) {
+	pd_error(x,"pdstring_bytes2wchars(): malformed byte string \"%s\" at char '%c' - copying literal byte", src->b_buf, src->b_buf[bi]);
+      }
+      dst->w_buf[wi] = src->b_buf[bi];
+      nbytes = 1;
+    }
+    bi += nbytes;
+    //PDSDEBUG(post("bytes2wchars[dst=%p,src=%p]: loop[bi=%d,wi=%d,src=%s]: nbytes=%d,wc=%u", dst,src, bi,wi,src, nbytes,dst->w_buf[wi]));
+  }
+  dst->w_len = wi;
+  return wi;
+}
+
+/*--------------------------------------------------------------------
+ * pdstring_wchars2bytes()
+ */
+static int pdstring_wchars2bytes(void *x, t_pdstring_bytes *dst, t_pdstring_wchars *src)
+{
+  size_t bi, wi;
+
+  //-- re-allocate?
+  if ( dst->b_alloc < src->w_len * MB_CUR_MAX )
+    pdstring_bytes_realloc(dst, src->w_len * MB_CUR_MAX + PDSTRING_WCHARS_GET);
+
+  //-- convert
+  for (bi=0,wi=0; wi < src->w_len; wi++) {
+    int nbytes = wctomb((char*)dst->b_buf+bi, src->w_buf[wi]);
+    if (nbytes <= 0) {
+      if (nbytes < 0) {
+	pd_error(x,"pdstring_wchars2bytes(): malformed wide string \"%S\" at wchar_t '%C' - forcing literal value", src->w_buf, src->w_buf[wi]);
+      }
+      dst->b_buf[bi] = src->w_buf[wi];
+      nbytes = 1;
+    }
+    bi += nbytes;
+  }
+  dst->b_len = bi;
+  return bi;
+}
+
+
+/*--------------------------------------------------------------------
+ * pdstring_bytes2atoms()
+ *  + implicitly appends x_eos if >= 0 and != PDSTRING_EOS_NONE
+ */
+static void pdstring_bytes2atoms(void *x, t_pdstring_atoms *dst, t_pdstring_bytes *src, t_float x_eos)
+{
+  int i;
+
+  //-- re-allocate?
+  if ( dst->a_alloc <= src->b_len )
+    pdstring_atoms_realloc(dst, src->b_len + 1 + PDSTRING_ATOMS_GET);
+
+  //-- convert
+  for (i=0; i < src->b_len; i++) {
+    SETFLOAT((dst->a_buf+i), src->b_buf[i]);
+  }
+  dst->a_len = src->b_len;
+
+  //-- append eos atom?
+  if (x_eos >= 0 && x_eos != PDSTRING_EOS_NONE) {
+    SETFLOAT(dst->a_buf+dst->a_len, x_eos);
+    dst->a_len++;
+  }
+}
+
+/*--------------------------------------------------------------------
+ * pdstring_wchars2atoms()
+ */
+static void pdstring_wchars2atoms(void *x, t_pdstring_atoms *dst, t_pdstring_wchars *src)
+{
+  int i;
+
+  //-- re-allocate?
+  if ( dst->a_alloc < src->w_len )
+    pdstring_atoms_realloc(dst, src->w_len + PDSTRING_ATOMS_GET);
+
+  //-- convert
+  for (i=0; i < src->w_len; i++) {
+    SETFLOAT((dst->a_buf+i), src->w_buf[i]);
+  }
+  dst->a_len = src->w_len;
+}
+
+
+#endif /* PDSTRING_UTILS_C */

Copied: trunk/externals/moocow/pdstring/src/pdstringUtils.h (from rev 10638, trunk/externals/moocow/pdstring+wchar/src/pdstringUtils.h)
===================================================================
--- trunk/externals/moocow/pdstring/src/pdstringUtils.h	                        (rev 0)
+++ trunk/externals/moocow/pdstring/src/pdstringUtils.h	2009-01-25 22:23:14 UTC (rev 10639)
@@ -0,0 +1,452 @@
+/* -*- Mode: C -*- */
+/*=============================================================================*\
+ * File: pdstringUtils.h
+ * Author: Bryan Jurish <moocow at ling.uni-potsdam.de>
+ * Description: pdstring: common utilities (static include)
+ *
+ * Copyright (c) 2009 Bryan Jurish.
+ *
+ * For information on usage and redistribution, and for a DISCLAIMER OF ALL
+ * WARRANTIES, see the file "COPYING", in this distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *=============================================================================*/
+
+#ifndef PDSTRING_UTILS_H
+#define PDSTRING_UTILS_H
+
+#include <string.h>
+#include <m_pd.h>
+#include <stdlib.h>
+#include "mooPdUtils.h"
+
+/*=====================================================================
+ * Debugging
+ *=====================================================================*/
+#define PDSTRING_UTILS_DEBUG 1
+//#undef  PDSTRING_UTILS_DEBUG
+
+#ifdef PDSTRING_UTILS_DEBUG
+# define PDSDEBUG(x) x
+#else
+# define PDSDEBUG(x)
+#endif
+
+/*=====================================================================
+ * Constants
+ *=====================================================================*/
+
+/* PDSTRING_EOS_NONE
+ *  + "safe" float value to use as x_eos if no truncation is desired
+ */
+#define PDSTRING_EOS_NONE 1e38f
+
+/* PDSTRING_DEFAULT_BUFLEN
+ *  + common default buffer length
+ */
+#define PDSTRING_DEFAULT_BUFLEN 256
+
+/* PDSTRING_DEFAULT_GET
+ *  + common default buffer grow length
+ */
+#define PDSTRING_DEFAULT_GET 256
+
+/* PDSTRING_BYSTES_GET
+ *  + number of extra bytes to get when buffer must grow
+ */
+#define PDSTRING_BYTES_GET PDSTRING_DEFAULT_GET
+#define PDSTRING_WCHARS_GET PDSTRING_DEFAULT_GET
+#define PDSTRING_ATOMS_GET PDSTRING_DEFAULT_GET
+
+/*=====================================================================
+ * Structures & Types
+ *=====================================================================*/
+
+/* t_pdstring_bytes
+ *  + a byte-string buffer
+ */
+typedef struct _pdstring_bytes {
+  unsigned char *b_buf;    //-- byte-string buffer
+  int            b_len;    //-- current length of b_buf
+  size_t         b_alloc;  //-- allocated size of b_buf
+} t_pdstring_bytes;
+
+/* t_pdstring_wchars
+ *  + a wide character buffer
+ */
+typedef struct _pdstring_wchars {
+  wchar_t       *w_buf;    //-- wide character buffer
+  int            w_len;    //-- current length of w_buf
+  size_t         w_alloc;  //-- allocated size of w_buf
+} t_pdstring_wchars;
+
+/* t_pdstring_atoms
+ *  + an atom-list buffer
+ */
+typedef struct _pdstring_atoms {
+  t_atom        *a_buf;    //-- t_atom buffer (aka argv)
+  int            a_len;    //-- current length of a_buf (aka argc)
+  size_t         a_alloc;  //-- allocated size of a_buf
+} t_pdstring_atoms;
+
+/*=====================================================================
+ * Initialization
+ *=====================================================================*/
+
+/*---------------------------------------------------------------------
+ * bytes
+ */
+static void pdstring_bytes_clear(t_pdstring_bytes *b)
+{
+  if (b->b_alloc) freebytes(b->b_buf, (b->b_alloc)*sizeof(unsigned char));
+  b->b_buf   = NULL;
+  b->b_len   = 0;
+  b->b_alloc = 0;
+}
+static void pdstring_bytes_realloc(t_pdstring_bytes *b, size_t n)
+{
+  pdstring_bytes_clear(b);
+  b->b_buf   = n ? (unsigned char*)getbytes(n*sizeof(unsigned char)) : NULL;
+  b->b_alloc = n;
+}
+static void pdstring_bytes_init(t_pdstring_bytes *b, size_t n)
+{
+  pdstring_bytes_clear(b);
+  pdstring_bytes_realloc(b,n);
+}
+
+/*---------------------------------------------------------------------
+ * wchars
+ */
+static void pdstring_wchars_clear(t_pdstring_wchars *w)
+{
+  if (w->w_alloc) freebytes(w->w_buf, (w->w_alloc)*sizeof(wchar_t));
+  w->w_buf   = NULL;
+  w->w_len   = 0;
+  w->w_alloc = 0;
+}
+static void pdstring_wchars_realloc(t_pdstring_wchars *w, size_t n)
+{
+  pdstring_wchars_clear(w);
+  w->w_buf   = n ? (wchar_t*)getbytes(n*sizeof(wchar_t)) : NULL;
+  w->w_alloc = n;
+}
+static void pdstring_wchars_init(t_pdstring_wchars *w, size_t n)
+{
+  pdstring_wchars_clear(w);
+  pdstring_wchars_realloc(w,n);
+}
+
+/*---------------------------------------------------------------------
+ * atoms
+ */
+static void pdstring_atoms_clear(t_pdstring_atoms *a)
+{
+  if (a->a_alloc) freebytes(a->a_buf, (a->a_alloc)*sizeof(t_atom));
+  a->a_buf   = NULL;
+  a->a_len   = 0;
+  a->a_alloc = 0;
+}
+static void pdstring_atoms_realloc(t_pdstring_atoms *a, size_t n)
+{
+  pdstring_atoms_clear(a);
+  a->a_buf   = n ? (t_atom*)getbytes(n*sizeof(t_atom)) : NULL;
+  a->a_alloc = n;
+}
+static void pdstring_atoms_init(t_pdstring_atoms *a, size_t n)
+{
+  pdstring_atoms_clear(a);
+  pdstring_atoms_realloc(a,n);
+}
+
+
+/*=====================================================================
+ * Utilities
+ *=====================================================================*/
+
+/*--------------------------------------------------------------------
+ * pdstring_any2bytes()
+ *  + x is used for error reporting
+ *  + uses x_binbuf for conversion
+ *  + selector sel is added to binbuf too, if it is none of  {NULL, &s_float, &s_list, &s_}
+ *  + x_binbuf may be NULL, in which case a temporary t_binbuf is created and used
+ *    - in this case, output bytes are copied into *dst, reallocating if required
+ *  + if x_binbuf is given and non-NULL, dst may be NULL.
+ *    - if dst is non-NULL, its values will be clobbered by those returned by
+ *      binbuf_gettext()
+ */
+static void pdstring_any2bytes(void *x, t_pdstring_bytes *dst, t_symbol *sel, t_pdstring_atoms *src, t_binbuf *x_binbuf)
+{
+  int bb_is_tmp=0;
+
+  //-- create temporary binbuf?
+  if (!x_binbuf) {
+    x_binbuf = binbuf_new();
+    bb_is_tmp = 1;
+  }
+
+  //-- prepare binbuf
+  binbuf_clear(x_binbuf);
+
+  //-- binbuf_add(): selector
+  if (sel && sel != &s_float && sel != &s_list && sel != &s_) {
+    t_atom a;
+    SETSYMBOL((&a), sel);
+    binbuf_add(x_binbuf, 1, &a);
+  }
+
+  //-- binbuf_add(): src atoms
+  binbuf_add(x_binbuf, src->a_len, src->a_buf);
+
+  //-- output: get text string
+  if (bb_is_tmp) {
+    //-- temporary binbuf: copy text
+    char *text;
+    int   len;
+    binbuf_gettext(x_binbuf, &text, &len);
+
+    //-- reallocate?
+    if ( dst->b_alloc < len )
+      pdstring_bytes_realloc(dst, len + PDSTRING_BYTES_GET);
+
+    //-- copy
+    memcpy(dst->b_buf, text, len*sizeof(char));
+    dst->b_len = len;
+
+    //-- cleanup
+    binbuf_free(x_binbuf);
+    if (text) freebytes(text,len);
+  }
+  else if (dst) {
+    //-- permanent binbuf: clobber dst
+    pdstring_bytes_clear(dst);
+    binbuf_gettext(x_binbuf, ((char**)((void*)(&dst->b_buf))), &dst->b_len);
+    dst->b_alloc = dst->b_len;
+  }
+}
+
+
+/*--------------------------------------------------------------------
+ * pdstring_bytes2any()
+ *  + uses x_binbuf for conversion
+ *  + x_binbuf may be NULL, in which case a temporary t_binbuf is created and used
+ *    - in this case, output atoms are copied into *dst, reallocating if required
+ *  + if x_binbuf is given and non-NULL, dst may be NULL.
+ *    - if dst is non-NULL, its values will be clobbered by those returned by
+ *      binbuf_getnatom() and binbuf_getvec()
+ */
+static void pdstring_bytes2any(void *x, t_pdstring_atoms *dst, t_pdstring_bytes *src, t_binbuf *x_binbuf)
+{
+  int bb_is_tmp=0;
+
+  //-- create temporary binbuf?
+  if (!x_binbuf) {
+    x_binbuf = binbuf_new();
+    bb_is_tmp = 1;
+  }
+
+  //-- populate binbuf
+  binbuf_clear(x_binbuf);
+  binbuf_text(x_binbuf, (char*)src->b_buf, src->b_len);
+  //PDSDEBUG(post("bytes2any[dst=%p,src=%p,bb=%p]: binbuf_print: ", dst,src,x_binbuf));
+  //PDSDEBUG(binbuf_print(x_binbuf));
+
+  //-- populate atom list
+  if (bb_is_tmp) {
+    //-- temporary binbuf: copy atoms
+    t_atom *argv = binbuf_getvec(x_binbuf);
+    int     argc = binbuf_getnatom(x_binbuf);
+
+    //-- reallocate?
+    if ( dst->a_alloc < argc )
+      pdstring_atoms_realloc(dst, argc + PDSTRING_ATOMS_GET);
+
+    //-- copy
+    memcpy(dst->a_buf, argv, argc*sizeof(t_atom));
+    dst->a_len = argc;
+
+    //-- cleanup
+    binbuf_free(x_binbuf);
+  }
+  else if (dst) {
+    //-- permanent binbuf: clobber dst
+    dst->a_buf = binbuf_getvec(x_binbuf);
+    dst->a_len = binbuf_getnatom(x_binbuf);
+    dst->a_alloc = 0;  //-- don't try to free this
+  }
+}
+
+
+/*--------------------------------------------------------------------
+ * pdstring_atoms2bytes()
+ *  + always appends a final NUL byte to *dst_buf, even if src_argv doesn't contain one
+ *  + returns number of bytes actually written to *dst_buf, __including__ implicit trailing NUL
+ */
+static int pdstring_atoms2bytes(void *x, t_pdstring_bytes *dst, t_pdstring_atoms *src, t_float x_eos)
+{
+  t_atom *argv = src->a_buf;
+  int     argc = src->a_len;
+  unsigned char *s;
+  int     new_len=0;
+
+  /*-- re-allocate? --*/
+  if (dst->b_alloc <= (argc+1))
+    pdstring_bytes_realloc(dst, argc + 1 + PDSTRING_BYTES_GET);
+
+  /*-- get byte string --*/
+  for (s=dst->b_buf, new_len=0; argc > 0; argc--, argv++, s++, new_len++)
+    {
+      *s = atom_getfloat(argv);
+      if ((x_eos<0 && !*s) || (*s==x_eos)) { break; } /*-- hack: truncate at first EOS char --*/
+    }
+  *s = '\0'; /*-- always append terminating NUL */
+  dst->b_len = new_len;
+
+  return new_len+1;
+}
+
+/*--------------------------------------------------------------------
+ * pdstring_atoms2wchars()
+ *  + always appends a final NUL wchar_t to dst->w_buf, even if src->a_buf doesn't contain one
+ *  + returns number of bytes actually written to dst->w_buf, __including__ implicit trailing NUL
+ *  + but dst->w_len does NOT include implicit trailing NUL
+ */
+static int pdstring_atoms2wchars(void *x, t_pdstring_wchars *dst, t_pdstring_atoms *src, t_float x_eos)
+{
+  t_atom *argv = src->a_buf;
+  int     argc = src->a_len;
+  int     new_len=0;
+  wchar_t *s;
+
+  /*-- re-allocate? --*/
+  if (dst->w_alloc <= (argc+1))
+    pdstring_wchars_realloc(dst, argc + 1 + PDSTRING_WCHARS_GET);
+
+  /*-- get wchar_t string --*/
+  for (s=dst->w_buf, new_len=0; argc > 0; argc--, argv++, s++, new_len++)
+    {
+      *s = atom_getfloat(argv);
+      if ((x_eos<0 && !*s) || (*s==x_eos)) { break; } /*-- hack: truncate at first EOS char --*/
+    }
+  *s = L'\0'; /*-- always append terminating NUL */
+  dst->w_len = new_len;
+
+  return new_len+1;
+}
+
+
+/*--------------------------------------------------------------------
+ * pdstring_bytes2wchars()
+ */
+static int pdstring_bytes2wchars(void *x, t_pdstring_wchars *dst, t_pdstring_bytes *src)
+{
+  size_t bi, wi;
+
+  //-- re-allocate?
+  if ( dst->w_alloc < src->b_len )
+    pdstring_wchars_realloc(dst, src->b_len + PDSTRING_WCHARS_GET);
+
+  //-- convert
+  //PDSDEBUG(post("\nbytes2wchars[dst=%p,src=%p]: init", dst,src);)
+  mbtowc(NULL,NULL,0); //-- re-initialize conversion state for mbtowc()
+  for (bi=0,wi=0; bi<src->b_len; wi++) {
+    int nbytes = mbtowc(dst->w_buf+wi, (char*)(src->b_buf+bi), src->b_len-bi);
+    if (nbytes <= 0) {
+      if (nbytes < 0) {
+	pd_error(x,"pdstring_bytes2wchars(): malformed byte string \"%s\" at char '%c' - copying literal byte", src->b_buf, src->b_buf[bi]);
+      }
+      dst->w_buf[wi] = src->b_buf[bi];
+      nbytes = 1;
+    }
+    bi += nbytes;
+    //PDSDEBUG(post("bytes2wchars[dst=%p,src=%p]: loop[bi=%d,wi=%d,src=%s]: nbytes=%d,wc=%u", dst,src, bi,wi,src, nbytes,dst->w_buf[wi]));
+  }
+  dst->w_len = wi;
+  return wi;
+}
+
+/*--------------------------------------------------------------------
+ * pdstring_wchars2bytes()
+ */
+static int pdstring_wchars2bytes(void *x, t_pdstring_bytes *dst, t_pdstring_wchars *src)
+{
+  size_t bi, wi;
+
+  //-- re-allocate?
+  if ( dst->b_alloc < src->w_len * MB_CUR_MAX )
+    pdstring_bytes_realloc(dst, src->w_len * MB_CUR_MAX + PDSTRING_WCHARS_GET);
+
+  //-- convert
+  for (bi=0,wi=0; wi < src->w_len; wi++) {
+    int nbytes = wctomb((char*)dst->b_buf+bi, src->w_buf[wi]);
+    if (nbytes <= 0) {
+      if (nbytes < 0) {
+	pd_error(x,"pdstring_wchars2bytes(): malformed wide character (%u) - bashing to byte", src->w_buf[wi]);
+      }
+      dst->b_buf[bi] = src->w_buf[wi];
+      nbytes = 1;
+    }
+    bi += nbytes;
+  }
+  dst->b_len = bi;
+  return bi;
+}
+
+
+/*--------------------------------------------------------------------
+ * pdstring_bytes2atoms()
+ *  + implicitly appends x_eos if >= 0 and != PDSTRING_EOS_NONE
+ */
+static void pdstring_bytes2atoms(void *x, t_pdstring_atoms *dst, t_pdstring_bytes *src, t_float x_eos)
+{
+  int i;
+
+  //-- re-allocate?
+  if ( dst->a_alloc <= src->b_len )
+    pdstring_atoms_realloc(dst, src->b_len + 1 + PDSTRING_ATOMS_GET);
+
+  //-- convert
+  for (i=0; i < src->b_len; i++) {
+    SETFLOAT((dst->a_buf+i), src->b_buf[i]);
+  }
+  dst->a_len = src->b_len;
+
+  //-- append eos atom?
+  if (x_eos >= 0 && x_eos != PDSTRING_EOS_NONE) {
+    SETFLOAT(dst->a_buf+dst->a_len, x_eos);
+    dst->a_len++;
+  }
+}
+
+/*--------------------------------------------------------------------
+ * pdstring_wchars2atoms()
+ */
+static void pdstring_wchars2atoms(void *x, t_pdstring_atoms *dst, t_pdstring_wchars *src)
+{
+  int i;
+
+  //-- re-allocate?
+  if ( dst->a_alloc < src->w_len )
+    pdstring_atoms_realloc(dst, src->w_len + PDSTRING_ATOMS_GET);
+
+  //-- convert
+  for (i=0; i < src->w_len; i++) {
+    SETFLOAT((dst->a_buf+i), src->w_buf[i]);
+  }
+  dst->a_len = src->w_len;
+}
+
+
+#endif /* PDSTRING_UTILS_H */

Deleted: trunk/externals/moocow/pdstring/src/string2any-help.pd
===================================================================
--- trunk/externals/moocow/pdstring/src/string2any-help.pd	2009-01-25 22:16:17 UTC (rev 10638)
+++ trunk/externals/moocow/pdstring/src/string2any-help.pd	2009-01-25 22:23:14 UTC (rev 10639)
@@ -1,46 +0,0 @@
-#N canvas 121 48 612 604 10;
-#X text 59 7 string2any : convert lists of floats to pd messages;
-#X text 13 30 SYNTAX: string2any [INITIAL_BUFSIZE [EOS_CHAR]];
-#X text 13 52 INLETS:;
-#X text 27 68 1 - ASCII-valued float lists;
-#X text 309 54 OUTLETS:;
-#X text 325 68 1 - pd messages;
-#X text 325 82 2 - bang on done;
-#X obj 24 350 string2any 128 0;
-#X obj 24 529 print string2any-help;
-#X obj 131 454 print string2any-help-done;
-#X msg 24 113 97 32 98 32 99;
-#X msg 39 135 97 0 98 0 99;
-#X msg 99 206 0;
-#X msg 67 206 -1;
-#X msg 131 206 32;
-#X text 166 202 The second inlet sets the message-separating EOS ("end-of-string")
-character. If this character is encountered in an input list \, the
-list is "split" at that point \, and two separate messages are output
-at the leftmost outlet. You can specify a negative value here to avoid
-implicit input splitting entirely. For backwards compatibility \, the
-default EOS character is -1 \, which results in truncation of input
-messages whenever a 0 (zero) is encountered.;
-#X text 163 350 First argument: initial buffer size (length of object-local
-text buffer). This should get re-allocated when necessary. Specify
-0 (zero) to use the default value.;
-#X text 165 405 Second argument: initial EOS character. See above.
-;
-#X text 159 477 Right outlet gives a bang after the entire input list
-has been processed.;
-#X text 189 531 Parsed pd messages are sent to the left outlet.;
-#X text 306 580 Bryan Jurish <moocow at ling.uni-potsdam.de>;
-#X text 27 83 2 - EOS character (float);
-#X text 161 121 lists of floats are converted to pd messages.;
-#X msg 54 161 StringThing 97;
-#X text 168 161 ... selector is ignored ...;
-#X text 21 571 SEE ALSO:;
-#X obj 102 570 pdstring;
-#X connect 7 0 8 0;
-#X connect 7 1 9 0;
-#X connect 10 0 7 0;
-#X connect 11 0 7 0;
-#X connect 12 0 7 1;
-#X connect 13 0 7 1;
-#X connect 14 0 7 1;
-#X connect 23 0 7 0;

Deleted: trunk/externals/moocow/pdstring/src/string2any.c
===================================================================
--- trunk/externals/moocow/pdstring/src/string2any.c	2009-01-25 22:16:17 UTC (rev 10638)
+++ trunk/externals/moocow/pdstring/src/string2any.c	2009-01-25 22:23:14 UTC (rev 10639)
@@ -1,249 +0,0 @@
-/* -*- Mode: C -*- */
-/*=============================================================================*\
- * File: string2any.c
- * Author: Bryan Jurish <moocow at ling.uni-potsdam.de>
- * Description: convert strings to pd messages
- *
- * Copyright (c) 2004-2008 Bryan Jurish.
- *
- * For information on usage and redistribution, and for a DISCLAIMER OF ALL
- * WARRANTIES, see the file "COPYING", in this distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
- *=============================================================================*/
-
-#include <string.h>
-#include <m_pd.h>
-#include "mooPdUtils.h"
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-/* black magic */
-#ifdef NT
-#pragma warning( disable : 4244 )
-#pragma warning( disable : 4305 )
-#endif
-
-/*--------------------------------------------------------------------
- * DEBUG
- *--------------------------------------------------------------------*/
-/*#define STRING2ANY_DEBUG 1*/
-/*#undef STRING2ANY_DEBUG*/
-
-#ifdef STRING2ANY_DEBUG
-# define S2ADEBUG(x) x
-#else
-# define S2ADEBUG(x)
-#endif
-
-#define STRING2ANY_DEFAULT_BUFLEN 256
-
-
-/*=====================================================================
- * Constants
- *=====================================================================*/
-static char *string2any_banner = "string2any: pdstring version " PACKAGE_VERSION " by Bryan Jurish";
-
-/*=====================================================================
- * Structures and Types: any2string
- *=====================================================================*/
-
-static t_class *string2any_class;
-
-typedef struct _string2any
-{
-  t_object       x_obj;
-  size_t         x_size;
-  t_float        x_eos;   //-- eos character
-  char          *x_text;
-  t_binbuf      *x_binbuf;
-  t_inlet       *x_eos_in;
-  t_outlet      *x_outlet;
-  t_outlet      *x_outlet_done;
-} t_string2any;
-
-
-/*=====================================================================
- * Utilities
- *=====================================================================*/
-
-/*--------------------------------------------------------------------
- * string2any_atoms()
- */
-static void string2any_atoms(t_string2any *x, int argc, t_atom *argv)
-{
-  char *s;
-  int x_argc, a_argc=0;
-  t_atom *x_argv;
-
-  /*-- allocate --*/
-  if ( ((int)x->x_size) <= (argc+1) ) {
-    freebytes(x->x_text, x->x_size*sizeof(char));
-    x->x_size = argc+1;
-    x->x_text = (char *)getbytes(x->x_size*sizeof(char));
-  }
-
-  /*-- get text --*/
-  for (s=x->x_text; argc > 0; argc--, a_argc++, argv++, s++) {
-    *s = atom_getfloat(argv);
-    S2ADEBUG(post("string2any[%p]: a_argc=%d,*s=%d", x, a_argc, *s));

@@ Diff output truncated at 100000 characters. @@

This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Pd-cvs mailing list