Commit abc3fd29 authored by Jonathan Wilkes's avatar Jonathan Wilkes
Browse files

repo cleanup: remove tcl/tk build infrastructure and scripts, old patches,...

repo cleanup: remove tcl/tk build infrastructure and scripts, old patches, automated build scripts for pd-extended, old gui plugins, and unnecessary install-time dependencies
parent f6844c7b
......@@ -379,33 +379,6 @@ pd-wavelet_install:
$(DESTDIR)$(readmesdir)/$(PDWAVELET_NAME).txt
#==============================================================================#
#
# DEVELOPER'S TARGETS
#
#==============================================================================#
# make the symlinks necessary to simulate the installed environment
devsymlinks:
# make symlinks for help patches
test -e $(abstractions_src)/../2.control.examples || \
ln -s $(pd_src)/doc/2.control.examples \
$(abstractions_src)/../2.control.examples
test -e $(abstractions_src)/../3.audio.examples || \
ln -s $(pd_src)/doc/3.audio.examples \
$(abstractions_src)/../3.audio.examples
# pd <= 0.38-4 has 4.fft.examples
test -e $(abstractions_src)/../4.fft.examples || \
ln -s $(pd_src)/doc/4.fft.examples $(abstractions_src)/../4.fft.examples
# pd > 0.38-4 has 4.data.structures
test -e $(abstractions_src)/../4.data.structures || \
ln -s $(pd_src)/doc/4.data.structures \
$(abstractions_src)/../4.data.structures
test -e $(abstractions_src)/../7.stuff || \
ln -s $(pd_src)/doc/7.stuff $(abstractions_src)/../7.stuff
test -e $(abstractions_src)/../sound || \
ln -s $(pd_src)/doc/sound $(abstractions_src)/../sound
#==============================================================================#
#
# CLEAN TARGETS
......
......@@ -235,32 +235,6 @@ tutorials_clean:
-rmdir -- $(DESTDIR)$(manualsdir)/4.Physical
#==============================================================================#
#
# DEVELOPER'S TARGETS
#
#==============================================================================#
# make the symlinks necessary to simulate the installed environment
devsymlinks:
test -e $(doc_src)/2.control.examples || \
ln -sf $(pd_src)/doc/2.control.examples $(doc_src)/2.control.examples
test -e $(doc_src)/3.audio.examples || \
ln -sf $(pd_src)/doc/3.audio.examples $(doc_src)/3.audio.examples
# pd <= 0.38-4 has 4.fft.examples
test -e $(doc_src)/4.fft.examples || \
ln -sf $(pd_src)/doc/4.fft.examples $(doc_src)/4.fft.examples
# pd > 0.38-4 has 4.data.structures
test -e $(doc_src)/4.data.structures || \
ln -sf $(pd_src)/doc/4.data.structures $(doc_src)/4.data.structures
test -e $(doc_src)/7.stuff || \
ln -sf $(pd_src)/doc/7.stuff $(doc_src)/7.stuff
test -e $(doc_src)/sound || \
ln -sf $(pd_src)/doc/sound $(doc_src)/sound
# put the pddp support objects in the path
test -e $(doc_src)/pddp/pddp || \
ln -sf $(externals_src)/pddp $(doc_src)/pddp/pddp
#==============================================================================#
#
# CLEAN TARGETS
......
......@@ -2379,9 +2379,6 @@ earplug_clean:
#
#==============================================================================#
# make the symlinks necessary to simulate the installed environment
devsymlinks:
TAGS: etags
etags:
......
......@@ -220,10 +220,6 @@ noncvs_install:
-install -p $(packages_src)/noncvs/$(OS_NAME)/bin/*.* $(DESTDIR)$(bindir)
-install -p $(packages_src)/noncvs/$(OS_NAME)/doc/5.reference/*.* $(DESTDIR)$(helpdir)
-install -p $(packages_src)/noncvs/$(OS_NAME)/extra/*.* $(DESTDIR)$(objectsdir)
-test -d $(packages_src)/noncvs/$(OS_NAME)/gripd && \
install -d $(DESTDIR)$(prefix)/gripd
-install -p $(packages_src)/noncvs/$(OS_NAME)/gripd/*.* \
$(DESTDIR)$(prefix)/gripd
#==============================================================================#
......@@ -380,94 +376,6 @@ doc_format:
-find $(DESTDIR) -name .svn -print0 | xargs -0 rm -rf
#==============================================================================#
#
# DEVELOPER TARGETS
#
#==============================================================================#
devsymlinks: devsymlinks_$(OS_NAME)
devsymlinks_windows:
devsymlinks_linux:
TCLTK_VERSION=8.4
devsymlinks_darwin: devsymlinks_clean
# this makes /usr/local symlinks to the Tcl/Tk frameworks so that ./configure
# can find them.
# headers
test -e /Library/Frameworks/Tcl.framework/Versions/$(TCLTK_VERSION)/Headers/tcl.h && \
sudo ln -s \
/Library/Frameworks/Tcl.framework/Versions/$(TCLTK_VERSION)/Headers/tcl.h \
/usr/local/include/tcl.h
test -e /Library/Frameworks/Tcl.framework/Versions/$(TCLTK_VERSION)/Headers/tclDecls.h && \
sudo ln -s \
/Library/Frameworks/Tcl.framework/Versions/$(TCLTK_VERSION)/Headers/tclDecls.h \
/usr/local/include/tclDecls.h
test -e /Library/Frameworks/Tcl.framework/Versions/$(TCLTK_VERSION)/Headers/tclPlatDecls.h && \
sudo ln -s \
/Library/Frameworks/Tcl.framework/Versions/$(TCLTK_VERSION)/Headers/tclPlatDecls.h \
/usr/local/include/tclPlatDecls.h
# libs
test -e /Library/Frameworks/Tcl.framework/tclConfig.sh && \
sudo ln -s /Library/Frameworks/Tcl.framework/tclConfig.sh /usr/local/lib
test -e /Library/Frameworks/Tcl.framework/Versions/$(TCLTK_VERSION)/Tcl && \
sudo ln -s \
/Library/Frameworks/Tcl.framework/Versions/$(TCLTK_VERSION)/Tcl \
/usr/local/lib/libtcl$(TCLTK_VERSION).dylib
test -e /Library/Frameworks/Tcl.framework/Versions/$(TCLTK_VERSION)/libtclstub$(TCLTK_VERSION).a && \
sudo ln -s \
/Library/Frameworks/Tcl.framework/Versions/$(TCLTK_VERSION)/libtclstub$(TCLTK_VERSION).a \
/usr/local/lib/libtclstub$(TCLTK_VERSION).a
test -e /usr/local/lib/libtcl$(TCLTK_VERSION).dylib && \
sudo ln -s /usr/local/lib/libtcl$(TCLTK_VERSION).dylib /usr/local/lib/libtcl.dylib
# headers
test -e /Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/Headers/tk.h && \
sudo ln -s \
/Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/Headers/tk.h \
/usr/local/include/tk.h
test -e /Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/Headers/tkDecls.h && \
sudo ln -s \
/Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/Headers/tkDecls.h \
/usr/local/include/tkDecls.h
test -e /Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/Headers/tkIntXlibDecls.h && \
sudo ln -s \
/Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/Headers/tkIntXlibDecls.h \
/usr/local/include/tkIntXlibDecls.h
test -e /Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/Headers/tkMacOSX.h && \
sudo ln -s \
/Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/Headers/tkMacOSX.h \
/usr/local/include/tkMacOSX.h
test -e /Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/Headers/tkPlatDecls.h && \
sudo ln -s \
/Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/Headers/tkPlatDecls.h \
/usr/local/include/tkPlatDecls.h
# libs
test -e /Library/Frameworks/Tk.framework/tkConfig.sh && \
sudo ln -s /Library/Frameworks/Tk.framework/tkConfig.sh /usr/local/lib
test -e /Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/Tk && \
sudo ln -s /Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/Tk \
/usr/local/lib/libtk$(TCLTK_VERSION).dylib
test -e /Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/libtkstub$(TCLTK_VERSION).a && \
sudo ln -s \
/Library/Frameworks/Tk.framework/Versions/$(TCLTK_VERSION)/libtkstub$(TCLTK_VERSION).a \
/usr/local/lib/libtkstub$(TCLTK_VERSION).a
test -e /usr/local/lib/libtk$(TCLTK_VERSION).dylib && \
sudo ln -s /usr/local/lib/libtk$(TCLTK_VERSION).dylib /usr/local/lib/libtk.dylib
devsymlinks_clean:
-sudo rm -f /usr/local/include/tcl*.h /usr/local/include/tk*.h
-sudo rm -f /usr/local/lib/tclConfig.sh /usr/local/lib/tkConfig.sh
-sudo rm -f /usr/local/lib/libtcl*.dylib /usr/local/lib/libtk*.dylib
-sudo rm -f /usr/local/lib/libtclstub*.a /usr/local/lib/libtkstub*.a
# AG: The set_version target is broken since it modifies m_pd.h in-place
# during the build, which is a bad thing to do to files which are supposed to
# be kept in a source code repository. Instead, we create s_stuff.h from
......@@ -494,93 +402,6 @@ unset_version:
mv m_pd.h.tmp m_pd.h
patch_pd:
@echo pd_src $(pd_src)
# apply all platform-neutral patches
for patch in $(shell ls -1 $(CWD)/patches/*.patch); do \
echo "Applying $$patch"; \
cd $(pd_src)/src/ && patch -p0 < $$patch; \
done
# apply all platform-specific patches (is broken on MINGW/Windows)
ifneq ($(OS_NAME),windows)
for patch in $(shell ls -1 $(CWD)/patches/$(OS_NAME)/*.patch); do \
echo "Applying $$patch"; \
cd $(pd_src)/src/ && patch -p0 < $$patch; \
done
endif
-rm -f -- $(pd_src)/src/configure $(pd_src)/src/makefile
@echo " "
@echo "patching completed."
unpatch_pd:
# apply all platform-specific patches (is broken on MINGW/Windows)
ifneq ($(OS_NAME),windows)
for patch in $(shell ls -1r $(CWD)/patches/$(OS_NAME)/*.patch); do \
echo "Applying $$patch"; \
cd $(pd_src)/src/ && patch -p0 -R < $$patch; \
done
endif
# apply all platform-neutral patches
for patch in $(shell ls -1r $(CWD)/patches/*.patch); do \
echo "Applying $$patch"; \
cd $(pd_src)/src/ && patch -p0 -R < $$patch; \
done
-rm -f -- $(pd_src)/src/configure $(pd_src)/src/makefile \
$(pd_src)/src/makefile.dependencies
@echo " "
@echo "unpatching completed."
patch: patch_pd set_version
unpatch: unset_version unpatch_pd
patch_pd_devel:
@echo pd_src $(pd_src)
# apply all platform-neutral patches
for patch in $(shell ls -1 $(CWD)/patches/*.patch); do \
echo "Applying $$patch"; \
cd $(pd_src)/src/ && patch -p0 < $$patch; \
done
# apply all platform-specific patches
for patch in $(shell ls -1 $(CWD)/patches/$(OS_NAME)/*.patch); do \
echo "Applying $$patch"; \
cd $(pd_src)/src/ && patch -p0 < $$patch; \
done
-rm -f -- $(pd_src)/src/configure $(pd_src)/src/makefile
# change Pd's version number to reflect the extended build
# this needs the complete_version_defines patch to work
cd $(pd_src)/src/ && \
sed 's|^\(#define PD_TEST_VERSION "\).*"|\1$(PD_BUILD_VERSION)"|' m_pd.h > \
m_pd.h.tmp && mv m_pd.h.tmp m_pd.h
@echo " "
@echo "patching completed."
unpatch_pd_devel:
# change the version number back to the original
# this needs the complete_version_defines patch to work
cd $(pd_src)/src && \
sed 's|^\(#define PD_TEST_VERSION ".*\)$(PD_BUILD_VERSION)"|\1"|' \
m_pd.h > m_pd.h.tmp && \
mv m_pd.h.tmp m_pd.h
# apply all platform-specific patches
for patch in $(shell ls -1r $(CWD)/patches/$(OS_NAME)/*.patch); do \
echo "Applying $$patch"; \
cd $(pd_src)/src/ && patch -p0 -R < $$patch; \
done
# apply all platform-neutral patches
for patch in $(shell ls -1r $(CWD)/patches/*.patch); do \
echo "Applying $$patch"; \
cd $(pd_src)/src/ && patch -p0 -R < $$patch; \
done
-rm -f -- $(pd_src)/src/configure $(pd_src)/src/makefile
@echo " "
@echo "unpatching completed."
#==============================================================================#
#
# CLEAN TARGETS
......
......@@ -142,7 +142,6 @@ debstage: $(bindir)
$(DESTDIR)/usr/share/emacs/site-lisp/
# Pd-related scripts
#install -p $(scripts_src)/pd-diff $(DESTDIR)$(bindir)
#install -p $(scripts_src)/config-switcher.sh $(DESTDIR)$(bindir)
deb: DEB_BUILD_ARCH := $(shell dpkg-architecture -qDEB_BUILD_ARCH)
deb: DEB_PD_VERSION := $(shell echo $(PD_VERSION) | sed 's|\(.*\)-l2ork-\(.*\)|\1-\2|')
......
......@@ -6,10 +6,10 @@ Maintainer: Ivica Ico Bukvic <ico@vt.edu>
Homepage: http://l2ork.music.vt.edu
Package: pd-l2ork
Architecture: i386
Depends: libc6, xterm | x-terminal-emulator, tcl, tk, libasound2, libjack-jackd2-0, libbluetooth3, libgl1-mesa-glx, libgl1-mesa-dri, libglu1-mesa, libglew-dev, libmagick++-dev, libftgl2, libgmerlin0, libgmerlin-avdec1, libavifile-0.7c2, libmpeg3-1 | libmpeg3-2, libquicktime2, libv4l-0, libraw1394-11, libdc1394-22, libfftw3-3, libvorbis0a, libmp3lame0, libspeex1, libgsl0ldbl | libgsl2, python, libsmpeg0, libjpeg62, tkpng, libflite1, libgsm1, libxv1, libstk0-dev, libsndobj-dev, libfluidsynth-dev, tclxapian, fluid-soundfont-gm, python-tk, byacc
Depends: libc6, xterm | x-terminal-emulator, libasound2, libjack-jackd2-0, libbluetooth3, libgl1-mesa-glx, libgl1-mesa-dri, libglu1-mesa, libftgl2, libgmerlin0, libgmerlin-avdec1, libavifile-0.7c2, libmpeg3-1 | libmpeg3-2, libquicktime2, libv4l-0, libraw1394-11, libdc1394-22, libfftw3-3, libvorbis0a, libmp3lame0, libspeex1, libgsl0ldbl | libgsl2, python, libsmpeg0, libjpeg62, libflite1, libgsm1, libxv1, fluid-soundfont-gm, byacc
Provides: pd-l2ork
Installed-Size: 90624
Recommends: xdg-utils, pulseaudio-utils, tap-plugins, ladspa-foo-plugins, invada-studio-plugins-ladspa, blepvco, swh-plugins, mcp-plugins, cmt, blop, slv2-jack, omins, ubuntustudio-audio-plugins, rev-plugins, libslv2-dev, dssi-utils, vco-plugins, wah-plugins, fil-plugins, mda-lv2
Recommends: xdg-utils, pulseaudio-utils, tap-plugins, ladspa-foo-plugins, invada-studio-plugins-ladspa, blepvco, swh-plugins, mcp-plugins, cmt, blop, slv2-jack, omins, ubuntustudio-audio-plugins, rev-plugins, dssi-utils, vco-plugins, wah-plugins, fil-plugins, mda-lv2
Conflicts:
Replaces: pd-l2ork
Description: Interactive multimedia programming environment
......
......@@ -6,10 +6,10 @@ Maintainer: Ivica Ico Bukvic <ico@vt.edu>
Homepage: http://l2ork.music.vt.edu
Package: pd-l2ork
Architecture: i386
Depends: libc6, xterm | x-terminal-emulator, tcl, tk, libasound2, libjack-jackd2-0, libbluetooth3, libgl1-mesa-glx, libgl1-mesa-dri, libglu1-mesa, libglew-dev, libmagick++-dev, libftgl2, libgmerlin0, libgmerlin-avdec1, libavifile-0.7c2, libmpeg3-1 | libmpeg3-2, libquicktime2, libv4l-0, libraw1394-11, libdc1394-22, libfftw3-3, libvorbis0a, libmp3lame0, libspeex1, libgsl0ldbl | libgsl2, python, libsmpeg0, libjpeg62, tkpng, libflite1, libgsm1, libxv1, libstk0-dev, libsndobj-dev, libfluidsynth-dev, tclxapian, fluid-soundfont-gm, python-tk, byacc
Depends: libc6, xterm | x-terminal-emulator, libasound2, libjack-jackd2-0, libbluetooth3, libgl1-mesa-glx, libgl1-mesa-dri, libglu1-mesa, libftgl2, libgmerlin0, libgmerlin-avdec1, libavifile-0.7c2, libmpeg3-1 | libmpeg3-2, libquicktime2, libv4l-0, libraw1394-11, libdc1394-22, libfftw3-3, libvorbis0a, libmp3lame0, libspeex1, libgsl0ldbl | libgsl2, python, libsmpeg0, libjpeg62, libflite1, libgsm1, libxv1, fluid-soundfont-gm, byacc
Provides: pd-l2ork
Installed-Size: 90624
Recommends: xdg-utils, pulseaudio-utils, tap-plugins, ladspa-foo-plugins, invada-studio-plugins-ladspa, blepvco, swh-plugins, mcp-plugins, cmt, blop, slv2-jack, omins, ubuntustudio-audio-plugins, rev-plugins, libslv2-dev, dssi-utils, vco-plugins, wah-plugins, fil-plugins, mda-lv2
Recommends: xdg-utils, pulseaudio-utils, tap-plugins, ladspa-foo-plugins, invada-studio-plugins-ladspa, blepvco, swh-plugins, mcp-plugins, cmt, blop, slv2-jack, omins, ubuntustudio-audio-plugins, rev-plugins, dssi-utils, vco-plugins, wah-plugins, fil-plugins, mda-lv2
Conflicts:
Replaces: pd-l2ork
Description: Interactive multimedia programming environment
......
......@@ -6,10 +6,10 @@ Maintainer: Ivica Ico Bukvic <ico@vt.edu>
Homepage: http://l2ork.music.vt.edu
Package: pd-l2ork
Architecture: i386
Depends: xterm | x-terminal-emulator, tcl, tk, libasound2, libjack-jackd2-0, libbluetooth3, libgl1-mesa-glx, libglu1-mesa, libftgl2, libgmerlin0, libgmerlin-avdec1, libavifile-0.7c2, libmpeg3-1 | libmpeg3-2, libquicktime2, libv4l-0, libraw1394-11, libdc1394-22, libfftw3-3, libvorbis0a, libmp3lame0, libspeex1, libgsl0ldbl, python, libsmpeg0, libjpeg62, tkpng, libflite1, libgsm1, libxv1, libstk0-dev, libsndobj-dev, libfluidsynth-dev, tclxapian, fluid-soundfont-gm, python-tk, byacc
Depends: xterm | x-terminal-emulator, libasound2, libjack-jackd2-0, libbluetooth3, libgl1-mesa-glx, libglu1-mesa, libftgl2, libgmerlin0, libgmerlin-avdec1, libavifile-0.7c2, libmpeg3-1 | libmpeg3-2, libquicktime2, libv4l-0, libraw1394-11, libdc1394-22, libfftw3-3, libvorbis0a, libmp3lame0, libspeex1, libgsl0ldbl, python, libsmpeg0, libjpeg62, tkpng, libflite1, libgsm1, libxv1, fluid-soundfont-gm, byacc
Provides: pd-l2ork
Installed-Size: 90624
Recommends: xdg-utils, pulseaudio-utils, tap-plugins, ladspa-foo-plugins, invada-studio-plugins-ladspa, blepvco, swh-plugins, mcp-plugins, cmt, blop, slv2-jack, omins, ubuntustudio-audio-plugins, rev-plugins, libslv2-dev, dssi-utils, vco-plugins, wah-plugins, fil-plugins, mda-lv2
Recommends: xdg-utils, pulseaudio-utils, tap-plugins, ladspa-foo-plugins, invada-studio-plugins-ladspa, blepvco, swh-plugins, mcp-plugins, cmt, blop, slv2-jack, omins, ubuntustudio-audio-plugins, rev-plugins, dssi-utils, vco-plugins, wah-plugins, fil-plugins, mda-lv2
Conflicts:
Replaces: pd-l2ork
Description: Interactive multimedia programming environment
......
......@@ -6,10 +6,10 @@ Maintainer: Ivica Ico Bukvic <ico@vt.edu>
Homepage: http://l2ork.music.vt.edu
Package: pd-l2ork
Architecture: i386
Depends: xterm | x-terminal-emulator, libc6 (>= 2.1.5), tcl, tk, libasound2, libjack-jackd2-0, libbluetooth3, libgl1-mesa-glx, libgl1-mesa-dri, libglu1-mesa, libglew1.5, libmagick++4, libftgl2, libgmerlin0, libgmerlin-avdec1, libavifile-0.7c2, libmpeg3-1, libquicktime2, libv4l-0, libraw1394-11, libdc1394-22, libfftw3-3, libvorbis0a, libmp3lame0, libspeex1, libgsl0ldbl, python, libsmpeg0, libjpeg62, tkpng, libflite1, libgsm1
Depends: xterm | x-terminal-emulator, libc6 (>= 2.1.5), libasound2, libjack-jackd2-0, libbluetooth3, libgl1-mesa-glx, libgl1-mesa-dri, libglu1-mesa, libglew1.5, libmagick++4, libftgl2, libgmerlin0, libgmerlin-avdec1, libavifile-0.7c2, libmpeg3-1, libquicktime2, libv4l-0, libraw1394-11, libdc1394-22, libfftw3-3, libvorbis0a, libmp3lame0, libspeex1, libgsl0ldbl, python, libsmpeg0, libjpeg62, libflite1, libgsm1
Provides: pd-l2ork
Installed-Size: 90624
Recommends: xdg-utils, pulseaudio-utils, tap-plugins, ladspa-foo-plugins, invada-studio-plugins-ladspa, blepvco, swh-plugins, mcp-plugins, cmt, blop, slv2-jack, omins, ubuntustudio-audio-plugins, rev-plugins, libslv2-dev, dssi-utils, vco-plugins, wah-plugins, fil-plugins, mda-lv2
Recommends: xdg-utils, pulseaudio-utils, tap-plugins, ladspa-foo-plugins, invada-studio-plugins-ladspa, blepvco, swh-plugins, mcp-plugins, cmt, blop, slv2-jack, omins, ubuntustudio-audio-plugins, rev-plugins, dssi-utils, vco-plugins, wah-plugins, fil-plugins, mda-lv2
Conflicts: pd-l2ork, puredata, pd-extended, puredata-utils, puredata-extra, gem, puredata-core, puredata-gui, puredata-doc
Replaces: pd-l2ork
Description: Interactive multimedia programming environment
......
Index: pd/src/g_text.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_text.c,v
retrieving revision 1.15
diff -u -w -r1.15 g_text.c
--- g_text.c 4 Oct 2006 19:35:06 -0000 1.15
+++ g_text.c 12 Feb 2007 03:45:43 -0000
@@ -276,6 +276,11 @@
outlet_symbol(x->mr_outlet, s);
}
+static void messresponder_blob(t_messresponder *x, t_blob *st)
+{ /* MP 20070107 blob type */
+ outlet_blob(x->mr_outlet, st);
+}
+
static void messresponder_list(t_messresponder *x,
t_symbol *s, int argc, t_atom *argv)
{
@@ -307,6 +312,13 @@
binbuf_eval(x->m_text.te_binbuf, &x->m_messresponder.mr_pd, 1, &at);
}
+static void message_blob(t_message *x, t_blob *st)
+{
+ t_atom at;
+ SETBLOB(&at, st);
+ binbuf_eval(x->m_text.te_binbuf, &x->m_messresponder.mr_pd, 1, &at);
+}
+
static void message_list(t_message *x, t_symbol *s, int argc, t_atom *argv)
{
binbuf_eval(x->m_text.te_binbuf, &x->m_messresponder.mr_pd, argc, argv);
@@ -1333,6 +1345,7 @@
class_addbang(message_class, message_bang);
class_addfloat(message_class, message_float);
class_addsymbol(message_class, message_symbol);
+ class_addblob(message_class, message_blob);
class_addlist(message_class, message_list);
class_addanything(message_class, message_list);
Index: pd/src/m_atom.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/m_atom.c,v
retrieving revision 1.4
diff -u -w -r1.4 m_atom.c
--- m_atom.c 11 Aug 2006 20:09:07 -0000 1.4
+++ m_atom.c 12 Feb 2007 03:45:43 -0000
@@ -28,6 +28,14 @@
else return (&s_float);
}
+t_blob *atom_getblob(t_atom *a) /* MP 20070108 */
+{
+ static unsigned char c = 0;/* a default blob to avoid null pointers. This should be somewhere else...? */
+ static t_blob st = {1L, &c};
+ if (a->a_type == A_BLOB) return (a->a_w.w_blob);
+ else return (&st);
+}
+
t_symbol *atom_gensym(t_atom *a) /* this works better for graph labels */
{
char buf[30];
Index: pd/src/m_binbuf.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/m_binbuf.c,v
retrieving revision 1.13
diff -u -w -r1.13 m_binbuf.c
--- m_binbuf.c 4 Oct 2006 19:35:06 -0000 1.13
+++ m_binbuf.c 12 Feb 2007 03:45:44 -0000
@@ -672,6 +672,10 @@
case A_SYMBOL:
typedmess(target, stackwas->a_w.w_symbol, nargs-1, stackwas+1);
break;
+ case A_BLOB: /* MP 20070106 blob type */
+ if (nargs == 1) pd_blob(target, stackwas->a_w.w_blob);
+ else pd_list(target, 0, nargs, stackwas);
+ break;
case A_FLOAT:
if (nargs == 1) pd_float(target, stackwas->a_w.w_float);
else pd_list(target, 0, nargs, stackwas);
Index: pd/src/m_class.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/m_class.c,v
retrieving revision 1.7
diff -u -w -r1.7 m_class.c
--- m_class.c 15 Aug 2006 04:54:15 -0000 1.7
+++ m_class.c 12 Feb 2007 03:45:44 -0000
@@ -20,6 +20,7 @@
static t_symbol *class_loadsym; /* name under which an extern is invoked */
static void pd_defaultfloat(t_pd *x, t_float f);
+static void pd_defaultblob(t_pd *x, t_blob *st); /* MP20061226 blob type */
static void pd_defaultlist(t_pd *x, t_symbol *s, int argc, t_atom *argv);
t_pd pd_objectmaker; /* factory for creating "object" boxes */
t_pd pd_canvasmaker; /* factory for creating canvases */
@@ -38,6 +39,11 @@
else (*(*x)->c_anymethod)(x, &s_bang, 0, 0);
}
+static void pd_defaultblob(t_pd *x, t_blob *st) /* MP 20061226 blob type */
+{ /* for now just reject it, later convert to symbol/float/list */
+ pd_error(x, "%s: no method for blob so far...", (*x)->c_name->s_name);
+}
+
static void pd_defaultpointer(t_pd *x, t_gpointer *gp)
{
if (*(*x)->c_listmethod != pd_defaultlist)
@@ -205,6 +211,7 @@
c->c_pointermethod = pd_defaultpointer;
c->c_floatmethod = pd_defaultfloat;
c->c_symbolmethod = pd_defaultsymbol;
+ c->c_blobmethod = pd_defaultblob; /* MP 20061226 blob type */
c->c_listmethod = pd_defaultlist;
c->c_anymethod = pd_defaultanything;
c->c_wb = (typeflag == CLASS_PATCHABLE ? &text_widgetbehavior : 0);
@@ -288,6 +295,12 @@
if (argtype != A_SYMBOL || va_arg(ap, t_atomtype)) goto phooey;
class_addsymbol(c, fn);
}
+ else if (sel == &s_blob) /* MP 20070106 blob type */
+ {
+ post("class_addmethod: %p", fn);
+ if (argtype != A_BLOB || va_arg(ap, t_atomtype)) goto phooey;
+ class_addblob(c, fn);
+ }
else if (sel == &s_list)
{
if (argtype != A_GIMME) goto phooey;
@@ -346,6 +359,11 @@
c->c_symbolmethod = (t_symbolmethod)fn;
}
+void class_addblob(t_class *c, t_method fn) /* MP 20061226 blob type */
+{
+ c->c_blobmethod = (t_blobmethod)fn;
+}
+
void class_addlist(t_class *c, t_method fn)
{
c->c_listmethod = (t_listmethod)fn;
@@ -564,9 +582,10 @@
t_symbol s_x = {"x", 0, 0};
t_symbol s_y = {"y", 0, 0};
t_symbol s_ = {"", 0, 0};
+t_symbol s_blob = {"blob", 0, 0}; /* MP 20061223 blob type */
static t_symbol *symlist[] = { &s_pointer, &s_float, &s_symbol, &s_bang,
- &s_list, &s_anything, &s_signal, &s__N, &s__X, &s_x, &s_y, &s_};
+ &s_list, &s_anything, &s_signal, &s__N, &s__X, &s_x, &s_y, &s_, &s_blob}; /* MP 20061223 added s_blob */
void mess_init(void)
{
@@ -654,6 +673,13 @@
(*c->c_symbolmethod)(x, &s_);
return;
}
+ if (s == &s_blob) /* MP 20061226 blob type */
+ {
+ /*post("pd_typedmess argc = %d\n", argc);*//* MP 20061226 debug */
+ if (argc == 1) (*c->c_blobmethod)(x, argv->a_w.w_blob);
+ else goto badarg;
+ return;
+ }
for (i = c->c_nmethod, m = c->c_methods; i--; m++)
if (m->me_name == s)
{
@@ -698,6 +724,19 @@
}
dp++;
break;
+ case A_BLOB:/* MP 20070106 blob type */
+ /*post("pd_typedmess A_BLOB");*/
+ if (!argc) goto badarg;
+ if (argv->a_type == A_BLOB)
+ {
+ /*post("argv->a_type == A_BLOB, argc = %d, narg= %d", argc, narg);*/
+ *ap = (t_int)(argv->a_w.w_blob);
+ }
+ argc--;
+ argv++;
+ narg++;
+ ap++;
+ break;
case A_SYMBOL:
if (!argc) goto badarg;
case A_DEFSYM:
@@ -772,6 +811,10 @@
{
case 'f': SETFLOAT(at, va_arg(ap, double)); break;
case 's': SETSYMBOL(at, va_arg(ap, t_symbol *)); break;
+ case 't':
+ SETBLOB(at, va_arg(ap, t_blob *));
+ /*post("pd_vmess: arg[0].a_w.w_blob = %p", arg[0].a_w.w_blob);*/
+ break; /* MP 20061226 blob type */
case 'i': SETFLOAT(at, va_arg(ap, t_int)); break;
case 'p': SETPOINTER(at, va_arg(ap, t_gpointer *)); break;
default: goto done;
Index: pd/src/m_imp.h
===================================================================
RCS file: /cvsroot/pure-data/pd/src/m_imp.h,v
retrieving revision 1.4
diff -u -w -r1.4 m_imp.h
--- m_imp.h 19 Aug 2005 23:28:03 -0000 1.4
+++ m_imp.h 12 Feb 2007 03:45:44 -0000
@@ -25,6 +25,7 @@
typedef void (*t_pointermethod)(t_pd *x, t_gpointer *gp);
typedef void (*t_floatmethod)(t_pd *x, t_float f);
typedef void (*t_symbolmethod)(t_pd *x, t_symbol *s);
+typedef void (*t_blobmethod)(t_pd *x, t_blob *st); /* MP20061226 blob type */
typedef void (*t_listmethod)(t_pd *x, t_symbol *s, int argc, t_atom *argv);
typedef void (*t_anymethod)(t_pd *x, t_symbol *s, int argc, t_atom *argv);
@@ -41,6 +42,7 @@
t_pointermethod c_pointermethod;
t_floatmethod c_floatmethod;
t_symbolmethod c_symbolmethod;
+ t_blobmethod c_blobmethod; /* MP20061226 blob type */
t_listmethod c_listmethod;
t_anymethod c_anymethod;
struct _widgetbehavior *c_wb; /* "gobjs" only */
Index: pd/src/m_obj.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/m_obj.c,v
retrieving revision 1.4
diff -u -w -r1.4 m_obj.c
--- m_obj.c 18 May 2005 04:28:51 -0000 1.4
+++ m_obj.c 12 Feb 2007 03:45:44 -0000
@@ -15,6 +15,7 @@
t_gpointer *iu_pointerslot;
t_float *iu_floatslot;
t_symbol **iu_symslot;
+ t_blob **iu_blobslot; /* MP 20061226 blob type */
t_sample iu_floatsignalvalue;
};
@@ -32,9 +33,10 @@
#define i_pointerslot i_un.iu_pointerslot
#define i_floatslot i_un.iu_floatslot
#define i_symslot i_un.iu_symslot
+#define i_blobslot i_un.iu_blobslot /* MP 20061226 blob type */
static t_class *inlet_class, *pointerinlet_class, *floatinlet_class,
- *symbolinlet_class;
+ *symbolinlet_class, *blobinlet_class; /* MP 20061226 added blobinlet_class */
#define ISINLET(pd) ((*(pd) == inlet_class) || \
(*(pd) == pointerinlet_class) || \
@@ -111,6 +113,26 @@
else inlet_wrong(x, &s_symbol);
}
+static void inlet_blob(t_inlet *x, t_blob *st) /* MP20061226 blob type */
+{
+ /*post("inlet_blob (%p): st %p", &inlet_blob, st);*/
+ if (x->i_symfrom == &s_blob)
+ {
+ /*post("inlet_blob calling pd_vmess");*/
+ pd_vmess(x->i_dest, x->i_symto, "t", st);
+ }
+ else if (!x->i_symfrom)
+ {
+ /*post("inlet_blob calling pd_blob");*/
+ pd_blob(x->i_dest, st);
+ }
+ else
+ {
+ /*post("inlet_blob calling inlet_wrong");*/
+ inlet_wrong(x, &s_blob);
+ }
+}
+
static void inlet_list(t_inlet *x, t_symbol *s, int argc, t_atom *argv)
{
t_atom at;
@@ -192,6 +214,23 @@
return (x);
}
+t_inlet *blobinlet_new(t_object *owner, t_blob **stp) /* MP 20061226 blob type */
+{