From 0ed7a8b68dd73e2b0473b8127aeca99f3bac9061 Mon Sep 17 00:00:00 2001 From: Thomas Grill Date: Wed, 1 Apr 2009 21:13:09 +0000 Subject: cleaned up grill externals - replaced with svn:externals to svn.grrrr.org/ext/trunk/ svn path=/trunk/; revision=10951 --- externals/grill/deljoin/deljoin-help.pd | 20 - externals/grill/deljoin/deljoin.cw | Bin 141089 -> 0 bytes externals/grill/deljoin/deljoin.help | Bin 521 -> 0 bytes externals/grill/deljoin/deljoin.vcproj | 176 - externals/grill/deljoin/gpl.txt | 346 -- externals/grill/deljoin/license.txt | 50 - externals/grill/deljoin/main.cpp | 147 - externals/grill/deljoin/package.txt | 2 - externals/grill/delsplit/delsplit-help.pd | 22 - externals/grill/delsplit/delsplit.help | Bin 529 -> 0 bytes externals/grill/delsplit/delsplit.mcp | Bin 141165 -> 0 bytes externals/grill/delsplit/delsplit.vcproj | 176 - externals/grill/delsplit/gpl.txt | 346 -- externals/grill/delsplit/license.txt | 50 - externals/grill/delsplit/main.cpp | 174 - externals/grill/delsplit/package.txt | 2 - externals/grill/dynext/dynext.vcproj | 255 -- externals/grill/dynext/gpl.txt | 346 -- externals/grill/dynext/license.txt | 50 - externals/grill/dynext/package.txt | 6 - externals/grill/dynext/pd/dyn~-help.pd | 169 - externals/grill/dynext/readme.txt | 73 - externals/grill/dynext/src/main.cpp | 954 ----- externals/grill/fftease/fftease.mcp | Bin 207912 -> 0 bytes externals/grill/fftease/fftease.vcproj | 3346 --------------- externals/grill/fftease/gpl.txt | 346 -- externals/grill/fftease/license.txt | 86 - externals/grill/fftease/maxmsp/burrow~.help | Bin 2230 -> 0 bytes externals/grill/fftease/maxmsp/cross~.help | Bin 1822 -> 0 bytes externals/grill/fftease/maxmsp/dentist~.help | Bin 1821 -> 0 bytes externals/grill/fftease/maxmsp/disarray~.help | Bin 2069 -> 0 bytes externals/grill/fftease/maxmsp/drown~.help | Bin 1527 -> 0 bytes externals/grill/fftease/maxmsp/ether~.help | Bin 2298 -> 0 bytes .../fftease/maxmsp/fftease-objectmappings.txt | 29 - externals/grill/fftease/maxmsp/fftease4.PICT | Bin 8002 -> 0 bytes externals/grill/fftease/media/nixon.aiff | Bin 449214 -> 0 bytes externals/grill/fftease/media/schubert.aiff | Bin 451774 -> 0 bytes externals/grill/fftease/package.txt | 15 - externals/grill/fftease/pd/burrow~-help.pd | 90 - externals/grill/fftease/pd/cross~-help.pd | 88 - externals/grill/fftease/pd/dentist~-help.pd | 65 - externals/grill/fftease/pd/disarray~-help.pd | 67 - externals/grill/fftease/pd/drown~-help.pd | 61 - externals/grill/fftease/pd/ether~-help.pd | 84 - externals/grill/fftease/pd/morphine~-help.pd | 77 - externals/grill/fftease/pd/scrape~-help.pd | 72 - externals/grill/fftease/pd/shapee~-help.pd | 62 - externals/grill/fftease/pd/swinger~-help.pd | 62 - externals/grill/fftease/pd/taint~-help.pd | 83 - externals/grill/fftease/pd/thresher~-help.pd | 46 - externals/grill/fftease/pd/vacancy~-help.pd | 97 - externals/grill/fftease/pd/xsyn~-help.pd | 61 - externals/grill/fftease/readme.txt | 75 - externals/grill/fftease/src/burrow~.cpp | 107 - externals/grill/fftease/src/convert.c | 134 - externals/grill/fftease/src/cross~.cpp | 92 - externals/grill/fftease/src/dentist~.cpp | 149 - externals/grill/fftease/src/disarray~.cpp | 164 - externals/grill/fftease/src/drown~.cpp | 50 - externals/grill/fftease/src/ether~.cpp | 87 - externals/grill/fftease/src/fft.c | 157 - externals/grill/fftease/src/fft4.c | 340 -- externals/grill/fftease/src/fftease.cpp | 236 -- externals/grill/fftease/src/fold.c | 67 - externals/grill/fftease/src/leanconvert.c | 84 - externals/grill/fftease/src/main.cpp | 51 - externals/grill/fftease/src/main.h | 110 - externals/grill/fftease/src/makewindows.c | 190 - externals/grill/fftease/src/morphine~.cpp | 119 - externals/grill/fftease/src/pv.h | 65 - externals/grill/fftease/src/pvoc~.cpp | 130 - externals/grill/fftease/src/scrape~.cpp | 154 - externals/grill/fftease/src/shapee~.cpp | 88 - externals/grill/fftease/src/swinger~.cpp | 64 - externals/grill/fftease/src/taint~.cpp | 99 - externals/grill/fftease/src/thresher~.cpp | 112 - externals/grill/fftease/src/vacancy~.cpp | 134 - externals/grill/fftease/src/xsyn~.cpp | 50 - externals/grill/flext/Doxyfile | 273 -- externals/grill/flext/Makefile.am | 8 - externals/grill/flext/bootstrap.sh | 5 - externals/grill/flext/build.bat | 58 - externals/grill/flext/build.sh | 57 - externals/grill/flext/build.txt | 251 -- externals/grill/flext/build/bmake-win-bcc.inc | 17 - externals/grill/flext/build/config-lnx.def | 2 - externals/grill/flext/build/config-mac.def | 2 - externals/grill/flext/build/config-win.def | 2 - externals/grill/flext/build/gnumake-lnx-gcc.inc | 13 - externals/grill/flext/build/gnumake-lnx-icc.inc | 13 - externals/grill/flext/build/gnumake-mac-gcc.inc | 13 - externals/grill/flext/build/gnumake-win-cygwin.inc | 17 - externals/grill/flext/build/gnumake-win-mingw.inc | 17 - externals/grill/flext/build/nmake-win-msvc.inc | 3 - externals/grill/flext/buildsys/bmake-ext.inc | 1 - externals/grill/flext/buildsys/bmake-flext.inc | 3 - externals/grill/flext/buildsys/bmake-sub.mak | 44 - externals/grill/flext/buildsys/bmake.inc | 67 - externals/grill/flext/buildsys/bmake.mak | 110 - externals/grill/flext/buildsys/build-bcc.bat | 3 - externals/grill/flext/buildsys/build-cygwin.sh | 5 - externals/grill/flext/buildsys/build-gcc.sh | 5 - externals/grill/flext/buildsys/build-icc.sh | 5 - externals/grill/flext/buildsys/build-mingw.bat | 3 - externals/grill/flext/buildsys/build-msvc.bat | 3 - externals/grill/flext/buildsys/gnumake-ext.inc | 1 - externals/grill/flext/buildsys/gnumake-flext.inc | 3 - externals/grill/flext/buildsys/gnumake-sub.mak | 44 - externals/grill/flext/buildsys/gnumake.inc | 95 - externals/grill/flext/buildsys/gnumake.mak | 142 - .../grill/flext/buildsys/lnx/gnumake-gcc-ext.inc | 56 - .../grill/flext/buildsys/lnx/gnumake-gcc-flext.inc | 72 - externals/grill/flext/buildsys/lnx/gnumake-gcc.inc | 64 - .../grill/flext/buildsys/lnx/gnumake-icc-ext.inc | 56 - .../grill/flext/buildsys/lnx/gnumake-icc-flext.inc | 72 - externals/grill/flext/buildsys/lnx/gnumake-icc.inc | 64 - .../grill/flext/buildsys/lnx/pd/config-gcc.def | 56 - .../grill/flext/buildsys/lnx/pd/config-icc.def | 56 - .../flext/buildsys/lnx/pd/gnumake-gcc-ext.inc | 1 - .../flext/buildsys/lnx/pd/gnumake-gcc-flext.inc | 6 - .../grill/flext/buildsys/lnx/pd/gnumake-gcc.inc | 4 - .../flext/buildsys/lnx/pd/gnumake-icc-ext.inc | 1 - .../flext/buildsys/lnx/pd/gnumake-icc-flext.inc | 6 - .../grill/flext/buildsys/lnx/pd/gnumake-icc.inc | 4 - .../grill/flext/buildsys/mac/gnumake-gcc-ext.inc | 37 - .../grill/flext/buildsys/mac/gnumake-gcc-flext.inc | 77 - .../flext/buildsys/mac/gnumake-gcc-targets.inc | 70 - externals/grill/flext/buildsys/mac/gnumake-gcc.inc | 74 - .../grill/flext/buildsys/mac/max/config-gcc.def | 75 - .../flext/buildsys/mac/max/gnumake-gcc-ext.inc | 23 - .../flext/buildsys/mac/max/gnumake-gcc-flext.inc | 20 - .../grill/flext/buildsys/mac/max/gnumake-gcc.inc | 6 - .../grill/flext/buildsys/mac/pd/config-gcc.def | 72 - .../flext/buildsys/mac/pd/gnumake-gcc-ext.inc | 10 - .../flext/buildsys/mac/pd/gnumake-gcc-flext.inc | 11 - .../grill/flext/buildsys/mac/pd/gnumake-gcc.inc | 10 - externals/grill/flext/buildsys/nmake-ext.inc | 1 - externals/grill/flext/buildsys/nmake-flext.inc | 3 - externals/grill/flext/buildsys/nmake-shlib.inc | 1 - externals/grill/flext/buildsys/nmake-sub.mak | 44 - externals/grill/flext/buildsys/nmake.inc | 64 - externals/grill/flext/buildsys/nmake.mak | 110 - externals/grill/flext/buildsys/readme.txt | 180 - externals/grill/flext/buildsys/targets-ext.inc | 51 - externals/grill/flext/buildsys/targets-flext.inc | 52 - externals/grill/flext/buildsys/targets-shlib.inc | 51 - externals/grill/flext/buildsys/targets.inc | 148 - externals/grill/flext/buildsys/version.inc | 3 - .../grill/flext/buildsys/win/bmake-bcc-ext.inc | 53 - .../grill/flext/buildsys/win/bmake-bcc-flext.inc | 70 - externals/grill/flext/buildsys/win/bmake-bcc.inc | 36 - .../flext/buildsys/win/gnumake-cygwin-ext.inc | 42 - .../flext/buildsys/win/gnumake-cygwin-flext.inc | 52 - .../grill/flext/buildsys/win/gnumake-cygwin.inc | 30 - .../grill/flext/buildsys/win/gnumake-mingw-ext.inc | 48 - .../flext/buildsys/win/gnumake-mingw-flext.inc | 52 - .../grill/flext/buildsys/win/gnumake-mingw.inc | 30 - .../grill/flext/buildsys/win/max/config-cygwin.def | 51 - .../grill/flext/buildsys/win/max/config-mingw.def | 42 - .../grill/flext/buildsys/win/max/config-msvc.def | 46 - .../flext/buildsys/win/max/gnumake-cygwin-ext.inc | 1 - .../buildsys/win/max/gnumake-cygwin-flext.inc | 6 - .../flext/buildsys/win/max/gnumake-cygwin.inc | 10 - .../flext/buildsys/win/max/gnumake-mingw-ext.inc | 1 - .../flext/buildsys/win/max/gnumake-mingw-flext.inc | 6 - .../grill/flext/buildsys/win/max/gnumake-mingw.inc | 12 - .../flext/buildsys/win/max/nmake-msvc-ext.inc | 1 - .../flext/buildsys/win/max/nmake-msvc-flext.inc | 5 - .../grill/flext/buildsys/win/max/nmake-msvc.inc | 8 - .../grill/flext/buildsys/win/nmake-msvc-ext.inc | 43 - .../grill/flext/buildsys/win/nmake-msvc-flext.inc | 59 - .../grill/flext/buildsys/win/nmake-msvc-shlib.inc | 45 - externals/grill/flext/buildsys/win/nmake-msvc.inc | 59 - .../grill/flext/buildsys/win/pd/bmake-bcc-ext.inc | 1 - .../flext/buildsys/win/pd/bmake-bcc-flext.inc | 5 - .../flext/buildsys/win/pd/bmake-bcc-shlib.inc | 1 - .../grill/flext/buildsys/win/pd/bmake-bcc.inc | 12 - .../grill/flext/buildsys/win/pd/config-bcc.def | 38 - .../grill/flext/buildsys/win/pd/config-cygwin.def | 34 - .../grill/flext/buildsys/win/pd/config-mingw.def | 37 - .../grill/flext/buildsys/win/pd/config-msvc.def | 46 - .../flext/buildsys/win/pd/gnumake-cygwin-ext.inc | 1 - .../flext/buildsys/win/pd/gnumake-cygwin-flext.inc | 5 - .../flext/buildsys/win/pd/gnumake-cygwin-shlib.inc | 1 - .../grill/flext/buildsys/win/pd/gnumake-cygwin.inc | 6 - .../flext/buildsys/win/pd/gnumake-mingw-ext.inc | 1 - .../flext/buildsys/win/pd/gnumake-mingw-flext.inc | 5 - .../flext/buildsys/win/pd/gnumake-mingw-shlib.inc | 1 - .../grill/flext/buildsys/win/pd/gnumake-mingw.inc | 13 - .../grill/flext/buildsys/win/pd/nmake-msvc-ext.inc | 1 - .../flext/buildsys/win/pd/nmake-msvc-flext.inc | 5 - .../flext/buildsys/win/pd/nmake-msvc-shlib.inc | 1 - .../grill/flext/buildsys/win/pd/nmake-msvc.inc | 13 - externals/grill/flext/changes.txt | 355 -- externals/grill/flext/configure.ac | 160 - externals/grill/flext/examples/examples.dsw | 33 - externals/grill/flext/examples/pd/ex-henon.pd | 87 - externals/grill/flext/examples/source/henon.cpp | 122 - externals/grill/flext/examples/source/henon.cw | Bin 101183 -> 0 bytes externals/grill/flext/examples/source/henon.dsp | 95 - externals/grill/flext/flext.mcp | Bin 935395 -> 0 bytes externals/grill/flext/flext.vcproj | 4333 -------------------- externals/grill/flext/flext.xcode/project.pbxproj | 3066 -------------- .../grill/flext/flext.xcodeproj/project.pbxproj | 1697 -------- externals/grill/flext/gpl.txt | 346 -- externals/grill/flext/license.txt | 19 - externals/grill/flext/notes.txt | 69 - externals/grill/flext/package.txt | 48 - externals/grill/flext/readme.txt | 91 - externals/grill/flext/source/Makefile.am | 129 - externals/grill/flext/source/flatom.cpp | 165 - externals/grill/flext/source/flatom_part.cpp | 37 - externals/grill/flext/source/flatom_pr.cpp | 119 - externals/grill/flext/source/flattr.cpp | 445 -- externals/grill/flext/source/flattr_ed.cpp | 872 ---- externals/grill/flext/source/flbase.cpp | 204 - externals/grill/flext/source/flbase.h | 575 --- externals/grill/flext/source/flbind.cpp | 261 -- externals/grill/flext/source/flbuf.cpp | 348 -- externals/grill/flext/source/flclass.h | 1098 ----- externals/grill/flext/source/flcontainers.h | 473 --- externals/grill/flext/source/flcwmax-thr.h | 31 - externals/grill/flext/source/flcwmax-x-thr.h | 31 - externals/grill/flext/source/flcwmax-x.h | 24 - externals/grill/flext/source/flcwmax.h | 36 - externals/grill/flext/source/flcwpd-x-thr.h | 31 - externals/grill/flext/source/flcwpd-x.h | 37 - externals/grill/flext/source/fldefs.h | 70 - externals/grill/flext/source/fldefs_attradd.h | 121 - externals/grill/flext/source/fldefs_attrcb.h | 158 - externals/grill/flext/source/fldefs_attrvar.h | 158 - externals/grill/flext/source/fldefs_hdr.h | 61 - externals/grill/flext/source/fldefs_methadd.h | 232 -- externals/grill/flext/source/fldefs_methbind.h | 48 - externals/grill/flext/source/fldefs_methcall.h | 78 - externals/grill/flext/source/fldefs_methcb.h | 129 - externals/grill/flext/source/fldefs_meththr.h | 273 -- externals/grill/flext/source/fldefs_setup.h | 337 -- externals/grill/flext/source/fldoxygen.h | 216 - externals/grill/flext/source/fldsp.cpp | 118 - externals/grill/flext/source/fldsp.h | 184 - externals/grill/flext/source/flext.cpp | 261 -- externals/grill/flext/source/flext.h | 68 - externals/grill/flext/source/flfeatures.h | 34 - externals/grill/flext/source/flinternal.h | 119 - externals/grill/flext/source/flitem.cpp | 127 - externals/grill/flext/source/fllib.cpp | 578 --- externals/grill/flext/source/flmap.cpp | 249 -- externals/grill/flext/source/flmap.h | 255 -- externals/grill/flext/source/flmeth.cpp | 132 - externals/grill/flext/source/flmsg.cpp | 295 -- externals/grill/flext/source/flmspbuffer.h | 83 - externals/grill/flext/source/flout.cpp | 332 -- externals/grill/flext/source/flprefix.h | 433 -- externals/grill/flext/source/flproxy.cpp | 222 - externals/grill/flext/source/flqueue.cpp | 559 --- externals/grill/flext/source/flsimd.cpp | 2002 --------- externals/grill/flext/source/flsndobj.cpp | 132 - externals/grill/flext/source/flsndobj.h | 95 - externals/grill/flext/source/flstdc.h | 311 -- externals/grill/flext/source/flstk.cpp | 117 - externals/grill/flext/source/flstk.h | 103 - externals/grill/flext/source/flsupport.cpp | 316 -- externals/grill/flext/source/flsupport.h | 1285 ------ externals/grill/flext/source/flthr.cpp | 646 --- externals/grill/flext/source/fltimer.cpp | 275 -- externals/grill/flext/source/flutil.cpp | 48 - externals/grill/flext/source/flxlet.cpp | 112 - externals/grill/flext/tutorial/Makefile.am | 55 - externals/grill/flext/tutorial/adv1/Makefile.am | 51 - externals/grill/flext/tutorial/adv1/adv1.mcp | Bin 146697 -> 0 bytes externals/grill/flext/tutorial/adv1/adv1.vcproj | 177 - externals/grill/flext/tutorial/adv1/main.cpp | 101 - externals/grill/flext/tutorial/adv1/package.txt | 2 - externals/grill/flext/tutorial/adv2/Makefile.am | 51 - externals/grill/flext/tutorial/adv2/adv2.mcp | Bin 148873 -> 0 bytes externals/grill/flext/tutorial/adv2/adv2.vcproj | 176 - externals/grill/flext/tutorial/adv2/main.cpp | 100 - externals/grill/flext/tutorial/adv2/package.txt | 2 - externals/grill/flext/tutorial/adv3/Makefile.am | 51 - externals/grill/flext/tutorial/adv3/adv3.mcp | Bin 148873 -> 0 bytes externals/grill/flext/tutorial/adv3/adv3.vcproj | 176 - externals/grill/flext/tutorial/adv3/main.cpp | 153 - externals/grill/flext/tutorial/adv3/package.txt | 2 - externals/grill/flext/tutorial/attr1/Makefile.am | 51 - externals/grill/flext/tutorial/attr1/attr1.mcp | Bin 147321 -> 0 bytes externals/grill/flext/tutorial/attr1/attr1.vcproj | 176 - externals/grill/flext/tutorial/attr1/main.cpp | 79 - externals/grill/flext/tutorial/attr1/package.txt | 2 - externals/grill/flext/tutorial/attr2/Makefile.am | 51 - externals/grill/flext/tutorial/attr2/attr2.mcp | Bin 148873 -> 0 bytes externals/grill/flext/tutorial/attr2/attr2.vcproj | 176 - externals/grill/flext/tutorial/attr2/main.cpp | 195 - externals/grill/flext/tutorial/attr2/package.txt | 2 - externals/grill/flext/tutorial/attr3/Makefile.am | 51 - externals/grill/flext/tutorial/attr3/attr3.mcp | Bin 148873 -> 0 bytes externals/grill/flext/tutorial/attr3/attr3.vcproj | 176 - externals/grill/flext/tutorial/attr3/main.cpp | 157 - externals/grill/flext/tutorial/attr3/package.txt | 2 - externals/grill/flext/tutorial/bind1/Makefile.am | 51 - externals/grill/flext/tutorial/bind1/bind1.mcp | Bin 148873 -> 0 bytes externals/grill/flext/tutorial/bind1/bind1.vcproj | 177 - externals/grill/flext/tutorial/bind1/main.cpp | 134 - externals/grill/flext/tutorial/bind1/package.txt | 2 - externals/grill/flext/tutorial/buffer1/Makefile.am | 51 - externals/grill/flext/tutorial/buffer1/buffer1.mcp | Bin 147321 -> 0 bytes .../grill/flext/tutorial/buffer1/buffer1.vcproj | 177 - externals/grill/flext/tutorial/buffer1/main.cpp | 257 -- externals/grill/flext/tutorial/buffer1/package.txt | 2 - externals/grill/flext/tutorial/build.bat | 32 - externals/grill/flext/tutorial/build.sh | 27 - externals/grill/flext/tutorial/gpl.txt | 346 -- externals/grill/flext/tutorial/lib1/Makefile.am | 51 - externals/grill/flext/tutorial/lib1/lib1.mcp | Bin 148873 -> 0 bytes externals/grill/flext/tutorial/lib1/lib1.vcproj | 177 - externals/grill/flext/tutorial/lib1/main.cpp | 132 - externals/grill/flext/tutorial/lib1/package.txt | 2 - externals/grill/flext/tutorial/license.txt | 50 - externals/grill/flext/tutorial/maxmsp/Makefile.am | 6 - externals/grill/flext/tutorial/maxmsp/ex-adv1.pat | Bin 540 -> 0 bytes externals/grill/flext/tutorial/maxmsp/ex-adv2.pat | Bin 726 -> 0 bytes externals/grill/flext/tutorial/maxmsp/ex-adv3.pat | Bin 801 -> 0 bytes externals/grill/flext/tutorial/maxmsp/ex-attr1.pat | Bin 1050 -> 0 bytes externals/grill/flext/tutorial/maxmsp/ex-attr2.pat | Bin 1389 -> 0 bytes externals/grill/flext/tutorial/maxmsp/ex-attr3.pat | Bin 1358 -> 0 bytes externals/grill/flext/tutorial/maxmsp/ex-bind1.pat | Bin 1509 -> 0 bytes .../grill/flext/tutorial/maxmsp/ex-buffer1.pat | Bin 1364 -> 0 bytes externals/grill/flext/tutorial/maxmsp/ex-lib1.pat | Bin 1440 -> 0 bytes .../grill/flext/tutorial/maxmsp/ex-signal1.pat | Bin 740 -> 0 bytes .../grill/flext/tutorial/maxmsp/ex-signal2.pat | Bin 708 -> 0 bytes .../grill/flext/tutorial/maxmsp/ex-simple1.pat | Bin 725 -> 0 bytes .../grill/flext/tutorial/maxmsp/ex-simple2.pat | Bin 668 -> 0 bytes .../grill/flext/tutorial/maxmsp/ex-simple3.pat | Bin 662 -> 0 bytes .../grill/flext/tutorial/maxmsp/ex-thread1.pat | Bin 1004 -> 0 bytes .../grill/flext/tutorial/maxmsp/ex-thread2.pat | Bin 874 -> 0 bytes .../grill/flext/tutorial/maxmsp/ex-timer1.pat | Bin 1247 -> 0 bytes externals/grill/flext/tutorial/pd/Makefile.am | 6 - externals/grill/flext/tutorial/pd/ex-adv1.pd | 23 - externals/grill/flext/tutorial/pd/ex-adv2.pd | 23 - externals/grill/flext/tutorial/pd/ex-adv3.pd | 40 - externals/grill/flext/tutorial/pd/ex-attr1.pd | 31 - externals/grill/flext/tutorial/pd/ex-attr2.pd | 47 - externals/grill/flext/tutorial/pd/ex-attr3.pd | 60 - externals/grill/flext/tutorial/pd/ex-bind1.pd | 55 - externals/grill/flext/tutorial/pd/ex-buffer1.pd | 121 - externals/grill/flext/tutorial/pd/ex-lib1.pd | 51 - externals/grill/flext/tutorial/pd/ex-signal1.pd | 27 - externals/grill/flext/tutorial/pd/ex-signal2.pd | 25 - externals/grill/flext/tutorial/pd/ex-simple1.pd | 12 - externals/grill/flext/tutorial/pd/ex-simple2.pd | 16 - externals/grill/flext/tutorial/pd/ex-simple3.pd | 22 - externals/grill/flext/tutorial/pd/ex-sndobj1.pd | 34 - externals/grill/flext/tutorial/pd/ex-stk1.pd | 15 - externals/grill/flext/tutorial/pd/ex-stk2.pd | 32 - externals/grill/flext/tutorial/pd/ex-thread1.pd | 43 - externals/grill/flext/tutorial/pd/ex-thread2.pd | 47 - externals/grill/flext/tutorial/pd/ex-timer1.pd | 62 - externals/grill/flext/tutorial/readme.txt | 77 - externals/grill/flext/tutorial/signal1/Makefile.am | 51 - externals/grill/flext/tutorial/signal1/main.cpp | 129 - externals/grill/flext/tutorial/signal1/package.txt | 2 - externals/grill/flext/tutorial/signal1/signal1.mcp | Bin 101183 -> 0 bytes .../grill/flext/tutorial/signal1/signal1.vcproj | 177 - externals/grill/flext/tutorial/signal2/Makefile.am | 51 - externals/grill/flext/tutorial/signal2/main.cpp | 69 - externals/grill/flext/tutorial/signal2/package.txt | 2 - externals/grill/flext/tutorial/signal2/signal2.mcp | Bin 101183 -> 0 bytes .../grill/flext/tutorial/signal2/signal2.vcproj | 177 - externals/grill/flext/tutorial/simple1/Makefile.am | 51 - externals/grill/flext/tutorial/simple1/main.cpp | 73 - externals/grill/flext/tutorial/simple1/package.txt | 2 - externals/grill/flext/tutorial/simple1/simple1.mcp | Bin 147321 -> 0 bytes .../grill/flext/tutorial/simple1/simple1.vcproj | 177 - externals/grill/flext/tutorial/simple2/Makefile.am | 51 - externals/grill/flext/tutorial/simple2/main.cpp | 77 - externals/grill/flext/tutorial/simple2/package.txt | 2 - externals/grill/flext/tutorial/simple2/simple2.mcp | Bin 101183 -> 0 bytes .../grill/flext/tutorial/simple2/simple2.vcproj | 176 - externals/grill/flext/tutorial/simple3/Makefile.am | 51 - externals/grill/flext/tutorial/simple3/main.cpp | 91 - externals/grill/flext/tutorial/simple3/package.txt | 2 - externals/grill/flext/tutorial/simple3/simple3.mcp | Bin 101183 -> 0 bytes .../grill/flext/tutorial/simple3/simple3.vcproj | 176 - externals/grill/flext/tutorial/sndobj1/Makefile.am | 51 - externals/grill/flext/tutorial/sndobj1/main.cpp | 101 - externals/grill/flext/tutorial/sndobj1/package.txt | 2 - externals/grill/flext/tutorial/sndobj1/sndobj1.mcp | Bin 101183 -> 0 bytes .../grill/flext/tutorial/sndobj1/sndobj1.vcproj | 177 - externals/grill/flext/tutorial/stk1/Makefile.am | 51 - externals/grill/flext/tutorial/stk1/main.cpp | 89 - externals/grill/flext/tutorial/stk1/package.txt | 2 - externals/grill/flext/tutorial/stk1/stk1.vcproj | 177 - externals/grill/flext/tutorial/stk2/Makefile.am | 51 - externals/grill/flext/tutorial/stk2/main.cpp | 115 - externals/grill/flext/tutorial/stk2/package.txt | 2 - externals/grill/flext/tutorial/stk2/stk2.vcproj | 177 - externals/grill/flext/tutorial/thread1/Makefile.am | 51 - externals/grill/flext/tutorial/thread1/main.cpp | 83 - externals/grill/flext/tutorial/thread1/package.txt | 3 - externals/grill/flext/tutorial/thread1/thread1.mcp | Bin 149552 -> 0 bytes .../grill/flext/tutorial/thread1/thread1.vcproj | 176 - externals/grill/flext/tutorial/thread2/Makefile.am | 51 - externals/grill/flext/tutorial/thread2/main.cpp | 134 - externals/grill/flext/tutorial/thread2/package.txt | 3 - externals/grill/flext/tutorial/thread2/thread2.mcp | Bin 148836 -> 0 bytes .../grill/flext/tutorial/thread2/thread2.vcproj | 176 - externals/grill/flext/tutorial/timer1/Makefile.am | 51 - externals/grill/flext/tutorial/timer1/main.cpp | 100 - externals/grill/flext/tutorial/timer1/package.txt | 2 - externals/grill/flext/tutorial/timer1/timer1.mcp | Bin 207765 -> 0 bytes .../grill/flext/tutorial/timer1/timer1.vcproj | 177 - externals/grill/flext/tutorial/tutorial.sln | 473 --- externals/grill/guitest/build-pd-linux.sh | 11 - externals/grill/guitest/config-pd-linux.txt | 27 - externals/grill/guitest/flgui.cpp | 781 ---- externals/grill/guitest/flgui.h | 237 -- externals/grill/guitest/flguiobj.cpp | 801 ---- externals/grill/guitest/flguiobj.h | 362 -- externals/grill/guitest/guitest.vcproj | 226 - externals/grill/guitest/main.cpp | 166 - externals/grill/guitest/make-files.txt | 7 - externals/grill/guitest/makefile.pd-linux | 87 - externals/grill/guitest/pd/guitest1.pd | 7 - externals/grill/namedobjs/gpl.txt | 346 -- externals/grill/namedobjs/license.txt | 1 - externals/grill/namedobjs/main.cpp | 94 - externals/grill/namedobjs/namedobjs.cw | Bin 144679 -> 0 bytes externals/grill/namedobjs/namedobjs.help | Bin 5976 -> 0 bytes externals/grill/namedobjs/namedobjs.mpw | 1 - externals/grill/namedobjs/readme.txt | 1 - externals/grill/pool/gpl.txt | 346 -- externals/grill/pool/license.txt | 50 - externals/grill/pool/package.txt | 7 - externals/grill/pool/pool-0.2.dtd | 5 - externals/grill/pool/pool-help.pd | 319 -- externals/grill/pool/pool.help | Bin 6478 -> 0 bytes externals/grill/pool/pool.mcp | Bin 202236 -> 0 bytes externals/grill/pool/pool.vcproj | 371 -- externals/grill/pool/readme.txt | 127 - externals/grill/pool/source/data.cpp | 210 - externals/grill/pool/source/main.cpp | 1395 ------- externals/grill/pool/source/pool.cpp | 1216 ------ externals/grill/pool/source/pool.h | 253 -- externals/grill/prepend/gpl.txt | 346 -- externals/grill/prepend/license.txt | 49 - externals/grill/prepend/main.cpp | 134 - externals/grill/prepend/makefile.bcc | 75 - externals/grill/prepend/makefile.pd-linux | 69 - externals/grill/prepend/prepend.dsp | 95 - externals/grill/prepend/prepend.vcproj | 174 - externals/grill/py/build/config-lnx.def | 17 - externals/grill/py/build/config-mac.def | 14 - externals/grill/py/build/config-win.def | 17 - externals/grill/py/build/gnumake-lnx-gcc.inc | 21 - externals/grill/py/build/gnumake-mac-gcc.inc | 22 - externals/grill/py/build/gnumake-win-cygwin.inc | 22 - externals/grill/py/build/nmake-win-msvc.inc | 23 - externals/grill/py/gpl.txt | 284 -- externals/grill/py/license.txt | 50 - externals/grill/py/maxmsp/py-objectmappings.txt | 19 - externals/grill/py/maxmsp/thread-1.mxb | Bin 3080 -> 0 bytes externals/grill/py/package.txt | 16 - externals/grill/py/pd/attr-1.pd | 37 - externals/grill/py/pd/buffer-1.pd | 61 - externals/grill/py/pd/buffer-2.pd | 37 - externals/grill/py/pd/builtins-1.pd | 53 - externals/grill/py/pd/methods-1.pd | 24 - externals/grill/py/pd/methods-2.pd | 30 - externals/grill/py/pd/pak.pd | 28 - externals/grill/py/pd/script-1.pd | 64 - externals/grill/py/pd/sendrecv-1.pd | 33 - externals/grill/py/pd/sendrecv-2.pd | 12 - externals/grill/py/pd/sendrecv-3.pd | 10 - externals/grill/py/pd/sig-1.pd | 28 - externals/grill/py/pd/sig-2.pd | 23 - externals/grill/py/pd/simple-1.pd | 45 - externals/grill/py/pd/simple-2.pd | 37 - externals/grill/py/pd/simple-3.pd | 30 - externals/grill/py/pd/tcltk.pd | 18 - externals/grill/py/pd/thread-1.pd | 62 - externals/grill/py/py.vcproj | 1347 ------ externals/grill/py/py.xcode/project.pbxproj | 995 ----- externals/grill/py/py.xcodeproj/project.pbxproj | 661 --- externals/grill/py/readme.txt | 222 - externals/grill/py/scripts/buffer.py | 60 - externals/grill/py/scripts/pak.py | 14 - externals/grill/py/scripts/script.py | 48 - externals/grill/py/scripts/sendrecv.py | 180 - externals/grill/py/scripts/sig.py | 100 - externals/grill/py/scripts/simple.py | 214 - externals/grill/py/scripts/tcltk.py | 81 - externals/grill/py/scripts/threads.py | 50 - externals/grill/py/source/bound.cpp | 202 - externals/grill/py/source/clmeth.cpp | 426 -- externals/grill/py/source/main.cpp | 15 - externals/grill/py/source/main.h | 43 - externals/grill/py/source/modmeth.cpp | 304 -- externals/grill/py/source/py.cpp | 419 -- externals/grill/py/source/pyargs.cpp | 231 -- externals/grill/py/source/pyatom.cpp | 63 - externals/grill/py/source/pyatom.h | 21 - externals/grill/py/source/pybase.cpp | 923 ----- externals/grill/py/source/pybase.h | 256 -- externals/grill/py/source/pybuffer.cpp | 828 ---- externals/grill/py/source/pybuffer.h | 81 - externals/grill/py/source/pybundle.cpp | 234 -- externals/grill/py/source/pybundle.h | 62 - externals/grill/py/source/pydsp.cpp | 192 - externals/grill/py/source/pyext.cpp | 662 --- externals/grill/py/source/pyext.h | 158 - externals/grill/py/source/pymeth.cpp | 430 -- externals/grill/py/source/pyprefix.h | 54 - externals/grill/py/source/pysymbol.cpp | 266 -- externals/grill/py/source/pysymbol.h | 94 - externals/grill/py/source/register.cpp | 153 - externals/grill/vasp/changes.txt | 148 - externals/grill/vasp/gpl.txt | 346 -- externals/grill/vasp/license.txt | 64 - externals/grill/vasp/max-ex/convolve | Bin 5668 -> 0 bytes externals/grill/vasp/max-ex/freeze | Bin 4384 -> 0 bytes externals/grill/vasp/max-help/vasp.abs.help | 56 - externals/grill/vasp/max-help/vasp.add.help | 68 - externals/grill/vasp/max-help/vasp.amaxq.help | 104 - externals/grill/vasp/max-help/vasp.aminq.help | 92 - externals/grill/vasp/max-help/vasp.beveldn.help | 92 - externals/grill/vasp/max-help/vasp.bevelup.help | 92 - externals/grill/vasp/max-help/vasp.cdiv.help | 12 - externals/grill/vasp/max-help/vasp.cfft.help | 414 -- externals/grill/vasp/max-help/vasp.chk.help | 20 - externals/grill/vasp/max-help/vasp.cifft.help | 407 -- externals/grill/vasp/max-help/vasp.cmul.help | 12 - externals/grill/vasp/max-help/vasp.cnoise.help | 116 - externals/grill/vasp/max-help/vasp.cnorm.help | 177 - externals/grill/vasp/max-help/vasp.cosc.help | 139 - externals/grill/vasp/max-help/vasp.cplus.help | 12 - externals/grill/vasp/max-help/vasp.cpowi.help | 166 - externals/grill/vasp/max-help/vasp.crsub.help | 12 - externals/grill/vasp/max-help/vasp.cset.help | 11 - externals/grill/vasp/max-help/vasp.csqr.help | 164 - externals/grill/vasp/max-help/vasp.csub.help | 12 - externals/grill/vasp/max-help/vasp.dif.help | 7 - externals/grill/vasp/max-help/vasp.div.help | 52 - externals/grill/vasp/max-help/vasp.equ.help | 145 - externals/grill/vasp/max-help/vasp.exp.help | 96 - externals/grill/vasp/max-help/vasp.fhp.help | 138 - externals/grill/vasp/max-help/vasp.flp.help | 138 - externals/grill/vasp/max-help/vasp.frames.help | 134 - externals/grill/vasp/max-help/vasp.framesd.help | 134 - externals/grill/vasp/max-help/vasp.framesq.help | 25 - externals/grill/vasp/max-help/vasp.gate.help | 166 - externals/grill/vasp/max-help/vasp.gather.help | 65 - externals/grill/vasp/max-help/vasp.geq.help | 128 - externals/grill/vasp/max-help/vasp.gtr.help | 128 - externals/grill/vasp/max-help/vasp.help | 710 ---- externals/grill/vasp/max-help/vasp.int.help | 93 - externals/grill/vasp/max-help/vasp.join.help | 31 - externals/grill/vasp/max-help/vasp.leq.help | 128 - externals/grill/vasp/max-help/vasp.list.help | 85 - externals/grill/vasp/max-help/vasp.log.help | 8 - externals/grill/vasp/max-help/vasp.lwr.help | 128 - externals/grill/vasp/max-help/vasp.max.help | 125 - externals/grill/vasp/max-help/vasp.maxq.help | 86 - externals/grill/vasp/max-help/vasp.mbeveldn.help | 100 - externals/grill/vasp/max-help/vasp.mbevelup.help | 100 - externals/grill/vasp/max-help/vasp.mcosc.help | 144 - externals/grill/vasp/max-help/vasp.min.help | 125 - externals/grill/vasp/max-help/vasp.minmax.help | 149 - externals/grill/vasp/max-help/vasp.minq.help | 86 - externals/grill/vasp/max-help/vasp.mirr.help | 88 - externals/grill/vasp/max-help/vasp.mod.help | 62 - externals/grill/vasp/max-help/vasp.mphasor.help | 127 - externals/grill/vasp/max-help/vasp.mul.help | 227 - externals/grill/vasp/max-help/vasp.multi.help | 23 - externals/grill/vasp/max-help/vasp.neq.help | 145 - externals/grill/vasp/max-help/vasp.noise.help | 100 - externals/grill/vasp/max-help/vasp.nonzero.help | 162 - externals/grill/vasp/max-help/vasp.offset.help | 32 - externals/grill/vasp/max-help/vasp.offsetd.help | 31 - externals/grill/vasp/max-help/vasp.offsetq.help | 17 - externals/grill/vasp/max-help/vasp.opt.help | 104 - externals/grill/vasp/max-help/vasp.osc.help | 123 - externals/grill/vasp/max-help/vasp.part.help | 30 - externals/grill/vasp/max-help/vasp.peaks.help | 176 - externals/grill/vasp/max-help/vasp.phasor.help | 123 - externals/grill/vasp/max-help/vasp.polar.help | 291 -- externals/grill/vasp/max-help/vasp.pow.help | 98 - externals/grill/vasp/max-help/vasp.pwrap.help | 6 - externals/grill/vasp/max-help/vasp.radd.help | 168 - externals/grill/vasp/max-help/vasp.rect.help | 301 -- externals/grill/vasp/max-help/vasp.rfft.help | 137 - externals/grill/vasp/max-help/vasp.rgate.help | 170 - externals/grill/vasp/max-help/vasp.rifft.help | 137 - externals/grill/vasp/max-help/vasp.rmax.help | 165 - externals/grill/vasp/max-help/vasp.rmaxq.help | 179 - externals/grill/vasp/max-help/vasp.rmin.help | 167 - externals/grill/vasp/max-help/vasp.rminq.help | 149 - externals/grill/vasp/max-help/vasp.ropt.help | 168 - externals/grill/vasp/max-help/vasp.rot.help | 91 - externals/grill/vasp/max-help/vasp.rpeaks.help | 174 - externals/grill/vasp/max-help/vasp.rpow.help | 171 - externals/grill/vasp/max-help/vasp.rsub.help | 52 - externals/grill/vasp/max-help/vasp.rvalleys.help | 177 - externals/grill/vasp/max-help/vasp.set.help | 326 -- externals/grill/vasp/max-help/vasp.shift.help | 92 - externals/grill/vasp/max-help/vasp.sign.help | 94 - externals/grill/vasp/max-help/vasp.spit.help | 42 - externals/grill/vasp/max-help/vasp.split.help | 31 - externals/grill/vasp/max-help/vasp.sqr.help | 91 - externals/grill/vasp/max-help/vasp.sqrt.help | 91 - externals/grill/vasp/max-help/vasp.ssqr.help | 219 - externals/grill/vasp/max-help/vasp.ssqrt.help | 219 - externals/grill/vasp/max-help/vasp.sub.help | 67 - externals/grill/vasp/max-help/vasp.sync.help | 164 - externals/grill/vasp/max-help/vasp.tilt.help | 89 - externals/grill/vasp/max-help/vasp.update.help | 41 - externals/grill/vasp/max-help/vasp.valleys.help | 174 - externals/grill/vasp/max-help/vasp.vector.help | 175 - externals/grill/vasp/max-help/vasp.vectors.help | 12 - externals/grill/vasp/max-help/vasp.xmirr.help | 169 - externals/grill/vasp/max-help/vasp.xrot.help | 91 - externals/grill/vasp/max-help/vasp.xshift.help | 91 - externals/grill/vasp/max/rndup2 | Bin 416 -> 0 bytes externals/grill/vasp/max/vasp.cconj | Bin 400 -> 0 bytes externals/grill/vasp/max/vasp.cconv | Bin 718 -> 0 bytes externals/grill/vasp/max/vasp.conv | Bin 387 -> 0 bytes externals/grill/vasp/max/vasp.defer | Bin 545 -> 0 bytes externals/grill/vasp/max/vasp.freeze | Bin 516 -> 0 bytes externals/grill/vasp/max/vasp.hilbert | Bin 457 -> 0 bytes externals/grill/vasp/max/vasp.im | Bin 132 -> 0 bytes externals/grill/vasp/max/vasp.lower | Bin 319 -> 0 bytes externals/grill/vasp/max/vasp.meanq | Bin 377 -> 0 bytes externals/grill/vasp/max/vasp.nodc | Bin 198 -> 0 bytes externals/grill/vasp/max/vasp.opt | Bin 530 -> 0 bytes externals/grill/vasp/max/vasp.parts | Bin 518 -> 0 bytes externals/grill/vasp/max/vasp.pwrap | Bin 203 -> 0 bytes externals/grill/vasp/max/vasp.re | Bin 132 -> 0 bytes externals/grill/vasp/max/vasp.ropt | Bin 531 -> 0 bytes externals/grill/vasp/max/vasp.spin | Bin 499 -> 0 bytes externals/grill/vasp/max/vasp.upper | Bin 370 -> 0 bytes externals/grill/vasp/mixfft.txt | 85 - externals/grill/vasp/package.txt | 20 - externals/grill/vasp/pd-ex/convolve.pd | 194 - externals/grill/vasp/pd-ex/enhance.pd | 478 --- externals/grill/vasp/pd-ex/freeze.pd | 414 -- externals/grill/vasp/pd-ex/frqmax.pd | 336 -- externals/grill/vasp/pd-ex/loudness.pd | 207 - externals/grill/vasp/pd-ex/wedit.pd | 1727 -------- externals/grill/vasp/pd-help/vasp_abs.pd | 48 - externals/grill/vasp/pd-help/vasp_add.pd | 54 - externals/grill/vasp/pd-help/vasp_ageq.pd | 50 - externals/grill/vasp/pd-help/vasp_agtr.pd | 52 - externals/grill/vasp/pd-help/vasp_aleq.pd | 52 - externals/grill/vasp/pd-help/vasp_alwr.pd | 52 - externals/grill/vasp/pd-help/vasp_cadd.pd | 21 - externals/grill/vasp/pd-help/vasp_cconj.pd | 33 - externals/grill/vasp/pd-help/vasp_ccopy.pd | 83 - externals/grill/vasp/pd-help/vasp_cdiv.pd | 16 - externals/grill/vasp/pd-help/vasp_cdivr.pd | 18 - externals/grill/vasp/pd-help/vasp_cfft.pd | 98 - externals/grill/vasp/pd-help/vasp_channel.pd | 10 - externals/grill/vasp/pd-help/vasp_check.pd | 26 - externals/grill/vasp/pd-help/vasp_cifft.pd | 89 - externals/grill/vasp/pd-help/vasp_cmul.pd | 21 - externals/grill/vasp/pd-help/vasp_cnoise.pd | 53 - externals/grill/vasp/pd-help/vasp_cnorm.pd | 94 - externals/grill/vasp/pd-help/vasp_copy.pd | 70 - externals/grill/vasp/pd-help/vasp_cosc.pd | 63 - externals/grill/vasp/pd-help/vasp_cpowi.pd | 84 - externals/grill/vasp/pd-help/vasp_crsub.pd | 22 - externals/grill/vasp/pd-help/vasp_cset.pd | 20 - externals/grill/vasp/pd-help/vasp_csqr.pd | 79 - externals/grill/vasp/pd-help/vasp_csub.pd | 21 - externals/grill/vasp/pd-help/vasp_csubr.pd | 21 - externals/grill/vasp/pd-help/vasp_dframes.pd | 65 - externals/grill/vasp/pd-help/vasp_dif.pd | 49 - externals/grill/vasp/pd-help/vasp_div.pd | 42 - externals/grill/vasp/pd-help/vasp_divr.pd | 37 - externals/grill/vasp/pd-help/vasp_doffset.pd | 28 - externals/grill/vasp/pd-help/vasp_dsize.pd | 39 - externals/grill/vasp/pd-help/vasp_equ.pd | 53 - externals/grill/vasp/pd-help/vasp_exp.pd | 42 - externals/grill/vasp/pd-help/vasp_fhp.pd | 88 - externals/grill/vasp/pd-help/vasp_fix.pd | 64 - externals/grill/vasp/pd-help/vasp_flp.pd | 85 - externals/grill/vasp/pd-help/vasp_frames.pd | 60 - externals/grill/vasp/pd-help/vasp_gate.pd | 74 - externals/grill/vasp/pd-help/vasp_gather.pd | 64 - externals/grill/vasp/pd-help/vasp_geq.pd | 50 - externals/grill/vasp/pd-help/vasp_gtr.pd | 52 - externals/grill/vasp/pd-help/vasp_imm.pd | 77 - externals/grill/vasp/pd-help/vasp_int.pd | 40 - externals/grill/vasp/pd-help/vasp_iwindow.pd | 61 - externals/grill/vasp/pd-help/vasp_join.pd | 26 - externals/grill/vasp/pd-help/vasp_leq.pd | 52 - externals/grill/vasp/pd-help/vasp_list.pd | 28 - externals/grill/vasp/pd-help/vasp_log.pd | 50 - externals/grill/vasp/pd-help/vasp_lwr.pd | 52 - externals/grill/vasp/pd-help/vasp_max.pd | 51 - externals/grill/vasp/pd-help/vasp_mcosc.pd | 68 - externals/grill/vasp/pd-help/vasp_mframes.pd | 63 - externals/grill/vasp/pd-help/vasp_min.pd | 51 - externals/grill/vasp/pd-help/vasp_minmax.pd | 59 - externals/grill/vasp/pd-help/vasp_mirr.pd | 45 - externals/grill/vasp/pd-help/vasp_miwindow.pd | 64 - externals/grill/vasp/pd-help/vasp_mod.pd | 48 - externals/grill/vasp/pd-help/vasp_mosc.pd | 80 - externals/grill/vasp/pd-help/vasp_mphasor.pd | 78 - externals/grill/vasp/pd-help/vasp_msize.pd | 38 - externals/grill/vasp/pd-help/vasp_mul.pd | 135 - externals/grill/vasp/pd-help/vasp_multi.pd | 20 - externals/grill/vasp/pd-help/vasp_mwindow.pd | 64 - externals/grill/vasp/pd-help/vasp_mxwindow.pd | 64 - externals/grill/vasp/pd-help/vasp_neq.pd | 52 - externals/grill/vasp/pd-help/vasp_noise.pd | 43 - externals/grill/vasp/pd-help/vasp_nonzero.pd | 160 - externals/grill/vasp/pd-help/vasp_offset.pd | 30 - externals/grill/vasp/pd-help/vasp_offsetd.pd | 28 - externals/grill/vasp/pd-help/vasp_offsetq.pd | 25 - externals/grill/vasp/pd-help/vasp_opt.pd | 71 - externals/grill/vasp/pd-help/vasp_osc.pd | 63 - externals/grill/vasp/pd-help/vasp_part.pd | 34 - externals/grill/vasp/pd-help/vasp_peaks.pd | 89 - externals/grill/vasp/pd-help/vasp_phasor.pd | 67 - externals/grill/vasp/pd-help/vasp_polar.pd | 90 - externals/grill/vasp/pd-help/vasp_pow.pd | 44 - externals/grill/vasp/pd-help/vasp_qamax.pd | 75 - externals/grill/vasp/pd-help/vasp_qamin.pd | 53 - externals/grill/vasp/pd-help/vasp_qchannel.pd | 10 - externals/grill/vasp/pd-help/vasp_qframes.pd | 27 - externals/grill/vasp/pd-help/vasp_qmax.pd | 44 - externals/grill/vasp/pd-help/vasp_qmin.pd | 44 - externals/grill/vasp/pd-help/vasp_qoffset.pd | 19 - externals/grill/vasp/pd-help/vasp_qrmax.pd | 99 - externals/grill/vasp/pd-help/vasp_qrmin.pd | 59 - externals/grill/vasp/pd-help/vasp_qsize.pd | 31 - externals/grill/vasp/pd-help/vasp_qsum.pd | 50 - externals/grill/vasp/pd-help/vasp_qvector.pd | 13 - externals/grill/vasp/pd-help/vasp_qvectors.pd | 17 - externals/grill/vasp/pd-help/vasp_radd.pd | 84 - externals/grill/vasp/pd-help/vasp_radio.pd | 28 - externals/grill/vasp/pd-help/vasp_rect.pd | 87 - externals/grill/vasp/pd-help/vasp_rfft.pd | 74 - externals/grill/vasp/pd-help/vasp_rframes.pd | 63 - externals/grill/vasp/pd-help/vasp_rgate.pd | 86 - externals/grill/vasp/pd-help/vasp_rifft.pd | 75 - externals/grill/vasp/pd-help/vasp_rmax.pd | 81 - externals/grill/vasp/pd-help/vasp_rmin.pd | 84 - externals/grill/vasp/pd-help/vasp_ropt.pd | 86 - externals/grill/vasp/pd-help/vasp_rot.pd | 48 - externals/grill/vasp/pd-help/vasp_rpeaks.pd | 94 - externals/grill/vasp/pd-help/vasp_rpow.pd | 83 - externals/grill/vasp/pd-help/vasp_rsize.pd | 37 - externals/grill/vasp/pd-help/vasp_rvalleys.pd | 91 - externals/grill/vasp/pd-help/vasp_set.pd | 93 - externals/grill/vasp/pd-help/vasp_sframes.pd | 191 - externals/grill/vasp/pd-help/vasp_shift.pd | 57 - externals/grill/vasp/pd-help/vasp_sign.pd | 42 - externals/grill/vasp/pd-help/vasp_size.pd | 43 - externals/grill/vasp/pd-help/vasp_soffset.pd | 211 - externals/grill/vasp/pd-help/vasp_spit.pd | 46 - externals/grill/vasp/pd-help/vasp_split.pd | 27 - externals/grill/vasp/pd-help/vasp_sqr.pd | 38 - externals/grill/vasp/pd-help/vasp_sqrt.pd | 38 - externals/grill/vasp/pd-help/vasp_ssqr.pd | 96 - externals/grill/vasp/pd-help/vasp_ssqrt.pd | 96 - externals/grill/vasp/pd-help/vasp_sub.pd | 54 - externals/grill/vasp/pd-help/vasp_subr.pd | 48 - externals/grill/vasp/pd-help/vasp_sync.pd | 81 - externals/grill/vasp/pd-help/vasp_tilt.pd | 100 - externals/grill/vasp/pd-help/vasp_update.pd | 36 - externals/grill/vasp/pd-help/vasp_v.pd | 50 - externals/grill/vasp/pd-help/vasp_valleys.pd | 86 - externals/grill/vasp/pd-help/vasp_vector.pd | 31 - externals/grill/vasp/pd-help/vasp_vectors.pd | 13 - externals/grill/vasp/pd-help/vasp_window.pd | 62 - externals/grill/vasp/pd-help/vasp_xmirr.pd | 86 - externals/grill/vasp/pd-help/vasp_xrot.pd | 48 - externals/grill/vasp/pd-help/vasp_xshift.pd | 57 - externals/grill/vasp/pd-help/vasp_xtilt.pd | 107 - externals/grill/vasp/pd-help/vasp_xwindow.pd | 61 - externals/grill/vasp/pd-test/granular1.pd | 341 -- externals/grill/vasp/pd-test/granular2.pd | 366 -- externals/grill/vasp/pd/VASP-HELP.pd | 1157 ------ externals/grill/vasp/pd/bass.aif | Bin 337210 -> 0 bytes externals/grill/vasp/pd/beat.aif | Bin 176468 -> 0 bytes externals/grill/vasp/pd/change2.pd | 25 - externals/grill/vasp/pd/filelist.pd | 24 - externals/grill/vasp/pd/filelisthandler.pd | 102 - externals/grill/vasp/pd/filter_example.pd | 190 - externals/grill/vasp/pd/filter_examplei.pd | 191 - externals/grill/vasp/pd/fly.aif | Bin 353412 -> 0 bytes externals/grill/vasp/pd/phase-random_example.pd | 86 - externals/grill/vasp/pd/plastic.aif | Bin 352518 -> 0 bytes externals/grill/vasp/pd/ringmod_example.pd | 63 - externals/grill/vasp/pd/rndup2.pd | 48 - externals/grill/vasp/pd/runden.pd | 27 - externals/grill/vasp/pd/synchrodisplay.pd | 13 - externals/grill/vasp/pd/vasp.cconj.pd | 18 - externals/grill/vasp/pd/vasp.cconv.pd | 53 - externals/grill/vasp/pd/vasp.clr0.pd | 12 - externals/grill/vasp/pd/vasp.conv.pd | 37 - externals/grill/vasp/pd/vasp.db2pow.pd | 18 - externals/grill/vasp/pd/vasp.defer.pd | 28 - externals/grill/vasp/pd/vasp.even.pd | 12 - externals/grill/vasp/pd/vasp.freeze.pd | 22 - externals/grill/vasp/pd/vasp.hilbert.pd | 28 - externals/grill/vasp/pd/vasp.im.pd | 6 - externals/grill/vasp/pd/vasp.lower.pd | 19 - externals/grill/vasp/pd/vasp.odd.pd | 10 - externals/grill/vasp/pd/vasp.opt.pd | 35 - externals/grill/vasp/pd/vasp.ov.pd | 10 - externals/grill/vasp/pd/vasp.parts.pd | 27 - externals/grill/vasp/pd/vasp.pwrap.pd | 10 - externals/grill/vasp/pd/vasp.qmean.pd | 20 - externals/grill/vasp/pd/vasp.re.pd | 6 - externals/grill/vasp/pd/vasp.rms.pd | 16 - externals/grill/vasp/pd/vasp.ropt.pd | 30 - externals/grill/vasp/pd/vasp.spin.pd | 22 - externals/grill/vasp/pd/vasp.upper.pd | 22 - externals/grill/vasp/pd/vaspset_examples.pd | 109 - externals/grill/vasp/pd/wavedisplay-select.pd | 617 --- externals/grill/vasp/pd/wavedisplay-simple.pd | 135 - externals/grill/vasp/pd/xtilt_example.pd | 88 - externals/grill/vasp/readme.txt | 110 - externals/grill/vasp/source/arg.cpp | 277 -- externals/grill/vasp/source/arg.h | 111 - externals/grill/vasp/source/buflib.cpp | 343 -- externals/grill/vasp/source/buflib.h | 37 - externals/grill/vasp/source/classes.cpp | 416 -- externals/grill/vasp/source/classes.h | 320 -- externals/grill/vasp/source/env.cpp | 153 - externals/grill/vasp/source/env.h | 76 - externals/grill/vasp/source/main.cpp | 216 - externals/grill/vasp/source/main.h | 94 - externals/grill/vasp/source/mixfft.cpp | 588 --- externals/grill/vasp/source/obj_chns.cpp | 160 - externals/grill/vasp/source/obj_frames.cpp | 241 -- externals/grill/vasp/source/obj_imm.cpp | 123 - externals/grill/vasp/source/obj_offs.cpp | 179 - externals/grill/vasp/source/obj_part.cpp | 115 - externals/grill/vasp/source/obj_peaks.cpp | 119 - externals/grill/vasp/source/obj_q.cpp | 124 - externals/grill/vasp/source/obj_radio.cpp | 59 - externals/grill/vasp/source/obj_size.cpp | 265 -- externals/grill/vasp/source/obj_split.cpp | 290 -- externals/grill/vasp/source/obj_sync.cpp | 130 - externals/grill/vasp/source/obj_vasp.cpp | 205 - externals/grill/vasp/source/obj_vecs.cpp | 111 - externals/grill/vasp/source/opbase.cpp | 85 - externals/grill/vasp/source/opbase.h | 47 - externals/grill/vasp/source/opdefs.h | 495 --- externals/grill/vasp/source/opfuns.h | 529 --- externals/grill/vasp/source/oploop.h | 95 - externals/grill/vasp/source/opparam.cpp | 255 -- externals/grill/vasp/source/opparam.h | 128 - externals/grill/vasp/source/oppermute.h | 121 - externals/grill/vasp/source/ops.h | 27 - externals/grill/vasp/source/ops_arith.cpp | 79 - externals/grill/vasp/source/ops_arith.h | 54 - externals/grill/vasp/source/ops_assign.cpp | 95 - externals/grill/vasp/source/ops_assign.h | 33 - externals/grill/vasp/source/ops_carith.cpp | 82 - externals/grill/vasp/source/ops_carith.h | 48 - externals/grill/vasp/source/ops_cmp.cpp | 49 - externals/grill/vasp/source/ops_cmp.h | 83 - externals/grill/vasp/source/ops_cplx.cpp | 56 - externals/grill/vasp/source/ops_cplx.h | 40 - externals/grill/vasp/source/ops_dft.cpp | 652 --- externals/grill/vasp/source/ops_dft.h | 25 - externals/grill/vasp/source/ops_feature.cpp | 226 - externals/grill/vasp/source/ops_feature.h | 29 - externals/grill/vasp/source/ops_flt.cpp | 205 - externals/grill/vasp/source/ops_flt.h | 41 - externals/grill/vasp/source/ops_gate.cpp | 63 - externals/grill/vasp/source/ops_gen.cpp | 266 -- externals/grill/vasp/source/ops_gen.h | 40 - externals/grill/vasp/source/ops_qminmax.cpp | 267 -- externals/grill/vasp/source/ops_rearr.cpp | 248 -- externals/grill/vasp/source/ops_rearr.h | 34 - externals/grill/vasp/source/ops_resmp.cpp | 275 -- externals/grill/vasp/source/ops_resmp.h | 28 - externals/grill/vasp/source/ops_search.cpp | 213 - externals/grill/vasp/source/ops_search.h | 29 - externals/grill/vasp/source/ops_trnsc.cpp | 52 - externals/grill/vasp/source/ops_trnsc.h | 43 - externals/grill/vasp/source/ops_wnd.cpp | 192 - externals/grill/vasp/source/ops_wnd.h | 41 - externals/grill/vasp/source/opvecs.cpp | 631 --- externals/grill/vasp/source/rdx2fft.cpp | 82 - externals/grill/vasp/source/rvfft.cpp | 357 -- externals/grill/vasp/source/util.cpp | 24 - externals/grill/vasp/source/util.h | 58 - externals/grill/vasp/source/vasp.cpp | 384 -- externals/grill/vasp/source/vasp.h | 161 - externals/grill/vasp/source/vasp.rsrc | 13 - externals/grill/vasp/source/vbuffer.cpp | 51 - externals/grill/vasp/source/vbuffer.h | 128 - externals/grill/vasp/source/vecblk.cpp | 60 - externals/grill/vasp/source/vecblk.h | 106 - externals/grill/vasp/todo.txt | 70 - externals/grill/vasp/todo/allgemein.txt | 42 - externals/grill/vasp/todo/marius.txt | 5 - externals/grill/vasp/todo/neue-objekte.txt | 3 - externals/grill/vasp/todo/patcher-boys.txt | 3 - externals/grill/vasp/todo/thomas.txt | 5 - externals/grill/vasp/todo/vasp-objects.csv | 164 - externals/grill/vasp/vasp.doxy | 188 - externals/grill/vasp/vasp.mcp | Bin 360200 -> 0 bytes externals/grill/vasp/vasp.vcproj | 2785 ------------- .../grill/vasp/vasp.xcodeproj/project.pbxproj | 507 --- externals/grill/vst/build/config-mac.def | 6 - externals/grill/vst/build/config-win.def | 3 - externals/grill/vst/build/gnumake-mac-gcc.inc | 3 - externals/grill/vst/build/nmake-win-msvc.inc | 2 - externals/grill/vst/gpl.txt | 346 -- externals/grill/vst/license.txt | 74 - externals/grill/vst/package.txt | 10 - externals/grill/vst/pd/vst~-help.pd | 449 -- externals/grill/vst/readme.txt | 78 - externals/grill/vst/src/editor.cpp | 27 - externals/grill/vst/src/editor.h | 26 - externals/grill/vst/src/editormac.hpp | 58 - externals/grill/vst/src/editorwin.hpp | 361 -- externals/grill/vst/src/main.cpp | 980 ----- externals/grill/vst/src/main.h | 28 - externals/grill/vst/src/vst.rc | 135 - externals/grill/vst/src/vstedit.cpp | 82 - externals/grill/vst/src/vsthost.cpp | 461 --- externals/grill/vst/src/vsthost.h | 357 -- externals/grill/vst/src/vstmaster.cpp | 282 -- externals/grill/vst/src/vstmidi.cpp | 52 - externals/grill/vst/src/vstparam.cpp | 106 - externals/grill/vst/vst.vcproj | 348 -- externals/grill/vst/vst.xcode/project.pbxproj | 422 -- externals/grill/xsample/.DS_Store | Bin 6148 -> 0 bytes externals/grill/xsample/gpl.txt | 346 -- externals/grill/xsample/license.txt | 51 - .../xsample/maxmsp/xsample-objectmappings.txt | 7 - externals/grill/xsample/maxmsp/xsample.help | Bin 19194 -> 0 bytes externals/grill/xsample/package.txt | 23 - externals/grill/xsample/pd-ex/xplaydemo.pd | 79 - externals/grill/xsample/pd-ex/xsampledemo.pd | 68 - externals/grill/xsample/pd/xgroove~-help.pd | 250 -- externals/grill/xsample/pd/xplay~-help.pd | 123 - externals/grill/xsample/pd/xrecord~-help.pd | 168 - externals/grill/xsample/readme.txt | 172 - externals/grill/xsample/source/groove.cpp | 810 ---- externals/grill/xsample/source/inter.cpp | 82 - externals/grill/xsample/source/inter.h | 420 -- externals/grill/xsample/source/main.cpp | 220 - externals/grill/xsample/source/main.h | 464 --- externals/grill/xsample/source/play.cpp | 151 - externals/grill/xsample/source/prefix.h | 15 - externals/grill/xsample/source/record.cpp | 497 --- externals/grill/xsample/source/xsample-Info.plist | 22 - externals/grill/xsample/source/xsample.rsrc | 29 - externals/grill/xsample/xsample.mcp | Bin 456081 -> 0 bytes externals/grill/xsample/xsample.vcproj | 683 --- .../grill/xsample/xsample.xcode/project.pbxproj | 625 --- .../xsample/xsample.xcodeproj/project.pbxproj | 529 --- 960 files changed, 125315 deletions(-) delete mode 100644 externals/grill/deljoin/deljoin-help.pd delete mode 100755 externals/grill/deljoin/deljoin.cw delete mode 100755 externals/grill/deljoin/deljoin.help delete mode 100644 externals/grill/deljoin/deljoin.vcproj delete mode 100644 externals/grill/deljoin/gpl.txt delete mode 100644 externals/grill/deljoin/license.txt delete mode 100644 externals/grill/deljoin/main.cpp delete mode 100644 externals/grill/deljoin/package.txt delete mode 100644 externals/grill/delsplit/delsplit-help.pd delete mode 100755 externals/grill/delsplit/delsplit.help delete mode 100755 externals/grill/delsplit/delsplit.mcp delete mode 100644 externals/grill/delsplit/delsplit.vcproj delete mode 100644 externals/grill/delsplit/gpl.txt delete mode 100644 externals/grill/delsplit/license.txt delete mode 100644 externals/grill/delsplit/main.cpp delete mode 100644 externals/grill/delsplit/package.txt delete mode 100644 externals/grill/dynext/dynext.vcproj delete mode 100644 externals/grill/dynext/gpl.txt delete mode 100644 externals/grill/dynext/license.txt delete mode 100644 externals/grill/dynext/package.txt delete mode 100644 externals/grill/dynext/pd/dyn~-help.pd delete mode 100644 externals/grill/dynext/readme.txt delete mode 100644 externals/grill/dynext/src/main.cpp delete mode 100755 externals/grill/fftease/fftease.mcp delete mode 100644 externals/grill/fftease/fftease.vcproj delete mode 100644 externals/grill/fftease/gpl.txt delete mode 100644 externals/grill/fftease/license.txt delete mode 100755 externals/grill/fftease/maxmsp/burrow~.help delete mode 100755 externals/grill/fftease/maxmsp/cross~.help delete mode 100755 externals/grill/fftease/maxmsp/dentist~.help delete mode 100755 externals/grill/fftease/maxmsp/disarray~.help delete mode 100755 externals/grill/fftease/maxmsp/drown~.help delete mode 100755 externals/grill/fftease/maxmsp/ether~.help delete mode 100644 externals/grill/fftease/maxmsp/fftease-objectmappings.txt delete mode 100755 externals/grill/fftease/maxmsp/fftease4.PICT delete mode 100644 externals/grill/fftease/media/nixon.aiff delete mode 100644 externals/grill/fftease/media/schubert.aiff delete mode 100644 externals/grill/fftease/package.txt delete mode 100644 externals/grill/fftease/pd/burrow~-help.pd delete mode 100644 externals/grill/fftease/pd/cross~-help.pd delete mode 100644 externals/grill/fftease/pd/dentist~-help.pd delete mode 100644 externals/grill/fftease/pd/disarray~-help.pd delete mode 100644 externals/grill/fftease/pd/drown~-help.pd delete mode 100644 externals/grill/fftease/pd/ether~-help.pd delete mode 100644 externals/grill/fftease/pd/morphine~-help.pd delete mode 100644 externals/grill/fftease/pd/scrape~-help.pd delete mode 100644 externals/grill/fftease/pd/shapee~-help.pd delete mode 100644 externals/grill/fftease/pd/swinger~-help.pd delete mode 100644 externals/grill/fftease/pd/taint~-help.pd delete mode 100644 externals/grill/fftease/pd/thresher~-help.pd delete mode 100644 externals/grill/fftease/pd/vacancy~-help.pd delete mode 100644 externals/grill/fftease/pd/xsyn~-help.pd delete mode 100644 externals/grill/fftease/readme.txt delete mode 100644 externals/grill/fftease/src/burrow~.cpp delete mode 100644 externals/grill/fftease/src/convert.c delete mode 100644 externals/grill/fftease/src/cross~.cpp delete mode 100644 externals/grill/fftease/src/dentist~.cpp delete mode 100644 externals/grill/fftease/src/disarray~.cpp delete mode 100644 externals/grill/fftease/src/drown~.cpp delete mode 100644 externals/grill/fftease/src/ether~.cpp delete mode 100644 externals/grill/fftease/src/fft.c delete mode 100644 externals/grill/fftease/src/fft4.c delete mode 100644 externals/grill/fftease/src/fftease.cpp delete mode 100644 externals/grill/fftease/src/fold.c delete mode 100644 externals/grill/fftease/src/leanconvert.c delete mode 100644 externals/grill/fftease/src/main.cpp delete mode 100644 externals/grill/fftease/src/main.h delete mode 100644 externals/grill/fftease/src/makewindows.c delete mode 100644 externals/grill/fftease/src/morphine~.cpp delete mode 100644 externals/grill/fftease/src/pv.h delete mode 100644 externals/grill/fftease/src/pvoc~.cpp delete mode 100644 externals/grill/fftease/src/scrape~.cpp delete mode 100644 externals/grill/fftease/src/shapee~.cpp delete mode 100644 externals/grill/fftease/src/swinger~.cpp delete mode 100644 externals/grill/fftease/src/taint~.cpp delete mode 100644 externals/grill/fftease/src/thresher~.cpp delete mode 100644 externals/grill/fftease/src/vacancy~.cpp delete mode 100644 externals/grill/fftease/src/xsyn~.cpp delete mode 100644 externals/grill/flext/Doxyfile delete mode 100755 externals/grill/flext/Makefile.am delete mode 100755 externals/grill/flext/bootstrap.sh delete mode 100644 externals/grill/flext/build.bat delete mode 100644 externals/grill/flext/build.sh delete mode 100644 externals/grill/flext/build.txt delete mode 100644 externals/grill/flext/build/bmake-win-bcc.inc delete mode 100644 externals/grill/flext/build/config-lnx.def delete mode 100644 externals/grill/flext/build/config-mac.def delete mode 100644 externals/grill/flext/build/config-win.def delete mode 100644 externals/grill/flext/build/gnumake-lnx-gcc.inc delete mode 100644 externals/grill/flext/build/gnumake-lnx-icc.inc delete mode 100644 externals/grill/flext/build/gnumake-mac-gcc.inc delete mode 100644 externals/grill/flext/build/gnumake-win-cygwin.inc delete mode 100644 externals/grill/flext/build/gnumake-win-mingw.inc delete mode 100644 externals/grill/flext/build/nmake-win-msvc.inc delete mode 100644 externals/grill/flext/buildsys/bmake-ext.inc delete mode 100644 externals/grill/flext/buildsys/bmake-flext.inc delete mode 100644 externals/grill/flext/buildsys/bmake-sub.mak delete mode 100644 externals/grill/flext/buildsys/bmake.inc delete mode 100644 externals/grill/flext/buildsys/bmake.mak delete mode 100644 externals/grill/flext/buildsys/build-bcc.bat delete mode 100644 externals/grill/flext/buildsys/build-cygwin.sh delete mode 100644 externals/grill/flext/buildsys/build-gcc.sh delete mode 100644 externals/grill/flext/buildsys/build-icc.sh delete mode 100644 externals/grill/flext/buildsys/build-mingw.bat delete mode 100644 externals/grill/flext/buildsys/build-msvc.bat delete mode 100644 externals/grill/flext/buildsys/gnumake-ext.inc delete mode 100644 externals/grill/flext/buildsys/gnumake-flext.inc delete mode 100644 externals/grill/flext/buildsys/gnumake-sub.mak delete mode 100644 externals/grill/flext/buildsys/gnumake.inc delete mode 100644 externals/grill/flext/buildsys/gnumake.mak delete mode 100644 externals/grill/flext/buildsys/lnx/gnumake-gcc-ext.inc delete mode 100644 externals/grill/flext/buildsys/lnx/gnumake-gcc-flext.inc delete mode 100644 externals/grill/flext/buildsys/lnx/gnumake-gcc.inc delete mode 100644 externals/grill/flext/buildsys/lnx/gnumake-icc-ext.inc delete mode 100644 externals/grill/flext/buildsys/lnx/gnumake-icc-flext.inc delete mode 100644 externals/grill/flext/buildsys/lnx/gnumake-icc.inc delete mode 100644 externals/grill/flext/buildsys/lnx/pd/config-gcc.def delete mode 100644 externals/grill/flext/buildsys/lnx/pd/config-icc.def delete mode 100644 externals/grill/flext/buildsys/lnx/pd/gnumake-gcc-ext.inc delete mode 100644 externals/grill/flext/buildsys/lnx/pd/gnumake-gcc-flext.inc delete mode 100644 externals/grill/flext/buildsys/lnx/pd/gnumake-gcc.inc delete mode 100644 externals/grill/flext/buildsys/lnx/pd/gnumake-icc-ext.inc delete mode 100644 externals/grill/flext/buildsys/lnx/pd/gnumake-icc-flext.inc delete mode 100644 externals/grill/flext/buildsys/lnx/pd/gnumake-icc.inc delete mode 100644 externals/grill/flext/buildsys/mac/gnumake-gcc-ext.inc delete mode 100644 externals/grill/flext/buildsys/mac/gnumake-gcc-flext.inc delete mode 100644 externals/grill/flext/buildsys/mac/gnumake-gcc-targets.inc delete mode 100644 externals/grill/flext/buildsys/mac/gnumake-gcc.inc delete mode 100644 externals/grill/flext/buildsys/mac/max/config-gcc.def delete mode 100644 externals/grill/flext/buildsys/mac/max/gnumake-gcc-ext.inc delete mode 100644 externals/grill/flext/buildsys/mac/max/gnumake-gcc-flext.inc delete mode 100644 externals/grill/flext/buildsys/mac/max/gnumake-gcc.inc delete mode 100644 externals/grill/flext/buildsys/mac/pd/config-gcc.def delete mode 100644 externals/grill/flext/buildsys/mac/pd/gnumake-gcc-ext.inc delete mode 100644 externals/grill/flext/buildsys/mac/pd/gnumake-gcc-flext.inc delete mode 100644 externals/grill/flext/buildsys/mac/pd/gnumake-gcc.inc delete mode 100644 externals/grill/flext/buildsys/nmake-ext.inc delete mode 100644 externals/grill/flext/buildsys/nmake-flext.inc delete mode 100644 externals/grill/flext/buildsys/nmake-shlib.inc delete mode 100644 externals/grill/flext/buildsys/nmake-sub.mak delete mode 100644 externals/grill/flext/buildsys/nmake.inc delete mode 100644 externals/grill/flext/buildsys/nmake.mak delete mode 100644 externals/grill/flext/buildsys/readme.txt delete mode 100644 externals/grill/flext/buildsys/targets-ext.inc delete mode 100644 externals/grill/flext/buildsys/targets-flext.inc delete mode 100644 externals/grill/flext/buildsys/targets-shlib.inc delete mode 100644 externals/grill/flext/buildsys/targets.inc delete mode 100644 externals/grill/flext/buildsys/version.inc delete mode 100644 externals/grill/flext/buildsys/win/bmake-bcc-ext.inc delete mode 100644 externals/grill/flext/buildsys/win/bmake-bcc-flext.inc delete mode 100644 externals/grill/flext/buildsys/win/bmake-bcc.inc delete mode 100644 externals/grill/flext/buildsys/win/gnumake-cygwin-ext.inc delete mode 100644 externals/grill/flext/buildsys/win/gnumake-cygwin-flext.inc delete mode 100644 externals/grill/flext/buildsys/win/gnumake-cygwin.inc delete mode 100644 externals/grill/flext/buildsys/win/gnumake-mingw-ext.inc delete mode 100644 externals/grill/flext/buildsys/win/gnumake-mingw-flext.inc delete mode 100644 externals/grill/flext/buildsys/win/gnumake-mingw.inc delete mode 100644 externals/grill/flext/buildsys/win/max/config-cygwin.def delete mode 100644 externals/grill/flext/buildsys/win/max/config-mingw.def delete mode 100644 externals/grill/flext/buildsys/win/max/config-msvc.def delete mode 100644 externals/grill/flext/buildsys/win/max/gnumake-cygwin-ext.inc delete mode 100644 externals/grill/flext/buildsys/win/max/gnumake-cygwin-flext.inc delete mode 100644 externals/grill/flext/buildsys/win/max/gnumake-cygwin.inc delete mode 100644 externals/grill/flext/buildsys/win/max/gnumake-mingw-ext.inc delete mode 100644 externals/grill/flext/buildsys/win/max/gnumake-mingw-flext.inc delete mode 100644 externals/grill/flext/buildsys/win/max/gnumake-mingw.inc delete mode 100644 externals/grill/flext/buildsys/win/max/nmake-msvc-ext.inc delete mode 100644 externals/grill/flext/buildsys/win/max/nmake-msvc-flext.inc delete mode 100644 externals/grill/flext/buildsys/win/max/nmake-msvc.inc delete mode 100644 externals/grill/flext/buildsys/win/nmake-msvc-ext.inc delete mode 100644 externals/grill/flext/buildsys/win/nmake-msvc-flext.inc delete mode 100644 externals/grill/flext/buildsys/win/nmake-msvc-shlib.inc delete mode 100644 externals/grill/flext/buildsys/win/nmake-msvc.inc delete mode 100644 externals/grill/flext/buildsys/win/pd/bmake-bcc-ext.inc delete mode 100644 externals/grill/flext/buildsys/win/pd/bmake-bcc-flext.inc delete mode 100644 externals/grill/flext/buildsys/win/pd/bmake-bcc-shlib.inc delete mode 100644 externals/grill/flext/buildsys/win/pd/bmake-bcc.inc delete mode 100644 externals/grill/flext/buildsys/win/pd/config-bcc.def delete mode 100644 externals/grill/flext/buildsys/win/pd/config-cygwin.def delete mode 100644 externals/grill/flext/buildsys/win/pd/config-mingw.def delete mode 100644 externals/grill/flext/buildsys/win/pd/config-msvc.def delete mode 100644 externals/grill/flext/buildsys/win/pd/gnumake-cygwin-ext.inc delete mode 100644 externals/grill/flext/buildsys/win/pd/gnumake-cygwin-flext.inc delete mode 100644 externals/grill/flext/buildsys/win/pd/gnumake-cygwin-shlib.inc delete mode 100644 externals/grill/flext/buildsys/win/pd/gnumake-cygwin.inc delete mode 100644 externals/grill/flext/buildsys/win/pd/gnumake-mingw-ext.inc delete mode 100644 externals/grill/flext/buildsys/win/pd/gnumake-mingw-flext.inc delete mode 100644 externals/grill/flext/buildsys/win/pd/gnumake-mingw-shlib.inc delete mode 100644 externals/grill/flext/buildsys/win/pd/gnumake-mingw.inc delete mode 100644 externals/grill/flext/buildsys/win/pd/nmake-msvc-ext.inc delete mode 100644 externals/grill/flext/buildsys/win/pd/nmake-msvc-flext.inc delete mode 100644 externals/grill/flext/buildsys/win/pd/nmake-msvc-shlib.inc delete mode 100644 externals/grill/flext/buildsys/win/pd/nmake-msvc.inc delete mode 100644 externals/grill/flext/changes.txt delete mode 100755 externals/grill/flext/configure.ac delete mode 100644 externals/grill/flext/examples/examples.dsw delete mode 100644 externals/grill/flext/examples/pd/ex-henon.pd delete mode 100644 externals/grill/flext/examples/source/henon.cpp delete mode 100644 externals/grill/flext/examples/source/henon.cw delete mode 100644 externals/grill/flext/examples/source/henon.dsp delete mode 100644 externals/grill/flext/flext.mcp delete mode 100644 externals/grill/flext/flext.vcproj delete mode 100755 externals/grill/flext/flext.xcode/project.pbxproj delete mode 100755 externals/grill/flext/flext.xcodeproj/project.pbxproj delete mode 100644 externals/grill/flext/gpl.txt delete mode 100644 externals/grill/flext/license.txt delete mode 100644 externals/grill/flext/notes.txt delete mode 100644 externals/grill/flext/package.txt delete mode 100644 externals/grill/flext/readme.txt delete mode 100755 externals/grill/flext/source/Makefile.am delete mode 100644 externals/grill/flext/source/flatom.cpp delete mode 100644 externals/grill/flext/source/flatom_part.cpp delete mode 100644 externals/grill/flext/source/flatom_pr.cpp delete mode 100644 externals/grill/flext/source/flattr.cpp delete mode 100644 externals/grill/flext/source/flattr_ed.cpp delete mode 100644 externals/grill/flext/source/flbase.cpp delete mode 100644 externals/grill/flext/source/flbase.h delete mode 100644 externals/grill/flext/source/flbind.cpp delete mode 100644 externals/grill/flext/source/flbuf.cpp delete mode 100644 externals/grill/flext/source/flclass.h delete mode 100644 externals/grill/flext/source/flcontainers.h delete mode 100644 externals/grill/flext/source/flcwmax-thr.h delete mode 100644 externals/grill/flext/source/flcwmax-x-thr.h delete mode 100644 externals/grill/flext/source/flcwmax-x.h delete mode 100644 externals/grill/flext/source/flcwmax.h delete mode 100644 externals/grill/flext/source/flcwpd-x-thr.h delete mode 100644 externals/grill/flext/source/flcwpd-x.h delete mode 100644 externals/grill/flext/source/fldefs.h delete mode 100644 externals/grill/flext/source/fldefs_attradd.h delete mode 100644 externals/grill/flext/source/fldefs_attrcb.h delete mode 100644 externals/grill/flext/source/fldefs_attrvar.h delete mode 100644 externals/grill/flext/source/fldefs_hdr.h delete mode 100644 externals/grill/flext/source/fldefs_methadd.h delete mode 100644 externals/grill/flext/source/fldefs_methbind.h delete mode 100644 externals/grill/flext/source/fldefs_methcall.h delete mode 100644 externals/grill/flext/source/fldefs_methcb.h delete mode 100644 externals/grill/flext/source/fldefs_meththr.h delete mode 100644 externals/grill/flext/source/fldefs_setup.h delete mode 100644 externals/grill/flext/source/fldoxygen.h delete mode 100644 externals/grill/flext/source/fldsp.cpp delete mode 100644 externals/grill/flext/source/fldsp.h delete mode 100644 externals/grill/flext/source/flext.cpp delete mode 100644 externals/grill/flext/source/flext.h delete mode 100644 externals/grill/flext/source/flfeatures.h delete mode 100644 externals/grill/flext/source/flinternal.h delete mode 100644 externals/grill/flext/source/flitem.cpp delete mode 100644 externals/grill/flext/source/fllib.cpp delete mode 100644 externals/grill/flext/source/flmap.cpp delete mode 100644 externals/grill/flext/source/flmap.h delete mode 100644 externals/grill/flext/source/flmeth.cpp delete mode 100644 externals/grill/flext/source/flmsg.cpp delete mode 100644 externals/grill/flext/source/flmspbuffer.h delete mode 100644 externals/grill/flext/source/flout.cpp delete mode 100644 externals/grill/flext/source/flprefix.h delete mode 100644 externals/grill/flext/source/flproxy.cpp delete mode 100644 externals/grill/flext/source/flqueue.cpp delete mode 100644 externals/grill/flext/source/flsimd.cpp delete mode 100644 externals/grill/flext/source/flsndobj.cpp delete mode 100644 externals/grill/flext/source/flsndobj.h delete mode 100644 externals/grill/flext/source/flstdc.h delete mode 100644 externals/grill/flext/source/flstk.cpp delete mode 100644 externals/grill/flext/source/flstk.h delete mode 100644 externals/grill/flext/source/flsupport.cpp delete mode 100644 externals/grill/flext/source/flsupport.h delete mode 100644 externals/grill/flext/source/flthr.cpp delete mode 100644 externals/grill/flext/source/fltimer.cpp delete mode 100644 externals/grill/flext/source/flutil.cpp delete mode 100644 externals/grill/flext/source/flxlet.cpp delete mode 100644 externals/grill/flext/tutorial/Makefile.am delete mode 100644 externals/grill/flext/tutorial/adv1/Makefile.am delete mode 100755 externals/grill/flext/tutorial/adv1/adv1.mcp delete mode 100644 externals/grill/flext/tutorial/adv1/adv1.vcproj delete mode 100644 externals/grill/flext/tutorial/adv1/main.cpp delete mode 100644 externals/grill/flext/tutorial/adv1/package.txt delete mode 100644 externals/grill/flext/tutorial/adv2/Makefile.am delete mode 100755 externals/grill/flext/tutorial/adv2/adv2.mcp delete mode 100644 externals/grill/flext/tutorial/adv2/adv2.vcproj delete mode 100644 externals/grill/flext/tutorial/adv2/main.cpp delete mode 100644 externals/grill/flext/tutorial/adv2/package.txt delete mode 100644 externals/grill/flext/tutorial/adv3/Makefile.am delete mode 100755 externals/grill/flext/tutorial/adv3/adv3.mcp delete mode 100644 externals/grill/flext/tutorial/adv3/adv3.vcproj delete mode 100644 externals/grill/flext/tutorial/adv3/main.cpp delete mode 100644 externals/grill/flext/tutorial/adv3/package.txt delete mode 100644 externals/grill/flext/tutorial/attr1/Makefile.am delete mode 100755 externals/grill/flext/tutorial/attr1/attr1.mcp delete mode 100644 externals/grill/flext/tutorial/attr1/attr1.vcproj delete mode 100644 externals/grill/flext/tutorial/attr1/main.cpp delete mode 100644 externals/grill/flext/tutorial/attr1/package.txt delete mode 100644 externals/grill/flext/tutorial/attr2/Makefile.am delete mode 100755 externals/grill/flext/tutorial/attr2/attr2.mcp delete mode 100644 externals/grill/flext/tutorial/attr2/attr2.vcproj delete mode 100644 externals/grill/flext/tutorial/attr2/main.cpp delete mode 100644 externals/grill/flext/tutorial/attr2/package.txt delete mode 100644 externals/grill/flext/tutorial/attr3/Makefile.am delete mode 100755 externals/grill/flext/tutorial/attr3/attr3.mcp delete mode 100644 externals/grill/flext/tutorial/attr3/attr3.vcproj delete mode 100644 externals/grill/flext/tutorial/attr3/main.cpp delete mode 100644 externals/grill/flext/tutorial/attr3/package.txt delete mode 100644 externals/grill/flext/tutorial/bind1/Makefile.am delete mode 100755 externals/grill/flext/tutorial/bind1/bind1.mcp delete mode 100644 externals/grill/flext/tutorial/bind1/bind1.vcproj delete mode 100644 externals/grill/flext/tutorial/bind1/main.cpp delete mode 100644 externals/grill/flext/tutorial/bind1/package.txt delete mode 100644 externals/grill/flext/tutorial/buffer1/Makefile.am delete mode 100755 externals/grill/flext/tutorial/buffer1/buffer1.mcp delete mode 100644 externals/grill/flext/tutorial/buffer1/buffer1.vcproj delete mode 100644 externals/grill/flext/tutorial/buffer1/main.cpp delete mode 100644 externals/grill/flext/tutorial/buffer1/package.txt delete mode 100644 externals/grill/flext/tutorial/build.bat delete mode 100644 externals/grill/flext/tutorial/build.sh delete mode 100644 externals/grill/flext/tutorial/gpl.txt delete mode 100644 externals/grill/flext/tutorial/lib1/Makefile.am delete mode 100755 externals/grill/flext/tutorial/lib1/lib1.mcp delete mode 100644 externals/grill/flext/tutorial/lib1/lib1.vcproj delete mode 100644 externals/grill/flext/tutorial/lib1/main.cpp delete mode 100644 externals/grill/flext/tutorial/lib1/package.txt delete mode 100644 externals/grill/flext/tutorial/license.txt delete mode 100644 externals/grill/flext/tutorial/maxmsp/Makefile.am delete mode 100755 externals/grill/flext/tutorial/maxmsp/ex-adv1.pat delete mode 100755 externals/grill/flext/tutorial/maxmsp/ex-adv2.pat delete mode 100755 externals/grill/flext/tutorial/maxmsp/ex-adv3.pat delete mode 100755 externals/grill/flext/tutorial/maxmsp/ex-attr1.pat delete mode 100755 externals/grill/flext/tutorial/maxmsp/ex-attr2.pat delete mode 100755 externals/grill/flext/tutorial/maxmsp/ex-attr3.pat delete mode 100755 externals/grill/flext/tutorial/maxmsp/ex-bind1.pat delete mode 100755 externals/grill/flext/tutorial/maxmsp/ex-buffer1.pat delete mode 100755 externals/grill/flext/tutorial/maxmsp/ex-lib1.pat delete mode 100755 externals/grill/flext/tutorial/maxmsp/ex-signal1.pat delete mode 100755 externals/grill/flext/tutorial/maxmsp/ex-signal2.pat delete mode 100755 externals/grill/flext/tutorial/maxmsp/ex-simple1.pat delete mode 100755 externals/grill/flext/tutorial/maxmsp/ex-simple2.pat delete mode 100755 externals/grill/flext/tutorial/maxmsp/ex-simple3.pat delete mode 100755 externals/grill/flext/tutorial/maxmsp/ex-thread1.pat delete mode 100755 externals/grill/flext/tutorial/maxmsp/ex-thread2.pat delete mode 100755 externals/grill/flext/tutorial/maxmsp/ex-timer1.pat delete mode 100644 externals/grill/flext/tutorial/pd/Makefile.am delete mode 100644 externals/grill/flext/tutorial/pd/ex-adv1.pd delete mode 100644 externals/grill/flext/tutorial/pd/ex-adv2.pd delete mode 100644 externals/grill/flext/tutorial/pd/ex-adv3.pd delete mode 100644 externals/grill/flext/tutorial/pd/ex-attr1.pd delete mode 100644 externals/grill/flext/tutorial/pd/ex-attr2.pd delete mode 100644 externals/grill/flext/tutorial/pd/ex-attr3.pd delete mode 100644 externals/grill/flext/tutorial/pd/ex-bind1.pd delete mode 100644 externals/grill/flext/tutorial/pd/ex-buffer1.pd delete mode 100644 externals/grill/flext/tutorial/pd/ex-lib1.pd delete mode 100644 externals/grill/flext/tutorial/pd/ex-signal1.pd delete mode 100644 externals/grill/flext/tutorial/pd/ex-signal2.pd delete mode 100644 externals/grill/flext/tutorial/pd/ex-simple1.pd delete mode 100644 externals/grill/flext/tutorial/pd/ex-simple2.pd delete mode 100644 externals/grill/flext/tutorial/pd/ex-simple3.pd delete mode 100644 externals/grill/flext/tutorial/pd/ex-sndobj1.pd delete mode 100644 externals/grill/flext/tutorial/pd/ex-stk1.pd delete mode 100644 externals/grill/flext/tutorial/pd/ex-stk2.pd delete mode 100644 externals/grill/flext/tutorial/pd/ex-thread1.pd delete mode 100644 externals/grill/flext/tutorial/pd/ex-thread2.pd delete mode 100644 externals/grill/flext/tutorial/pd/ex-timer1.pd delete mode 100644 externals/grill/flext/tutorial/readme.txt delete mode 100644 externals/grill/flext/tutorial/signal1/Makefile.am delete mode 100644 externals/grill/flext/tutorial/signal1/main.cpp delete mode 100644 externals/grill/flext/tutorial/signal1/package.txt delete mode 100644 externals/grill/flext/tutorial/signal1/signal1.mcp delete mode 100644 externals/grill/flext/tutorial/signal1/signal1.vcproj delete mode 100644 externals/grill/flext/tutorial/signal2/Makefile.am delete mode 100644 externals/grill/flext/tutorial/signal2/main.cpp delete mode 100644 externals/grill/flext/tutorial/signal2/package.txt delete mode 100644 externals/grill/flext/tutorial/signal2/signal2.mcp delete mode 100644 externals/grill/flext/tutorial/signal2/signal2.vcproj delete mode 100644 externals/grill/flext/tutorial/simple1/Makefile.am delete mode 100644 externals/grill/flext/tutorial/simple1/main.cpp delete mode 100644 externals/grill/flext/tutorial/simple1/package.txt delete mode 100755 externals/grill/flext/tutorial/simple1/simple1.mcp delete mode 100644 externals/grill/flext/tutorial/simple1/simple1.vcproj delete mode 100644 externals/grill/flext/tutorial/simple2/Makefile.am delete mode 100644 externals/grill/flext/tutorial/simple2/main.cpp delete mode 100644 externals/grill/flext/tutorial/simple2/package.txt delete mode 100755 externals/grill/flext/tutorial/simple2/simple2.mcp delete mode 100644 externals/grill/flext/tutorial/simple2/simple2.vcproj delete mode 100644 externals/grill/flext/tutorial/simple3/Makefile.am delete mode 100644 externals/grill/flext/tutorial/simple3/main.cpp delete mode 100644 externals/grill/flext/tutorial/simple3/package.txt delete mode 100644 externals/grill/flext/tutorial/simple3/simple3.mcp delete mode 100644 externals/grill/flext/tutorial/simple3/simple3.vcproj delete mode 100644 externals/grill/flext/tutorial/sndobj1/Makefile.am delete mode 100644 externals/grill/flext/tutorial/sndobj1/main.cpp delete mode 100644 externals/grill/flext/tutorial/sndobj1/package.txt delete mode 100644 externals/grill/flext/tutorial/sndobj1/sndobj1.mcp delete mode 100644 externals/grill/flext/tutorial/sndobj1/sndobj1.vcproj delete mode 100644 externals/grill/flext/tutorial/stk1/Makefile.am delete mode 100644 externals/grill/flext/tutorial/stk1/main.cpp delete mode 100644 externals/grill/flext/tutorial/stk1/package.txt delete mode 100644 externals/grill/flext/tutorial/stk1/stk1.vcproj delete mode 100644 externals/grill/flext/tutorial/stk2/Makefile.am delete mode 100644 externals/grill/flext/tutorial/stk2/main.cpp delete mode 100644 externals/grill/flext/tutorial/stk2/package.txt delete mode 100644 externals/grill/flext/tutorial/stk2/stk2.vcproj delete mode 100644 externals/grill/flext/tutorial/thread1/Makefile.am delete mode 100644 externals/grill/flext/tutorial/thread1/main.cpp delete mode 100644 externals/grill/flext/tutorial/thread1/package.txt delete mode 100644 externals/grill/flext/tutorial/thread1/thread1.mcp delete mode 100644 externals/grill/flext/tutorial/thread1/thread1.vcproj delete mode 100644 externals/grill/flext/tutorial/thread2/Makefile.am delete mode 100644 externals/grill/flext/tutorial/thread2/main.cpp delete mode 100644 externals/grill/flext/tutorial/thread2/package.txt delete mode 100755 externals/grill/flext/tutorial/thread2/thread2.mcp delete mode 100644 externals/grill/flext/tutorial/thread2/thread2.vcproj delete mode 100644 externals/grill/flext/tutorial/timer1/Makefile.am delete mode 100644 externals/grill/flext/tutorial/timer1/main.cpp delete mode 100644 externals/grill/flext/tutorial/timer1/package.txt delete mode 100755 externals/grill/flext/tutorial/timer1/timer1.mcp delete mode 100644 externals/grill/flext/tutorial/timer1/timer1.vcproj delete mode 100644 externals/grill/flext/tutorial/tutorial.sln delete mode 100644 externals/grill/guitest/build-pd-linux.sh delete mode 100644 externals/grill/guitest/config-pd-linux.txt delete mode 100644 externals/grill/guitest/flgui.cpp delete mode 100644 externals/grill/guitest/flgui.h delete mode 100644 externals/grill/guitest/flguiobj.cpp delete mode 100644 externals/grill/guitest/flguiobj.h delete mode 100644 externals/grill/guitest/guitest.vcproj delete mode 100644 externals/grill/guitest/main.cpp delete mode 100644 externals/grill/guitest/make-files.txt delete mode 100644 externals/grill/guitest/makefile.pd-linux delete mode 100644 externals/grill/guitest/pd/guitest1.pd delete mode 100644 externals/grill/namedobjs/gpl.txt delete mode 100644 externals/grill/namedobjs/license.txt delete mode 100644 externals/grill/namedobjs/main.cpp delete mode 100755 externals/grill/namedobjs/namedobjs.cw delete mode 100755 externals/grill/namedobjs/namedobjs.help delete mode 100755 externals/grill/namedobjs/namedobjs.mpw delete mode 100644 externals/grill/namedobjs/readme.txt delete mode 100644 externals/grill/pool/gpl.txt delete mode 100644 externals/grill/pool/license.txt delete mode 100644 externals/grill/pool/package.txt delete mode 100644 externals/grill/pool/pool-0.2.dtd delete mode 100644 externals/grill/pool/pool-help.pd delete mode 100755 externals/grill/pool/pool.help delete mode 100755 externals/grill/pool/pool.mcp delete mode 100644 externals/grill/pool/pool.vcproj delete mode 100644 externals/grill/pool/readme.txt delete mode 100644 externals/grill/pool/source/data.cpp delete mode 100644 externals/grill/pool/source/main.cpp delete mode 100644 externals/grill/pool/source/pool.cpp delete mode 100644 externals/grill/pool/source/pool.h delete mode 100644 externals/grill/prepend/gpl.txt delete mode 100644 externals/grill/prepend/license.txt delete mode 100644 externals/grill/prepend/main.cpp delete mode 100644 externals/grill/prepend/makefile.bcc delete mode 100644 externals/grill/prepend/makefile.pd-linux delete mode 100644 externals/grill/prepend/prepend.dsp delete mode 100644 externals/grill/prepend/prepend.vcproj delete mode 100644 externals/grill/py/build/config-lnx.def delete mode 100644 externals/grill/py/build/config-mac.def delete mode 100644 externals/grill/py/build/config-win.def delete mode 100644 externals/grill/py/build/gnumake-lnx-gcc.inc delete mode 100644 externals/grill/py/build/gnumake-mac-gcc.inc delete mode 100644 externals/grill/py/build/gnumake-win-cygwin.inc delete mode 100644 externals/grill/py/build/nmake-win-msvc.inc delete mode 100644 externals/grill/py/gpl.txt delete mode 100644 externals/grill/py/license.txt delete mode 100644 externals/grill/py/maxmsp/py-objectmappings.txt delete mode 100644 externals/grill/py/maxmsp/thread-1.mxb delete mode 100644 externals/grill/py/package.txt delete mode 100644 externals/grill/py/pd/attr-1.pd delete mode 100644 externals/grill/py/pd/buffer-1.pd delete mode 100644 externals/grill/py/pd/buffer-2.pd delete mode 100644 externals/grill/py/pd/builtins-1.pd delete mode 100644 externals/grill/py/pd/methods-1.pd delete mode 100644 externals/grill/py/pd/methods-2.pd delete mode 100644 externals/grill/py/pd/pak.pd delete mode 100644 externals/grill/py/pd/script-1.pd delete mode 100644 externals/grill/py/pd/sendrecv-1.pd delete mode 100644 externals/grill/py/pd/sendrecv-2.pd delete mode 100644 externals/grill/py/pd/sendrecv-3.pd delete mode 100644 externals/grill/py/pd/sig-1.pd delete mode 100644 externals/grill/py/pd/sig-2.pd delete mode 100644 externals/grill/py/pd/simple-1.pd delete mode 100644 externals/grill/py/pd/simple-2.pd delete mode 100644 externals/grill/py/pd/simple-3.pd delete mode 100644 externals/grill/py/pd/tcltk.pd delete mode 100644 externals/grill/py/pd/thread-1.pd delete mode 100644 externals/grill/py/py.vcproj delete mode 100644 externals/grill/py/py.xcode/project.pbxproj delete mode 100644 externals/grill/py/py.xcodeproj/project.pbxproj delete mode 100644 externals/grill/py/readme.txt delete mode 100644 externals/grill/py/scripts/buffer.py delete mode 100644 externals/grill/py/scripts/pak.py delete mode 100644 externals/grill/py/scripts/script.py delete mode 100644 externals/grill/py/scripts/sendrecv.py delete mode 100644 externals/grill/py/scripts/sig.py delete mode 100644 externals/grill/py/scripts/simple.py delete mode 100644 externals/grill/py/scripts/tcltk.py delete mode 100644 externals/grill/py/scripts/threads.py delete mode 100644 externals/grill/py/source/bound.cpp delete mode 100644 externals/grill/py/source/clmeth.cpp delete mode 100644 externals/grill/py/source/main.cpp delete mode 100644 externals/grill/py/source/main.h delete mode 100644 externals/grill/py/source/modmeth.cpp delete mode 100644 externals/grill/py/source/py.cpp delete mode 100644 externals/grill/py/source/pyargs.cpp delete mode 100644 externals/grill/py/source/pyatom.cpp delete mode 100644 externals/grill/py/source/pyatom.h delete mode 100644 externals/grill/py/source/pybase.cpp delete mode 100644 externals/grill/py/source/pybase.h delete mode 100644 externals/grill/py/source/pybuffer.cpp delete mode 100644 externals/grill/py/source/pybuffer.h delete mode 100644 externals/grill/py/source/pybundle.cpp delete mode 100644 externals/grill/py/source/pybundle.h delete mode 100644 externals/grill/py/source/pydsp.cpp delete mode 100644 externals/grill/py/source/pyext.cpp delete mode 100644 externals/grill/py/source/pyext.h delete mode 100644 externals/grill/py/source/pymeth.cpp delete mode 100644 externals/grill/py/source/pyprefix.h delete mode 100644 externals/grill/py/source/pysymbol.cpp delete mode 100644 externals/grill/py/source/pysymbol.h delete mode 100644 externals/grill/py/source/register.cpp delete mode 100644 externals/grill/vasp/changes.txt delete mode 100644 externals/grill/vasp/gpl.txt delete mode 100644 externals/grill/vasp/license.txt delete mode 100755 externals/grill/vasp/max-ex/convolve delete mode 100755 externals/grill/vasp/max-ex/freeze delete mode 100755 externals/grill/vasp/max-help/vasp.abs.help delete mode 100755 externals/grill/vasp/max-help/vasp.add.help delete mode 100755 externals/grill/vasp/max-help/vasp.amaxq.help delete mode 100755 externals/grill/vasp/max-help/vasp.aminq.help delete mode 100755 externals/grill/vasp/max-help/vasp.beveldn.help delete mode 100755 externals/grill/vasp/max-help/vasp.bevelup.help delete mode 100755 externals/grill/vasp/max-help/vasp.cdiv.help delete mode 100755 externals/grill/vasp/max-help/vasp.cfft.help delete mode 100755 externals/grill/vasp/max-help/vasp.chk.help delete mode 100755 externals/grill/vasp/max-help/vasp.cifft.help delete mode 100755 externals/grill/vasp/max-help/vasp.cmul.help delete mode 100755 externals/grill/vasp/max-help/vasp.cnoise.help delete mode 100755 externals/grill/vasp/max-help/vasp.cnorm.help delete mode 100755 externals/grill/vasp/max-help/vasp.cosc.help delete mode 100755 externals/grill/vasp/max-help/vasp.cplus.help delete mode 100755 externals/grill/vasp/max-help/vasp.cpowi.help delete mode 100755 externals/grill/vasp/max-help/vasp.crsub.help delete mode 100755 externals/grill/vasp/max-help/vasp.cset.help delete mode 100755 externals/grill/vasp/max-help/vasp.csqr.help delete mode 100755 externals/grill/vasp/max-help/vasp.csub.help delete mode 100755 externals/grill/vasp/max-help/vasp.dif.help delete mode 100755 externals/grill/vasp/max-help/vasp.div.help delete mode 100755 externals/grill/vasp/max-help/vasp.equ.help delete mode 100755 externals/grill/vasp/max-help/vasp.exp.help delete mode 100755 externals/grill/vasp/max-help/vasp.fhp.help delete mode 100755 externals/grill/vasp/max-help/vasp.flp.help delete mode 100755 externals/grill/vasp/max-help/vasp.frames.help delete mode 100755 externals/grill/vasp/max-help/vasp.framesd.help delete mode 100755 externals/grill/vasp/max-help/vasp.framesq.help delete mode 100755 externals/grill/vasp/max-help/vasp.gate.help delete mode 100755 externals/grill/vasp/max-help/vasp.gather.help delete mode 100755 externals/grill/vasp/max-help/vasp.geq.help delete mode 100755 externals/grill/vasp/max-help/vasp.gtr.help delete mode 100755 externals/grill/vasp/max-help/vasp.help delete mode 100755 externals/grill/vasp/max-help/vasp.int.help delete mode 100755 externals/grill/vasp/max-help/vasp.join.help delete mode 100755 externals/grill/vasp/max-help/vasp.leq.help delete mode 100755 externals/grill/vasp/max-help/vasp.list.help delete mode 100755 externals/grill/vasp/max-help/vasp.log.help delete mode 100755 externals/grill/vasp/max-help/vasp.lwr.help delete mode 100755 externals/grill/vasp/max-help/vasp.max.help delete mode 100755 externals/grill/vasp/max-help/vasp.maxq.help delete mode 100755 externals/grill/vasp/max-help/vasp.mbeveldn.help delete mode 100755 externals/grill/vasp/max-help/vasp.mbevelup.help delete mode 100755 externals/grill/vasp/max-help/vasp.mcosc.help delete mode 100755 externals/grill/vasp/max-help/vasp.min.help delete mode 100755 externals/grill/vasp/max-help/vasp.minmax.help delete mode 100755 externals/grill/vasp/max-help/vasp.minq.help delete mode 100755 externals/grill/vasp/max-help/vasp.mirr.help delete mode 100755 externals/grill/vasp/max-help/vasp.mod.help delete mode 100755 externals/grill/vasp/max-help/vasp.mphasor.help delete mode 100755 externals/grill/vasp/max-help/vasp.mul.help delete mode 100755 externals/grill/vasp/max-help/vasp.multi.help delete mode 100755 externals/grill/vasp/max-help/vasp.neq.help delete mode 100755 externals/grill/vasp/max-help/vasp.noise.help delete mode 100755 externals/grill/vasp/max-help/vasp.nonzero.help delete mode 100755 externals/grill/vasp/max-help/vasp.offset.help delete mode 100755 externals/grill/vasp/max-help/vasp.offsetd.help delete mode 100755 externals/grill/vasp/max-help/vasp.offsetq.help delete mode 100755 externals/grill/vasp/max-help/vasp.opt.help delete mode 100755 externals/grill/vasp/max-help/vasp.osc.help delete mode 100755 externals/grill/vasp/max-help/vasp.part.help delete mode 100755 externals/grill/vasp/max-help/vasp.peaks.help delete mode 100755 externals/grill/vasp/max-help/vasp.phasor.help delete mode 100755 externals/grill/vasp/max-help/vasp.polar.help delete mode 100755 externals/grill/vasp/max-help/vasp.pow.help delete mode 100755 externals/grill/vasp/max-help/vasp.pwrap.help delete mode 100755 externals/grill/vasp/max-help/vasp.radd.help delete mode 100755 externals/grill/vasp/max-help/vasp.rect.help delete mode 100755 externals/grill/vasp/max-help/vasp.rfft.help delete mode 100755 externals/grill/vasp/max-help/vasp.rgate.help delete mode 100755 externals/grill/vasp/max-help/vasp.rifft.help delete mode 100755 externals/grill/vasp/max-help/vasp.rmax.help delete mode 100755 externals/grill/vasp/max-help/vasp.rmaxq.help delete mode 100755 externals/grill/vasp/max-help/vasp.rmin.help delete mode 100755 externals/grill/vasp/max-help/vasp.rminq.help delete mode 100755 externals/grill/vasp/max-help/vasp.ropt.help delete mode 100755 externals/grill/vasp/max-help/vasp.rot.help delete mode 100755 externals/grill/vasp/max-help/vasp.rpeaks.help delete mode 100755 externals/grill/vasp/max-help/vasp.rpow.help delete mode 100755 externals/grill/vasp/max-help/vasp.rsub.help delete mode 100755 externals/grill/vasp/max-help/vasp.rvalleys.help delete mode 100755 externals/grill/vasp/max-help/vasp.set.help delete mode 100755 externals/grill/vasp/max-help/vasp.shift.help delete mode 100755 externals/grill/vasp/max-help/vasp.sign.help delete mode 100755 externals/grill/vasp/max-help/vasp.spit.help delete mode 100755 externals/grill/vasp/max-help/vasp.split.help delete mode 100755 externals/grill/vasp/max-help/vasp.sqr.help delete mode 100755 externals/grill/vasp/max-help/vasp.sqrt.help delete mode 100755 externals/grill/vasp/max-help/vasp.ssqr.help delete mode 100755 externals/grill/vasp/max-help/vasp.ssqrt.help delete mode 100755 externals/grill/vasp/max-help/vasp.sub.help delete mode 100755 externals/grill/vasp/max-help/vasp.sync.help delete mode 100755 externals/grill/vasp/max-help/vasp.tilt.help delete mode 100755 externals/grill/vasp/max-help/vasp.update.help delete mode 100755 externals/grill/vasp/max-help/vasp.valleys.help delete mode 100755 externals/grill/vasp/max-help/vasp.vector.help delete mode 100755 externals/grill/vasp/max-help/vasp.vectors.help delete mode 100755 externals/grill/vasp/max-help/vasp.xmirr.help delete mode 100755 externals/grill/vasp/max-help/vasp.xrot.help delete mode 100755 externals/grill/vasp/max-help/vasp.xshift.help delete mode 100755 externals/grill/vasp/max/rndup2 delete mode 100755 externals/grill/vasp/max/vasp.cconj delete mode 100755 externals/grill/vasp/max/vasp.cconv delete mode 100755 externals/grill/vasp/max/vasp.conv delete mode 100755 externals/grill/vasp/max/vasp.defer delete mode 100755 externals/grill/vasp/max/vasp.freeze delete mode 100755 externals/grill/vasp/max/vasp.hilbert delete mode 100755 externals/grill/vasp/max/vasp.im delete mode 100755 externals/grill/vasp/max/vasp.lower delete mode 100755 externals/grill/vasp/max/vasp.meanq delete mode 100755 externals/grill/vasp/max/vasp.nodc delete mode 100755 externals/grill/vasp/max/vasp.opt delete mode 100755 externals/grill/vasp/max/vasp.parts delete mode 100755 externals/grill/vasp/max/vasp.pwrap delete mode 100755 externals/grill/vasp/max/vasp.re delete mode 100755 externals/grill/vasp/max/vasp.ropt delete mode 100755 externals/grill/vasp/max/vasp.spin delete mode 100755 externals/grill/vasp/max/vasp.upper delete mode 100644 externals/grill/vasp/mixfft.txt delete mode 100644 externals/grill/vasp/package.txt delete mode 100644 externals/grill/vasp/pd-ex/convolve.pd delete mode 100644 externals/grill/vasp/pd-ex/enhance.pd delete mode 100644 externals/grill/vasp/pd-ex/freeze.pd delete mode 100644 externals/grill/vasp/pd-ex/frqmax.pd delete mode 100644 externals/grill/vasp/pd-ex/loudness.pd delete mode 100644 externals/grill/vasp/pd-ex/wedit.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_abs.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_add.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_ageq.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_agtr.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_aleq.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_alwr.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_cadd.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_cconj.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_ccopy.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_cdiv.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_cdivr.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_cfft.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_channel.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_check.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_cifft.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_cmul.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_cnoise.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_cnorm.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_copy.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_cosc.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_cpowi.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_crsub.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_cset.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_csqr.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_csub.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_csubr.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_dframes.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_dif.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_div.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_divr.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_doffset.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_dsize.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_equ.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_exp.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_fhp.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_fix.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_flp.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_frames.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_gate.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_gather.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_geq.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_gtr.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_imm.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_int.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_iwindow.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_join.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_leq.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_list.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_log.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_lwr.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_max.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_mcosc.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_mframes.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_min.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_minmax.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_mirr.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_miwindow.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_mod.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_mosc.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_mphasor.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_msize.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_mul.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_multi.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_mwindow.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_mxwindow.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_neq.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_noise.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_nonzero.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_offset.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_offsetd.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_offsetq.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_opt.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_osc.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_part.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_peaks.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_phasor.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_polar.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_pow.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_qamax.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_qamin.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_qchannel.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_qframes.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_qmax.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_qmin.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_qoffset.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_qrmax.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_qrmin.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_qsize.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_qsum.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_qvector.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_qvectors.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_radd.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_radio.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_rect.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_rfft.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_rframes.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_rgate.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_rifft.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_rmax.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_rmin.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_ropt.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_rot.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_rpeaks.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_rpow.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_rsize.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_rvalleys.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_set.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_sframes.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_shift.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_sign.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_size.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_soffset.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_spit.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_split.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_sqr.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_sqrt.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_ssqr.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_ssqrt.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_sub.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_subr.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_sync.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_tilt.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_update.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_v.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_valleys.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_vector.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_vectors.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_window.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_xmirr.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_xrot.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_xshift.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_xtilt.pd delete mode 100644 externals/grill/vasp/pd-help/vasp_xwindow.pd delete mode 100644 externals/grill/vasp/pd-test/granular1.pd delete mode 100644 externals/grill/vasp/pd-test/granular2.pd delete mode 100644 externals/grill/vasp/pd/VASP-HELP.pd delete mode 100644 externals/grill/vasp/pd/bass.aif delete mode 100644 externals/grill/vasp/pd/beat.aif delete mode 100644 externals/grill/vasp/pd/change2.pd delete mode 100644 externals/grill/vasp/pd/filelist.pd delete mode 100644 externals/grill/vasp/pd/filelisthandler.pd delete mode 100644 externals/grill/vasp/pd/filter_example.pd delete mode 100644 externals/grill/vasp/pd/filter_examplei.pd delete mode 100644 externals/grill/vasp/pd/fly.aif delete mode 100644 externals/grill/vasp/pd/phase-random_example.pd delete mode 100644 externals/grill/vasp/pd/plastic.aif delete mode 100644 externals/grill/vasp/pd/ringmod_example.pd delete mode 100644 externals/grill/vasp/pd/rndup2.pd delete mode 100644 externals/grill/vasp/pd/runden.pd delete mode 100644 externals/grill/vasp/pd/synchrodisplay.pd delete mode 100644 externals/grill/vasp/pd/vasp.cconj.pd delete mode 100644 externals/grill/vasp/pd/vasp.cconv.pd delete mode 100644 externals/grill/vasp/pd/vasp.clr0.pd delete mode 100644 externals/grill/vasp/pd/vasp.conv.pd delete mode 100644 externals/grill/vasp/pd/vasp.db2pow.pd delete mode 100644 externals/grill/vasp/pd/vasp.defer.pd delete mode 100644 externals/grill/vasp/pd/vasp.even.pd delete mode 100644 externals/grill/vasp/pd/vasp.freeze.pd delete mode 100644 externals/grill/vasp/pd/vasp.hilbert.pd delete mode 100644 externals/grill/vasp/pd/vasp.im.pd delete mode 100644 externals/grill/vasp/pd/vasp.lower.pd delete mode 100644 externals/grill/vasp/pd/vasp.odd.pd delete mode 100644 externals/grill/vasp/pd/vasp.opt.pd delete mode 100644 externals/grill/vasp/pd/vasp.ov.pd delete mode 100644 externals/grill/vasp/pd/vasp.parts.pd delete mode 100644 externals/grill/vasp/pd/vasp.pwrap.pd delete mode 100644 externals/grill/vasp/pd/vasp.qmean.pd delete mode 100644 externals/grill/vasp/pd/vasp.re.pd delete mode 100644 externals/grill/vasp/pd/vasp.rms.pd delete mode 100644 externals/grill/vasp/pd/vasp.ropt.pd delete mode 100644 externals/grill/vasp/pd/vasp.spin.pd delete mode 100644 externals/grill/vasp/pd/vasp.upper.pd delete mode 100644 externals/grill/vasp/pd/vaspset_examples.pd delete mode 100644 externals/grill/vasp/pd/wavedisplay-select.pd delete mode 100644 externals/grill/vasp/pd/wavedisplay-simple.pd delete mode 100644 externals/grill/vasp/pd/xtilt_example.pd delete mode 100644 externals/grill/vasp/readme.txt delete mode 100644 externals/grill/vasp/source/arg.cpp delete mode 100644 externals/grill/vasp/source/arg.h delete mode 100644 externals/grill/vasp/source/buflib.cpp delete mode 100644 externals/grill/vasp/source/buflib.h delete mode 100644 externals/grill/vasp/source/classes.cpp delete mode 100644 externals/grill/vasp/source/classes.h delete mode 100644 externals/grill/vasp/source/env.cpp delete mode 100644 externals/grill/vasp/source/env.h delete mode 100644 externals/grill/vasp/source/main.cpp delete mode 100644 externals/grill/vasp/source/main.h delete mode 100644 externals/grill/vasp/source/mixfft.cpp delete mode 100644 externals/grill/vasp/source/obj_chns.cpp delete mode 100644 externals/grill/vasp/source/obj_frames.cpp delete mode 100644 externals/grill/vasp/source/obj_imm.cpp delete mode 100644 externals/grill/vasp/source/obj_offs.cpp delete mode 100644 externals/grill/vasp/source/obj_part.cpp delete mode 100644 externals/grill/vasp/source/obj_peaks.cpp delete mode 100644 externals/grill/vasp/source/obj_q.cpp delete mode 100644 externals/grill/vasp/source/obj_radio.cpp delete mode 100644 externals/grill/vasp/source/obj_size.cpp delete mode 100644 externals/grill/vasp/source/obj_split.cpp delete mode 100644 externals/grill/vasp/source/obj_sync.cpp delete mode 100644 externals/grill/vasp/source/obj_vasp.cpp delete mode 100644 externals/grill/vasp/source/obj_vecs.cpp delete mode 100644 externals/grill/vasp/source/opbase.cpp delete mode 100644 externals/grill/vasp/source/opbase.h delete mode 100644 externals/grill/vasp/source/opdefs.h delete mode 100644 externals/grill/vasp/source/opfuns.h delete mode 100644 externals/grill/vasp/source/oploop.h delete mode 100644 externals/grill/vasp/source/opparam.cpp delete mode 100644 externals/grill/vasp/source/opparam.h delete mode 100644 externals/grill/vasp/source/oppermute.h delete mode 100644 externals/grill/vasp/source/ops.h delete mode 100644 externals/grill/vasp/source/ops_arith.cpp delete mode 100644 externals/grill/vasp/source/ops_arith.h delete mode 100644 externals/grill/vasp/source/ops_assign.cpp delete mode 100644 externals/grill/vasp/source/ops_assign.h delete mode 100644 externals/grill/vasp/source/ops_carith.cpp delete mode 100644 externals/grill/vasp/source/ops_carith.h delete mode 100644 externals/grill/vasp/source/ops_cmp.cpp delete mode 100644 externals/grill/vasp/source/ops_cmp.h delete mode 100644 externals/grill/vasp/source/ops_cplx.cpp delete mode 100644 externals/grill/vasp/source/ops_cplx.h delete mode 100644 externals/grill/vasp/source/ops_dft.cpp delete mode 100644 externals/grill/vasp/source/ops_dft.h delete mode 100644 externals/grill/vasp/source/ops_feature.cpp delete mode 100644 externals/grill/vasp/source/ops_feature.h delete mode 100644 externals/grill/vasp/source/ops_flt.cpp delete mode 100644 externals/grill/vasp/source/ops_flt.h delete mode 100644 externals/grill/vasp/source/ops_gate.cpp delete mode 100644 externals/grill/vasp/source/ops_gen.cpp delete mode 100644 externals/grill/vasp/source/ops_gen.h delete mode 100644 externals/grill/vasp/source/ops_qminmax.cpp delete mode 100644 externals/grill/vasp/source/ops_rearr.cpp delete mode 100644 externals/grill/vasp/source/ops_rearr.h delete mode 100644 externals/grill/vasp/source/ops_resmp.cpp delete mode 100644 externals/grill/vasp/source/ops_resmp.h delete mode 100644 externals/grill/vasp/source/ops_search.cpp delete mode 100644 externals/grill/vasp/source/ops_search.h delete mode 100644 externals/grill/vasp/source/ops_trnsc.cpp delete mode 100644 externals/grill/vasp/source/ops_trnsc.h delete mode 100644 externals/grill/vasp/source/ops_wnd.cpp delete mode 100644 externals/grill/vasp/source/ops_wnd.h delete mode 100644 externals/grill/vasp/source/opvecs.cpp delete mode 100644 externals/grill/vasp/source/rdx2fft.cpp delete mode 100644 externals/grill/vasp/source/rvfft.cpp delete mode 100644 externals/grill/vasp/source/util.cpp delete mode 100644 externals/grill/vasp/source/util.h delete mode 100644 externals/grill/vasp/source/vasp.cpp delete mode 100644 externals/grill/vasp/source/vasp.h delete mode 100755 externals/grill/vasp/source/vasp.rsrc delete mode 100644 externals/grill/vasp/source/vbuffer.cpp delete mode 100644 externals/grill/vasp/source/vbuffer.h delete mode 100644 externals/grill/vasp/source/vecblk.cpp delete mode 100644 externals/grill/vasp/source/vecblk.h delete mode 100644 externals/grill/vasp/todo.txt delete mode 100644 externals/grill/vasp/todo/allgemein.txt delete mode 100644 externals/grill/vasp/todo/marius.txt delete mode 100644 externals/grill/vasp/todo/neue-objekte.txt delete mode 100644 externals/grill/vasp/todo/patcher-boys.txt delete mode 100644 externals/grill/vasp/todo/thomas.txt delete mode 100644 externals/grill/vasp/todo/vasp-objects.csv delete mode 100644 externals/grill/vasp/vasp.doxy delete mode 100644 externals/grill/vasp/vasp.mcp delete mode 100644 externals/grill/vasp/vasp.vcproj delete mode 100644 externals/grill/vasp/vasp.xcodeproj/project.pbxproj delete mode 100644 externals/grill/vst/build/config-mac.def delete mode 100644 externals/grill/vst/build/config-win.def delete mode 100644 externals/grill/vst/build/gnumake-mac-gcc.inc delete mode 100644 externals/grill/vst/build/nmake-win-msvc.inc delete mode 100644 externals/grill/vst/gpl.txt delete mode 100644 externals/grill/vst/license.txt delete mode 100644 externals/grill/vst/package.txt delete mode 100644 externals/grill/vst/pd/vst~-help.pd delete mode 100644 externals/grill/vst/readme.txt delete mode 100644 externals/grill/vst/src/editor.cpp delete mode 100644 externals/grill/vst/src/editor.h delete mode 100644 externals/grill/vst/src/editormac.hpp delete mode 100644 externals/grill/vst/src/editorwin.hpp delete mode 100644 externals/grill/vst/src/main.cpp delete mode 100644 externals/grill/vst/src/main.h delete mode 100644 externals/grill/vst/src/vst.rc delete mode 100644 externals/grill/vst/src/vstedit.cpp delete mode 100644 externals/grill/vst/src/vsthost.cpp delete mode 100644 externals/grill/vst/src/vsthost.h delete mode 100644 externals/grill/vst/src/vstmaster.cpp delete mode 100644 externals/grill/vst/src/vstmidi.cpp delete mode 100644 externals/grill/vst/src/vstparam.cpp delete mode 100644 externals/grill/vst/vst.vcproj delete mode 100644 externals/grill/vst/vst.xcode/project.pbxproj delete mode 100644 externals/grill/xsample/.DS_Store delete mode 100644 externals/grill/xsample/gpl.txt delete mode 100644 externals/grill/xsample/license.txt delete mode 100644 externals/grill/xsample/maxmsp/xsample-objectmappings.txt delete mode 100755 externals/grill/xsample/maxmsp/xsample.help delete mode 100644 externals/grill/xsample/package.txt delete mode 100644 externals/grill/xsample/pd-ex/xplaydemo.pd delete mode 100644 externals/grill/xsample/pd-ex/xsampledemo.pd delete mode 100644 externals/grill/xsample/pd/xgroove~-help.pd delete mode 100644 externals/grill/xsample/pd/xplay~-help.pd delete mode 100644 externals/grill/xsample/pd/xrecord~-help.pd delete mode 100644 externals/grill/xsample/readme.txt delete mode 100644 externals/grill/xsample/source/groove.cpp delete mode 100644 externals/grill/xsample/source/inter.cpp delete mode 100644 externals/grill/xsample/source/inter.h delete mode 100644 externals/grill/xsample/source/main.cpp delete mode 100644 externals/grill/xsample/source/main.h delete mode 100644 externals/grill/xsample/source/play.cpp delete mode 100644 externals/grill/xsample/source/prefix.h delete mode 100644 externals/grill/xsample/source/record.cpp delete mode 100644 externals/grill/xsample/source/xsample-Info.plist delete mode 100755 externals/grill/xsample/source/xsample.rsrc delete mode 100755 externals/grill/xsample/xsample.mcp delete mode 100644 externals/grill/xsample/xsample.vcproj delete mode 100644 externals/grill/xsample/xsample.xcode/project.pbxproj delete mode 100644 externals/grill/xsample/xsample.xcodeproj/project.pbxproj (limited to 'externals/grill') diff --git a/externals/grill/deljoin/deljoin-help.pd b/externals/grill/deljoin/deljoin-help.pd deleted file mode 100644 index bf49460e..00000000 --- a/externals/grill/deljoin/deljoin-help.pd +++ /dev/null @@ -1,20 +0,0 @@ -#N canvas 300 90 462 290 12; -#X msg 247 89 symbol -; -#X msg 232 62 list; -#X msg 259 115 list +; -#X obj 105 229 print; -#X symbolatom 266 143 10 0 0 0 - - -; -#X msg 44 66 a b c d e f; -#X msg 217 34 0; -#X obj 105 203 deljoin 0; -#X text 254 21 no delimiter; -#X text 272 62 space; -#X msg 208 11 bang; -#X connect 0 0 7 1; -#X connect 1 0 7 1; -#X connect 2 0 7 1; -#X connect 4 0 7 1; -#X connect 5 0 7 0; -#X connect 6 0 7 1; -#X connect 7 0 3 0; -#X connect 10 0 7 1; diff --git a/externals/grill/deljoin/deljoin.cw b/externals/grill/deljoin/deljoin.cw deleted file mode 100755 index d5aaf6f1..00000000 Binary files a/externals/grill/deljoin/deljoin.cw and /dev/null differ diff --git a/externals/grill/deljoin/deljoin.help b/externals/grill/deljoin/deljoin.help deleted file mode 100755 index f1421554..00000000 Binary files a/externals/grill/deljoin/deljoin.help and /dev/null differ diff --git a/externals/grill/deljoin/deljoin.vcproj b/externals/grill/deljoin/deljoin.vcproj deleted file mode 100644 index 68204c3a..00000000 --- a/externals/grill/deljoin/deljoin.vcproj +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/deljoin/gpl.txt b/externals/grill/deljoin/gpl.txt deleted file mode 100644 index 5ea29a7d..00000000 --- a/externals/grill/deljoin/gpl.txt +++ /dev/null @@ -1,346 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) 19yy - - 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 - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. - diff --git a/externals/grill/deljoin/license.txt b/externals/grill/deljoin/license.txt deleted file mode 100644 index b421a0a8..00000000 --- a/externals/grill/deljoin/license.txt +++ /dev/null @@ -1,50 +0,0 @@ -deljoin - join a list with delimiter -Copyright (C) 2002-2003 Thomas Grill - -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. - -In the official deljoin distribution, the GNU General Public License is -in the file gpl.txt - ---------------------------------------------------------- - - OTHER COPYRIGHT NOTICES - ---------------------------------------------------------- -This package uses the flext C++ layer - See its license text below: - - ---- flext ---------------------------------------------- -flext - C++ layer for Max/MSP and pd (pure data) externals -Copyright (C) 2001-2003 Thomas Grill - -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. - -In the official flext distribution, the GNU General Public License is -in the file gpl.txt - - diff --git a/externals/grill/deljoin/main.cpp b/externals/grill/deljoin/main.cpp deleted file mode 100644 index 06d41d8b..00000000 --- a/externals/grill/deljoin/main.cpp +++ /dev/null @@ -1,147 +0,0 @@ -/* - -deljoin - join a list with delimiter - -Copyright (c) 2002-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#define FLEXT_ATTRIBUTES 1 - -#include - -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500) -#error You need at least flext version 0.5.0 -#endif - -#include -#include -#include - - -#define VERSION "0.1.4" - -#ifdef __MWERKS__ -#define STD std -#else -#define STD -#endif - - -class deljoin: - public flext_base -{ - FLEXT_HEADER_S(deljoin,flext_base,Setup) - -public: - deljoin(int argc,const t_atom *argv); - -protected: - void m_list(const t_symbol *s,int argc,const t_atom *argv); - void m_del(const t_symbol *s,int argc,const t_atom *argv); - - const t_symbol *delim; - -private: - static void Setup(t_classid c); - - static const t_symbol *sym__space; - - FLEXT_CALLBACK_A(m_list) - FLEXT_CALLBACK_A(m_del) - FLEXT_ATTRVAR_S(delim) -}; - -FLEXT_NEW_V("deljoin",deljoin) - - -const t_symbol *deljoin::sym__space = NULL; - -void deljoin::Setup(t_classid c) -{ - sym__space = MakeSymbol(" "); - - FLEXT_CADDMETHOD(c,0,m_list); - FLEXT_CADDMETHOD(c,1,m_del); - FLEXT_CADDATTR_VAR1(c,"del",delim); -} - -deljoin::deljoin(int argc,const t_atom *argv): - delim(sym__) -{ - AddInAnything("Anything in - triggers output"); - AddInAnything("Set the Delimiter"); - AddOutSymbol("A symbol representing the joined list"); - - m_del(sym_list,argc,argv); -} - -void deljoin::m_del(const t_symbol *s,int argc,const t_atom *argv) -{ - delim = NULL; - if(s == sym_symbol) { - FLEXT_ASSERT(argc == 1 && IsSymbol(argv[0])); - delim = GetSymbol(argv[0]); - } - else if(s == sym_list) { - if(argc == 0) - delim = sym__space; - else if(argc >= 1) { - if(IsSymbol(argv[0])) - delim = GetSymbol(argv[0]); - else if(IsFloat(argv[0]) || IsInt(argv[0])) - delim = sym__; - } - } - else if(s == sym_bang || s == sym_float || s == sym_int) - delim = sym__; - - if(!delim) { - post("%s - Argument must be a symbol, list or int/float/bang",thisName()); - delim = sym__; - } -} - -/** \brief convert incoming list to a concatenated string - - Handles symbols, integers and floats -*/ -void deljoin::m_list(const t_symbol *s,int argc,const t_atom *argv) -{ - FLEXT_ASSERT(delim); - - char tmp[1024],*t = tmp; - const char *sdel = GetString(delim); - int ldel = strlen(sdel); - - if(s && s != sym_list && s != sym_float && s != sym_int) { - strcpy(t,GetString(s)); - t += strlen(t); - } - - for(int i = 0; i < argc; ++i) { - if(t != tmp) { - strcpy(t,sdel); - t += ldel; - } - - const t_atom &a = argv[i]; - if(IsSymbol(a)) - strcpy(t,GetString(a)); - else if(CanbeFloat(a)) { - const float f = GetAFloat(a); - const int fi = (int)f; - if(f == fi) - STD::sprintf(t,"%i",fi,10); - else - STD::sprintf(t,"%f",f,10); - } -// else do nothing - - t += strlen(t); - } - - ToOutString(0,tmp); -} diff --git a/externals/grill/deljoin/package.txt b/externals/grill/deljoin/package.txt deleted file mode 100644 index afe0207e..00000000 --- a/externals/grill/deljoin/package.txt +++ /dev/null @@ -1,2 +0,0 @@ -NAME=deljoin -SRCS=main.cpp diff --git a/externals/grill/delsplit/delsplit-help.pd b/externals/grill/delsplit/delsplit-help.pd deleted file mode 100644 index 2f641921..00000000 --- a/externals/grill/delsplit/delsplit-help.pd +++ /dev/null @@ -1,22 +0,0 @@ -#N canvas 300 90 462 290 12; -#X msg 264 133 symbol -; -#X msg 232 57 list; -#X msg 242 84 list +; -#X obj 105 229 print; -#X obj 39 78 tosymbol; -#X msg 29 22 ask+asd-ssds; -#X symbolatom 251 111 10 0 0 0 - - -; -#X obj 105 203 delsplit; -#X text 273 54 space; -#X msg 31 152 a-b c+d e-f+g; -#X msg 58 47 a b c+d e-f+g; -#X text 29 130 any messages will work; -#X connect 0 0 7 1; -#X connect 1 0 7 1; -#X connect 2 0 7 1; -#X connect 4 0 7 0; -#X connect 5 0 4 0; -#X connect 6 0 7 1; -#X connect 7 0 3 0; -#X connect 9 0 7 0; -#X connect 10 0 4 0; diff --git a/externals/grill/delsplit/delsplit.help b/externals/grill/delsplit/delsplit.help deleted file mode 100755 index 8e37aa67..00000000 Binary files a/externals/grill/delsplit/delsplit.help and /dev/null differ diff --git a/externals/grill/delsplit/delsplit.mcp b/externals/grill/delsplit/delsplit.mcp deleted file mode 100755 index 04bb39d4..00000000 Binary files a/externals/grill/delsplit/delsplit.mcp and /dev/null differ diff --git a/externals/grill/delsplit/delsplit.vcproj b/externals/grill/delsplit/delsplit.vcproj deleted file mode 100644 index c80ec52e..00000000 --- a/externals/grill/delsplit/delsplit.vcproj +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/delsplit/gpl.txt b/externals/grill/delsplit/gpl.txt deleted file mode 100644 index 5ea29a7d..00000000 --- a/externals/grill/delsplit/gpl.txt +++ /dev/null @@ -1,346 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) 19yy - - 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 - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. - diff --git a/externals/grill/delsplit/license.txt b/externals/grill/delsplit/license.txt deleted file mode 100644 index 2b7845ee..00000000 --- a/externals/grill/delsplit/license.txt +++ /dev/null @@ -1,50 +0,0 @@ -delsplit - split a delimited list-in-a-symbol -Copyright (C) 2002-2003 Thomas Grill - -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. - -In the official delsplit distribution, the GNU General Public License is -in the file gpl.txt - ---------------------------------------------------------- - - OTHER COPYRIGHT NOTICES - ---------------------------------------------------------- -This package uses the flext C++ layer - See its license text below: - - ---- flext ---------------------------------------------- -flext - C++ layer for Max/MSP and pd (pure data) externals -Copyright (C) 2001-2003 Thomas Grill - -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. - -In the official flext distribution, the GNU General Public License is -in the file gpl.txt - - diff --git a/externals/grill/delsplit/main.cpp b/externals/grill/delsplit/main.cpp deleted file mode 100644 index 82e490a6..00000000 --- a/externals/grill/delsplit/main.cpp +++ /dev/null @@ -1,174 +0,0 @@ -/* - -delsplit - split a delimited list-in-a-symbol - -Copyright (c) 2002-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#define FLEXT_ATTRIBUTES 1 - -#include - -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500) -#error You need at least flext version 0.5.0 -#endif - -#include -#include -#include -#include - - -#define VERSION "0.1.5" - -#ifdef __MWERKS__ -#define STD std -#else -#define STD -#endif - - -class delsplit: - public flext_base -{ - FLEXT_HEADER_S(delsplit,flext_base,Setup) - -public: - delsplit(int argc,const t_atom *argv); - -protected: - void m_any(const t_symbol *s,int argc,const t_atom *argv); - void m_del(const t_symbol *s,int argc,const t_atom *argv); - - const t_symbol *delim; - - static void SetAtom(t_atom &l,const char *s); -private: - static void Setup(t_classid c); - - static const t_symbol *sym__space; - - FLEXT_CALLBACK_A(m_any) - FLEXT_CALLBACK_A(m_del) - FLEXT_ATTRVAR_S(delim) -}; - -FLEXT_NEW_V("delsplit",delsplit) - - -const t_symbol *delsplit::sym__space = NULL; - -void delsplit::Setup(t_classid c) -{ - sym__space = MakeSymbol(" "); - - FLEXT_CADDMETHOD(c,0,m_any); - FLEXT_CADDMETHOD(c,1,m_del); - FLEXT_CADDATTR_VAR1(c,"del",delim); -} - -delsplit::delsplit(int argc,const t_atom *argv): - delim(sym__) -{ - AddInAnything("Symbol in, representing the delimited list"); - AddInAnything("Set the Delimiter"); - AddOutList("The split list"); - - m_del(sym_list,argc,argv); -} - - -/** \brief check whether string represents a number - \ret 0..integer, 1..float, -1..no number -*/ -static int chknum(const char *s) -{ - int num = 0,pts = 0; - for(; *s; ++s) { - if(*s == '.') ++pts; - else if(isdigit(*s)) ++num; - else { num = 0; break; } - } - return (num > 0 && pts <= 1)?pts:-1; -} - -void delsplit::m_del(const t_symbol *s,int argc,const t_atom *argv) -{ - delim = NULL; - if(s == sym_symbol) { - FLEXT_ASSERT(argc == 1 && IsSymbol(argv[0])); - delim = GetSymbol(argv[0]); - } - else if(s == sym_list) { - if(argc == 0) - delim = sym__space; - else if(argc >= 1 && IsSymbol(argv[0])) - delim = GetSymbol(argv[0]); - } - - if(!delim) { - post("%s - Argument must be a symbol, list or int/float/bang",thisName()); - delim = sym__space; - } -} - -void delsplit::SetAtom(t_atom &l,const char *s) -{ - int n = chknum(s); - - if(n < 0) - SetString(l,s); - else if(n == 0) - SetInt(l,atoi(s)); - else - SetFloat(l,(float)atof(s)); -} - -void delsplit::m_any(const t_symbol *sym,int argc,const t_atom *argv) -{ - FLEXT_ASSERT(delim); - - t_atom lst[256]; - int cnt = 0; - const char *sdel = GetString(delim); - int ldel = strlen(sdel); - - for(int i = -1; i < argc; ++i) { - char str[1024]; - if(i < 0) { - if( - sym != sym_list && sym != sym_float && sym != sym_symbol && sym != sym_bang -#if FLEXT_SYS == FLEXT_SYS_MAX - && sym != sym_int -#endif - ) - strcpy(str,GetString(sym)); - else - str[0] = 0; - } - else if(IsString(argv[i])) - strcpy(str,GetString(argv[i])); - else if(CanbeFloat(argv[i])) - STD::sprintf(str,"%e",GetAFloat(argv[i])); - else - str[0] = 0; - - for(const char *s = str; *s; ) { - char *e = strstr(s,sdel); - if(!e) { - SetAtom(lst[cnt++],s); - break; - } - else { - *e = 0; - SetAtom(lst[cnt++],s); - s = e+ldel; - } - } - } - - ToSysList(0,cnt,lst); -} diff --git a/externals/grill/delsplit/package.txt b/externals/grill/delsplit/package.txt deleted file mode 100644 index ac8107ee..00000000 --- a/externals/grill/delsplit/package.txt +++ /dev/null @@ -1,2 +0,0 @@ -NAME=delsplit -SRCS=main.cpp diff --git a/externals/grill/dynext/dynext.vcproj b/externals/grill/dynext/dynext.vcproj deleted file mode 100644 index f7edf246..00000000 --- a/externals/grill/dynext/dynext.vcproj +++ /dev/null @@ -1,255 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/dynext/gpl.txt b/externals/grill/dynext/gpl.txt deleted file mode 100644 index 5ea29a7d..00000000 --- a/externals/grill/dynext/gpl.txt +++ /dev/null @@ -1,346 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) 19yy - - 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 - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. - diff --git a/externals/grill/dynext/license.txt b/externals/grill/dynext/license.txt deleted file mode 100644 index 4a10fba2..00000000 --- a/externals/grill/dynext/license.txt +++ /dev/null @@ -1,50 +0,0 @@ -dyn~ - dynamic object management for PD -Copyright (c) Thomas Grill (xovo@gmx.net) - -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. - -In the official dyn~ distribution, the GNU General Public License is -in the file gpl.txt - ---------------------------------------------------------- - - OTHER COPYRIGHT NOTICES - ---------------------------------------------------------- -This package uses the flext C++ layer - See its license text below: - - ---- flext ---------------------------------------------- -flext - C++ layer for Max/MSP and pd (pure data) externals -Copyright (C) 2001-2003 Thomas Grill - -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. - -In the official flext distribution, the GNU General Public License is -in the file gpl.txt - - diff --git a/externals/grill/dynext/package.txt b/externals/grill/dynext/package.txt deleted file mode 100644 index fd8a7889..00000000 --- a/externals/grill/dynext/package.txt +++ /dev/null @@ -1,6 +0,0 @@ -NAME=dyn~ - -SRCDIR=src - -SRCS= main.cpp -HDRS= diff --git a/externals/grill/dynext/pd/dyn~-help.pd b/externals/grill/dynext/pd/dyn~-help.pd deleted file mode 100644 index 078cbeca..00000000 --- a/externals/grill/dynext/pd/dyn~-help.pd +++ /dev/null @@ -1,169 +0,0 @@ -#N canvas 50 60 833 552 12; -#N canvas 71 10 562 569 examples 0; -#X floatatom 148 239 5 0 0 0 - - -; -#X floatatom 105 304 5 0 0 0 - - -; -#X floatatom 113 501 5 0 0 0 - - -; -#X obj 251 273 +; -#X floatatom 252 301 5 0 0 0 - - -; -#X floatatom 155 423 5 0 0 0 - - -; -#X floatatom 244 424 5 0 0 0 - - -; -#X floatatom 306 422 5 0 0 0 - - -; -#X obj 261 468 * 2; -#X obj 303 469 + 1; -#X floatatom 270 499 5 0 0 0 - - -; -#X floatatom 256 238 5 0 0 0 - - -; -#X floatatom 224 72 5 0 0 0 - - -; -#X floatatom 98 136 5 0 0 0 - - -; -#X floatatom 237 133 5 0 0 0 - - -; -#X obj 236 107 f; -#X obj 99 107 dyn~ 0 1 0 1; -#X obj 106 273 dyn~ 0 2 0 1; -#X obj 113 468 dyn~ 0 3 0 1; -#X msg 37 36 reset \, newobj . a f \, conn 0 a 0 \, conn a 0 0; -#X msg 37 197 reset \, newobj . a + \, conn 0 a 0 \, conn 1 a 1 \, -conn a 0 0; -#X msg 37 368 reset \, newobj . a * 2 \, newobj . b + 1 \, conn 0 a -0 \, conn 1 a 1 \, conn a 0 b 0 \, conn 2 b 1 \, conn b 0 0; -#X connect 0 0 3 0; -#X connect 0 0 17 1; -#X connect 3 0 4 0; -#X connect 5 0 8 0; -#X connect 5 0 18 1; -#X connect 6 0 8 1; -#X connect 6 0 18 2; -#X connect 7 0 9 1; -#X connect 7 0 18 3; -#X connect 8 0 9 0; -#X connect 9 0 10 0; -#X connect 11 0 3 1; -#X connect 11 0 17 2; -#X connect 12 0 15 0; -#X connect 12 0 16 1; -#X connect 15 0 14 0; -#X connect 16 0 13 0; -#X connect 17 0 1 0; -#X connect 18 0 2 0; -#X connect 19 0 16 0; -#X connect 20 0 17 0; -#X connect 21 0 18 0; -#X restore 514 459 pd examples; -#X msg 127 70 reset; -#X text 184 70 clear all objects and connections; -#X msg 129 231 conn 0 a 0; -#X text 224 230 connect dyn-inlet 0 to a-inlet 0; -#X msg 129 260 conn a 0 0; -#X text 224 259 connect a-outlet 0 to dyn-outlet 0; -#X msg 129 293 conn x 2 y 3; -#X text 234 292 connect x-outlet 2 to y-inlet 3; -#X msg 129 356 del a; -#X text 181 358 delete object "a"; -#X obj 11 10 cnv 15 700 40 empty empty dyn~ 10 22 0 24 -260818 -1 0 -; -#X text 282 387 send "message 1" to a-inlet 0; -#X obj 54 468 dyn~ 0 1 0 2; -#X text 156 467 dyn sig/msg inlets sig/msg outlets; -#X msg 165 421 vis \$1; -#X obj 129 421 tgl 20 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 -1; -#X text 222 417 make patch visible/invisible; -#X msg 129 323 dis x 2 y 3; -#X text 234 324 disconnect x-outlet 2 to y-inlet 3; -#X text 187 98 reload all objects (keep connections); -#X msg 127 98 reload; -#X text 218 432 (connections are not drawn at the moment!); -#N canvas 178 192 594 450 dsp-ex 0; -#X obj 63 357 dac~; -#X obj 173 234 hsl 128 15 0 1000 0 0 empty empty empty -2 -6 0 8 -261681 --1 -1 2800 1; -#X obj 184 259 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -10 -262144 -1 -1 220.472 256; -#X msg 56 55 reset; -#X obj 457 300 loadbang; -#X msg 456 324 \; pd dsp 1; -#X text 55 33 clear all; -#X obj 37 255 dyn~ 0 1 2 0; -#X text 60 84 make an oscillator (left); -#X text 56 144 add an oscillator (double frq \, right); -#X text 64 216 select frequency; -#X obj 47 318 *~ 0.2; -#X obj 131 317 *~ 0.2; -#X obj 169 290 hsl 128 15 0.001 1 1 0 empty empty empty -2 -6 0 8 -262131 --1 -1 3300 1; -#X text 306 286 gain; -#X msg 54 106 newobj . o1 osc~ 220 \, conn 0 o1 0 \, conn o1 0 0; -#X msg 57 164 newobj . m * 1.5 \, newobj . o2 osc~ 330 \, conn 0 m -0 \, conn m 0 o2 0 \, conn o2 0 1; -#X connect 1 0 2 0; -#X connect 1 0 7 1; -#X connect 3 0 7 0; -#X connect 4 0 5 0; -#X connect 7 0 11 0; -#X connect 7 1 12 0; -#X connect 11 0 0 0; -#X connect 12 0 0 1; -#X connect 13 0 11 1; -#X connect 13 0 12 1; -#X connect 15 0 7 0; -#X connect 16 0 7 0; -#X restore 514 487 pd dsp-ex; -#X msg 129 156 newmsg . b Hello; -#X msg 128 124 newobj . a + 1; -#X text 247 124 make new object [+ 1] with name "a" in root patcher -("."); -#X text 269 156 make new message object [Hello( with name "b" in root -patcher; -#X msg 128 200 newobj . c pd sub; -#X text 273 200 make sub patcher; -#X msg 432 198 newobj c d bang; -#X text 561 198 make object in sub patcher; -#X text 133 30 http://grrrr.org/ext; -#N canvas 132 483 566 544 proxies 0; -#X text 25 78 Instead you have to create a "real" object that; -#X text 24 94 gets the message and passes it along to the abstraction. -; -#X text 25 123 If you wanted to send float for example you could use -; -#X text 24 141 [float] objects as "proxies".; -#X text 25 29 You can't use send to send directly to an inlet of an -; -#X text 24 45 abstraction or subpatcher object you placed inside dyn~. -; -#X obj 13 470 dyn~ 0 0 0 0; -#X text 31 190 create a subpatcher with an inlet and a print object -in it; -#X text 35 270 try to send a message to it; -#X msg 35 290 send mysub 0 Hello!; -#X msg 30 212 reset \, newobj . mysub pd sub \, newobj mysub in inlet -\, newobj mysub p print SUB \, conn in 0 p 0; -#X text 209 289 doesn't work! (watch PD console); -#X msg 34 360 newobj . proxy symbol \, conn proxy 0 mysub 0; -#X text 36 388 send to that instead; -#X msg 33 407 send proxy Hello!; -#X obj 128 453 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 -1; -#X msg 127 470 vis \$1; -#X text 37 338 create a proxy ([symbol] object in this case); -#X connect 9 0 6 0; -#X connect 10 0 6 0; -#X connect 12 0 6 0; -#X connect 14 0 6 0; -#X connect 15 0 16 0; -#X connect 16 0 6 0; -#X restore 626 469 pd proxies; -#X msg 128 387 send a message 1; -#X text 133 12 dynamic object management \, (C)2003-2006 Thomas Grill -; -#X connect 1 0 13 0; -#X connect 3 0 13 0; -#X connect 5 0 13 0; -#X connect 7 0 13 0; -#X connect 9 0 13 0; -#X connect 15 0 13 0; -#X connect 16 0 15 0; -#X connect 18 0 13 0; -#X connect 21 0 13 0; -#X connect 24 0 13 0; -#X connect 25 0 13 0; -#X connect 28 0 13 0; -#X connect 30 0 13 0; -#X connect 34 0 13 0; diff --git a/externals/grill/dynext/readme.txt b/externals/grill/dynext/readme.txt deleted file mode 100644 index c3270f4f..00000000 --- a/externals/grill/dynext/readme.txt +++ /dev/null @@ -1,73 +0,0 @@ -dyn~ - dynamic object management for PD - -Copyright (c)Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - - ----------------------------------------------------------------------------- - -Attention: dyn~ is bound to the PD version it is compiled for. -This means that you cannot use a version compiled for PD 0.38 with PD 0.39. - ----------------------------------------------------------------------------- - -You will need the flext C++ layer for PD and Max/MSP externals to compile this. -see http://grrrr.org/ext - -Please see build.txt in the flext package on how to compile dyn~. - ----------------------------------------------------------------------------- - -BUGS: ------ - -- deletion of subcanvases and objects therein may be crashy - - -CHANGES: --------- - -0.1.2: -- optimized DSP path (less copying, no block delay) -- separate message and signal proxy objects to save memory - -0.1.1: -- using aligned memory -- cached several symbols -- strip .pd extension from abstraction filenames (if stripext attribute is set) -- debug patcher opens on shift-click -- made vis an attribute (visibility can now be queried) -- fixed connecting objects in subpatchers -- use TablePtrMap type to store named objects -- allow reuse of names (can be disabled with "symreuse" attribute) -- guard against messages to canvases ("canvasmsg" attribute) -- more stable -- make connections visible -- fixed send method: any messages do work now not only lists... - -0.1.0: -- first release: PD 0.37 supports all necessary functionality -- cleaner message-based object creation -- also messages and comments can be created now -- handle sub-canvases - -0.0.2: -- give the dyn~ subcanvas a name (hard to access - for the wild scripters out there), - so that it is different from the canvas where dyn~ is in -- corrected names of message in- and out-proxies. -- manually retrigger DSP after loading an abstraction - -0.0.1: -- send loadbangs for loaded abstractions -- now use "dsp" message to enable dsp in sub-canvas (no need of canvas_addtolist, canvas_takefromlist any more) - - -0.0.0 - initial cvs version - - - -TODO: --------- -- add mute attribute - diff --git a/externals/grill/dynext/src/main.cpp b/externals/grill/dynext/src/main.cpp deleted file mode 100644 index d6113c82..00000000 --- a/externals/grill/dynext/src/main.cpp +++ /dev/null @@ -1,954 +0,0 @@ -/* - -dyn~ - dynamical object management for PD - -Copyright (c)2003-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - - --- this is all a bit hacky, but hey, it's PD! -- - -*/ - -#define FLEXT_ATTRIBUTES 1 - -#include - -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500) -#error You need at least flext version 0.5.0 -#endif - -#define DYN_VERSION "0.1.2" - - -#if FLEXT_SYS != FLEXT_SYS_PD -#error Sorry, dyn~ works for PD only! -#endif - - -#include "flinternal.h" -#include -#include - -#ifdef _MSC_VER -#pragma warning(disable: 4091 4244) -#endif -#include "g_canvas.h" - - -class dyn: - public flext_dsp -{ - FLEXT_HEADER_S(dyn,flext_dsp,setup) -public: - dyn(int argc,const t_atom *argv); - virtual ~dyn(); - - void m_reset(); - void m_reload(); // refresh objects/abstractions - void m_newobj(int argc,const t_atom *argv); - void m_newmsg(int argc,const t_atom *argv); - void m_newtext(int argc,const t_atom *argv); - void m_del(const t_symbol *n); - void m_connect(int argc,const t_atom *argv) { ConnDis(true,argc,argv); } - void m_disconnect(int argc,const t_atom *argv) { ConnDis(false,argc,argv); } - void m_send(int argc,const t_atom *argv); - void ms_vis(bool vis) { canvas_vis(canvas,vis?1:0); } - void mg_vis(bool &vis) const { vis = canvas && canvas->gl_editor; } - -protected: - - virtual void CbClick() { ms_vis(true); } - - static const t_symbol *k_obj,*k_msg,*k_text; - - class Obj { - public: - Obj(t_glist *gl,t_gobj *o): glist(gl),object(o) {} - - t_glist *AsGlist() const - { - return pd_class(&object->g_pd) == canvas_class?(t_glist *)object:NULL; - } - - t_glist *glist; - t_gobj *object; - }; - - class ObjMap - :public TablePtrMap - { - public: - virtual ~ObjMap() { clear(); } - - virtual void clear() - { - for(iterator it(*this); it; ++it) delete it.data(); - TablePtrMap::clear(); - } - } root; - - typedef TablePtrMap GObjMap; - - class GLstMap - :public TablePtrMap - { - public: - virtual ~GLstMap() { clear(); } - - virtual void clear() - { - for(iterator it(*this); it; ++it) delete it.data(); - TablePtrMap::clear(); - } - } groot; - - Obj *Find(const t_symbol *n) { return root.find(n); } - t_glist *FindCanvas(const t_symbol *n); - - Obj *Remove(const t_symbol *n); - bool Add(const t_symbol *n,t_glist *gl,t_gobj *o); - - t_gobj *New(const t_symbol *kind,int _argc_,const t_atom *_argv_,bool add = true); - - void ConnDis(bool conn,int argc,const t_atom *argv); - - void DoInit(); - void DoExit(); - void NewProxies(); - void DelProxies(); - - virtual bool CbMethodResort(int n,const t_symbol *s,int argc,const t_atom *argv); - virtual bool CbDsp(); - - - // proxy object - class proxy - { - public: - t_object obj; - dyn *th; - - void init(dyn *t) - { - th = t; - } - }; - - // proxy object - class sigproxy - : public proxy - { - public: - t_sample defsig; - int n; - t_sample *vec; - - void init(dyn *t) - { - proxy::init(t); - defsig = 0; - n = 0,vec = NULL; - } - - void set(int n,t_sample *vec) - { - this->n = n; - this->vec = vec; - } - }; - - // proxy for inbound messages - class proxyin: - public proxy - { - public: - void init(dyn *t) - { - proxy::init(t); - outlet_new(&obj,&s_anything); - } - - void Message(const t_symbol *s,int argc,const t_atom *argv) - { - outlet_anything(obj.te_outlet,(t_symbol *)s,argc,(t_atom *)argv); - } - - static void px_method(proxyin *obj,const t_symbol *s,int argc,const t_atom *argv) - { - obj->Message(s,argc,argv); - } - }; - - // proxy for inbound signals - class sigproxyin: - public sigproxy - { - public: - void init(dyn *t) - { - sigproxy::init(t); - outlet_new(&obj,&s_signal); - } - - static void dsp(sigproxyin *x, t_signal **sp); - }; - - - // proxy for outbound messages - class proxyout: - public proxy - { - public: - void init(dyn *t,int o) - { - proxy::init(t); - outlet = o; - } - - static void px_method(proxyout *obj,const t_symbol *s,int argc,const t_atom *argv) - { - obj->th->ToSysAnything(obj->outlet,s,argc,argv); - } - - protected: - int outlet; - }; - - // proxy for outbound messages - class sigproxyout: - public sigproxy - { - public: - void init(dyn *t) - { - sigproxy::init(t); - outlet_new(&obj,&s_signal); - } - - static void dsp(sigproxyout *x, t_signal **sp); - }; - - static t_class *pxin_class,*pxout_class; - static t_class *pxins_class,*pxouts_class; - - int s_inlets,m_inlets,s_outlets,m_outlets; - sigproxyin **pxsin; - proxyin **pxmin; - sigproxyout **pxsout; - proxyout **pxmout; - - static t_object *pxin_new() { return (t_object *)pd_new(pxin_class); } - static t_object *pxins_new() { return (t_object *)pd_new(pxins_class); } - static t_object *pxout_new() { return (t_object *)pd_new(pxout_class); } - static t_object *pxouts_new() { return (t_object *)pd_new(pxouts_class); } - - t_canvas *canvas; - bool stripext,canvasmsg,symreuse; - -private: - static void setup(t_classid c); - - FLEXT_CALLBACK(m_reset) - FLEXT_CALLBACK(m_reload) - FLEXT_CALLBACK_V(m_newobj) - FLEXT_CALLBACK_V(m_newmsg) - FLEXT_CALLBACK_V(m_newtext) - FLEXT_CALLBACK_S(m_del) - FLEXT_CALLBACK_V(m_connect) - FLEXT_CALLBACK_V(m_disconnect) - FLEXT_CALLBACK_V(m_send) - FLEXT_CALLVAR_B(mg_vis,ms_vis) - - FLEXT_ATTRVAR_B(stripext) - FLEXT_ATTRVAR_B(symreuse) - FLEXT_ATTRVAR_B(canvasmsg) - - static const t_symbol *sym_dot,*sym_dynsin,*sym_dynsout,*sym_dynin,*sym_dynout,*sym_dyncanvas; - static const t_symbol *sym_vis,*sym_loadbang,*sym_dsp,*sym_pop; -}; - -FLEXT_NEW_DSP_V("dyn~",dyn) - - -t_class *dyn::pxin_class = NULL,*dyn::pxout_class = NULL; -t_class *dyn::pxins_class = NULL,*dyn::pxouts_class = NULL; - -const t_symbol *dyn::k_obj = NULL; -const t_symbol *dyn::k_msg = NULL; -const t_symbol *dyn::k_text = NULL; - -const t_symbol *dyn::sym_dot = NULL; -const t_symbol *dyn::sym_dynsin = NULL; -const t_symbol *dyn::sym_dynsout = NULL; -const t_symbol *dyn::sym_dynin = NULL; -const t_symbol *dyn::sym_dynout = NULL; -const t_symbol *dyn::sym_dyncanvas = NULL; - -const t_symbol *dyn::sym_vis = NULL; -const t_symbol *dyn::sym_loadbang = NULL; -const t_symbol *dyn::sym_dsp = NULL; -const t_symbol *dyn::sym_pop = NULL; - - -void dyn::setup(t_classid c) -{ - post(""); - post("dyn~ %s - dynamic object management, (C)2003-2006 Thomas Grill",DYN_VERSION); - post(""); - - sym_dynsin = MakeSymbol("dyn_in~"); - sym_dynsout = MakeSymbol("dyn_out~"); - sym_dynin = MakeSymbol("dyn_in"); - sym_dynout = MakeSymbol("dyn_out"); - - sym_dot = MakeSymbol("."); - sym_dyncanvas = MakeSymbol(" dyn~-canvas "); - - // set up proxy class for inbound messages - pxin_class = class_new(const_cast(sym_dynin),(t_newmethod)pxin_new,NULL,sizeof(proxyin),0, A_NULL); - add_anything(pxin_class,proxyin::px_method); - - // set up proxy class for inbound signals - pxins_class = class_new(const_cast(sym_dynsin),(t_newmethod)pxins_new,NULL,sizeof(sigproxyin),0, A_NULL); - add_dsp(pxins_class,sigproxyin::dsp); - CLASS_MAINSIGNALIN(pxins_class, sigproxyin, defsig); - - // set up proxy class for outbound messages - pxout_class = class_new(const_cast(sym_dynout),(t_newmethod)pxout_new,NULL,sizeof(proxyout),0, A_NULL); - add_anything(pxout_class,proxyout::px_method); - - // set up proxy class for outbound signals - pxouts_class = class_new(const_cast(sym_dynsout),(t_newmethod)pxouts_new,NULL,sizeof(sigproxyout),0, A_NULL); - add_dsp(pxouts_class,sigproxyout::dsp); - CLASS_MAINSIGNALIN(pxouts_class, sigproxyout, defsig); - - // set up dyn~ - FLEXT_CADDMETHOD_(c,0,"reset",m_reset); - FLEXT_CADDMETHOD_(c,0,"reload",m_reload); - FLEXT_CADDMETHOD_(c,0,"newobj",m_newobj); - FLEXT_CADDMETHOD_(c,0,"newmsg",m_newmsg); - FLEXT_CADDMETHOD_(c,0,"newtext",m_newtext); - FLEXT_CADDMETHOD_(c,0,"del",m_del); - FLEXT_CADDMETHOD_(c,0,"conn",m_connect); - FLEXT_CADDMETHOD_(c,0,"dis",m_disconnect); - FLEXT_CADDMETHOD_(c,0,"send",m_send); - FLEXT_CADDATTR_VAR(c,"vis",mg_vis,ms_vis); - FLEXT_CADDATTR_VAR1(c,"stripext",stripext); - FLEXT_CADDATTR_VAR1(c,"symreuse",symreuse); - FLEXT_CADDATTR_VAR1(c,"canvasmsg",canvasmsg); - - // set up symbols - k_obj = MakeSymbol("obj"); - k_msg = MakeSymbol("msg"); - k_text = MakeSymbol("text"); - - sym_vis = MakeSymbol("vis"); - sym_loadbang = MakeSymbol("loadbang"); - sym_dsp = MakeSymbol("dsp"); - sym_pop = MakeSymbol("pop"); -} - - -/* -There must be a separate canvas for the dynamically created objects as some mechanisms in PD -(like copy/cut/paste) get confused otherwise. -On the other hand it seems to be possible to create objects without a canvas. -They won't receive DSP processing, though, hence it's only possible for message objects. -Problems arise when an object is not yet loaded... the canvas environment is then needed to -load it.. if there is no canvas, PD currently crashes. - - -How to create the canvas: -1) via direct call to canvas_new() -2) a message to pd_canvasmaker - con: does not return a pointer for the created canvas - -There are two possibilities for the canvas -1) make a sub canvas to the one where dyn~ resides: - pro: no problems with environment (abstractions are found and loaded correctly) -2) make a root canvas: - pro: it will be in the canvas list per default, hence DSP is processed - con: canvas environment must be created manually - (is normally done by pd_canvasmaker if there is a directory set, which is again done somewhere else) - -Enabling DSP on the subcanvas -1) send it a "dsp" message (see rabin~ by K.Czaja)... but, which signal vector should be taken? - -> answer: NONE! (just send NULL) -2) add it to the list of _root_ canvases (these will be DSP-processed per default) - (for this the canvas_addtolist and canvas_takefromlist functions are used) - however, it's not clear if this can lead to problems since it is no root-canvas! - -In all cases the 1)s have been chosen as the cleaner solution -*/ - -dyn::dyn(int argc,const t_atom *argv): - canvas(NULL), - pxsin(NULL),pxmin(NULL),pxsout(NULL),pxmout(NULL), - stripext(false),symreuse(true),canvasmsg(false) -{ - if(argc < 4) { - post("%s - Syntax: dyn~ sig-ins msg-ins sig-outs msg-outs",thisName()); - InitProblem(); - return; - } - - s_inlets = GetAInt(argv[0]); - m_inlets = GetAInt(argv[1]); - s_outlets = GetAInt(argv[2]); - m_outlets = GetAInt(argv[3]); - - // --- make a sub-canvas for dyn~ ------ - - t_atom arg[6]; - SetInt(arg[0],0); // xpos - SetInt(arg[1],0); // ypos - SetInt(arg[2],700); // xwidth - SetInt(arg[3],520); // xwidth - SetSymbol(arg[4],sym_dyncanvas); // canvas name - SetInt(arg[5],0); // visible - - canvas = canvas_new(NULL, NULL, 6, arg); - // pop canvas (must do that...) - SetInt(arg[0],0); - pd_typedmess((t_pd *)canvas,(t_symbol *)sym_pop,1,arg); - - DoInit(); - - AddInSignal("Messages (newobj,newmsg,newtext,del,conn,dis)"); - AddInSignal(s_inlets); - AddInAnything(m_inlets); - AddOutSignal(s_outlets); - AddOutAnything(m_outlets); -} - -dyn::~dyn() -{ - DoExit(); - - if(canvas) pd_free((t_pd *)canvas); -} - -void dyn::DoInit() -{ - // add to list of canvases - groot.insert(canvas,new GObjMap); - - NewProxies(); -} - -void dyn::DoExit() -{ - // delete proxies - DelProxies(); - // remove all objects - if(canvas) glist_clear(canvas); - // remove all names - groot.clear(); - root.clear(); -} - -void dyn::NewProxies() -{ - // --- create inlet proxies ------ - int i; - if(s_inlets) pxsin = new sigproxyin *[s_inlets]; - if(m_inlets) pxmin = new proxyin *[m_inlets]; - for(i = 0; i < s_inlets+m_inlets; ++i) { - t_atom lst[5]; - SetInt(lst[0],i*100); - SetInt(lst[1],10); - SetSymbol(lst[2],sym_dot); - SetSymbol(lst[3],sym__); - - try { - if(i < s_inlets) { - SetSymbol(lst[4],sym_dynsin); - pxsin[i] = (sigproxyin *)New(k_obj,5,lst,false); - if(pxsin[i]) pxsin[i]->init(this); - } - else { - int j = i-s_inlets; - SetSymbol(lst[4],sym_dynin); - pxmin[j] = (proxyin *)New(k_obj,5,lst,false); - if(pxmin[j]) pxmin[j]->init(this); - } - } - catch(...) { - error("%s - Error creating inlet proxy",thisName()); - } - } - - // --- create outlet proxies ------ - - if(s_outlets) pxsout = new sigproxyout *[s_outlets]; - if(m_outlets) pxmout = new proxyout *[m_outlets]; - for(i = 0; i < s_outlets+m_outlets; ++i) { - t_atom lst[5]; - SetInt(lst[0],i*100); - SetInt(lst[1],500); - SetSymbol(lst[2],sym_dot); - SetSymbol(lst[3],sym__); - - try { - if(i < s_outlets) { - SetSymbol(lst[4],sym_dynsout); - pxsout[i] = (sigproxyout *)New(k_obj,5,lst,false); - if(pxsout[i]) pxsout[i]->init(this); - } - else { - int j = i-s_outlets; - SetSymbol(lst[4],sym_dynout); - pxmout[j] = (proxyout *)New(k_obj,5,lst,false); - if(pxmout[j]) pxmout[j]->init(this,i); - } - } - catch(...) { - error("%s - Error creating outlet proxy",thisName()); - } - } -} - -void dyn::DelProxies() -{ - int i; - if(pxsin) { - for(i = 0; i < s_inlets; ++i) glist_delete(canvas,(t_gobj *)pxsin[i]); - delete[] pxsin; pxsin = NULL; - } - if(pxmin) { - for(i = 0; i < m_inlets; ++i) glist_delete(canvas,(t_gobj *)pxmin[i]); - delete[] pxmin; pxmin = NULL; - } - if(pxsout) { - for(i = 0; i < s_outlets; ++i) glist_delete(canvas,(t_gobj *)pxsout[i]); - delete[] pxsout; pxsout = NULL; - } - if(pxmout) { - for(i = 0; i < m_outlets; ++i) glist_delete(canvas,(t_gobj *)pxmout[i]); - delete[] pxmout; pxmout = NULL; - } -} - -t_glist *dyn::FindCanvas(const t_symbol *n) -{ - if(n == sym_dot) - return canvas; - else { - Obj *o = Find(n); - t_glist *gl = o->AsGlist(); - return gl && groot.find(gl)?(t_glist *)o->object:NULL; - } -} - -static t_gobj *GetLast(t_glist *gl) -{ - t_gobj *go = gl->gl_list; - if(go) - while(go->g_next) - go = go->g_next; - return go; -} - -bool dyn::Add(const t_symbol *n,t_glist *gl,t_gobj *o) -{ - // remove previous name entry - Obj *prv = Remove(n); - if(prv) delete prv; - - // get canvas map - GObjMap *gm = groot.find(gl); - // if none existing create one - if(!gm) return false; - - // insert object to canvas map - Obj *obj = new Obj(gl,o); - gm->insert(obj,n); - // insert object to object map - root.insert(n,obj); - - t_glist *nl = obj->AsGlist(); - if(nl) { - FLEXT_ASSERT(!groot.find(nl)); - groot.insert(nl,new GObjMap); - } - - return true; -} - -dyn::Obj *dyn::Remove(const t_symbol *n) -{ - // see if there's already an object of the same name - Obj *prv = root.remove(n); - if(prv) { - t_glist *pl = prv->glist; - // get canvas map - GObjMap *gm = groot.find(pl); - FLEXT_ASSERT(gm); - // remove object from canvas map - gm->remove(prv); - - // non-NULL if object itself is a glist - t_glist *gl = prv->AsGlist(); - if(gl) { - GObjMap *gm = groot.remove(gl); - // if it's a loaded abstraction it need not be in our list - if(gm) { - // remove all objects in canvas map - for(GObjMap::iterator it(*gm); it; ++it) { - Obj *r = Remove(it.data()); - FLEXT_ASSERT(r); - delete r; - } - // delete canvas map - delete gm; - } - } - } - return prv; -} - -t_gobj *dyn::New(const t_symbol *kind,int _argc_,const t_atom *_argv_,bool add) -{ - t_gobj *newest = NULL; - const char *err = NULL; - const t_symbol *name = NULL,*canv = NULL; - t_glist *glist = NULL; - - AtomListStatic<16> args; - - if(_argc_ >= 4 && CanbeInt(_argv_[0]) && CanbeInt(_argv_[1]) && IsSymbol(_argv_[2]) && IsSymbol(_argv_[3])) { - canv = GetSymbol(_argv_[2]); - name = GetSymbol(_argv_[3]); - - args(_argc_-2); - SetInt(args[0],GetAInt(_argv_[0])); - SetInt(args[1],GetAInt(_argv_[1])); - for(int i = 0; i < _argc_; ++i) SetAtom(args[i+2],_argv_[i+4]); - } - else if(_argc_ >= 3 && IsSymbol(_argv_[0]) && IsSymbol(_argv_[1])) { - canv = GetSymbol(_argv_[0]); - name = GetSymbol(_argv_[1]); - - args(_argc_); - // random position if not given - SetInt(args[0],rand()%600); - SetInt(args[1],50+rand()%400); - for(int i = 0; i < _argc_-2; ++i) SetAtom(args[i+2],_argv_[i+2]); - } - - if(args.Count()) { - if(name == sym_dot) - err = ". cannot be redefined"; - else if(!symreuse && root.find(name)) - err = "Name already in use"; - else if(!canv || !(glist = FindCanvas(canv))) - err = "Canvas could not be found"; - else { - // convert abstraction filenames - if(stripext && kind == k_obj && args.Count() >= 3 && IsSymbol(args[2])) { - const char *c = GetString(args[2]); - int l = strlen(c); - // check end of string for .pd file extension - if(l >= 4 && !memcmp(c+l-3,".pd",4)) { - // found -> get rid of it - char tmp[64],*t = tmp; - if(l > sizeof tmp-1) t = new char[l+1]; - memcpy(tmp,c,l-3); tmp[l-3] = 0; - SetString(args[2],tmp); - if(tmp != t) delete[] t; - } - } - - // set selected canvas as current - canvas_setcurrent(glist); - - t_gobj *last = GetLast(glist); - pd_typedmess((t_pd *)glist,(t_symbol *)kind,args.Count(),args.Atoms()); - newest = GetLast(glist); - - if(kind == k_obj) { - t_object *o = (t_object *)pd_newest(); - - if(!o) { - // PD creates a text object when the intended object could not be created - t_gobj *trash = GetLast(glist); - - // Test for newly created object.... - if(trash && last != trash) { - // Delete it! - glist_delete(glist,trash); - } - newest = NULL; - } - else - newest = &o->te_g; - } - - // look for latest created object - if(newest) { - // add to database - if(add) { - bool ok = Add(name,glist,newest); - FLEXT_ASSERT(ok); - } - - // send loadbang (if it is an abstraction) - if(pd_class(&newest->g_pd) == canvas_class) { - // hide the sub-canvas - pd_vmess((t_pd *)newest,const_cast(sym_vis),"i",0); - - // loadbang the abstraction - pd_vmess((t_pd *)newest,const_cast(sym_loadbang),""); - } - - // restart dsp - that's necessary because ToCanvas is called manually - canvas_update_dsp(); - } - else - if(!err) err = "Could not create object"; - - // pop the current canvas - canvas_unsetcurrent(glist); - } - } - else - if(!err) err = "new name object [args]"; - - if(err) throw err; - - return newest; -} - -void dyn::m_reset() -{ - int dsp = canvas_suspend_dsp(); - DoExit(); - DoInit(); - canvas_resume_dsp(dsp); -} - -void dyn::m_reload() -{ - post("%s - reload: not implemented yet",thisName()); -} - -void dyn::m_newobj(int argc,const t_atom *argv) -{ - try { New(k_obj,argc,argv); } - catch(const char *err) { - post("%s - %s",thisName(),err); - } - catch(...) { - post("%s - unknown error",thisName()); - } -} - -void dyn::m_newmsg(int argc,const t_atom *argv) -{ - try { New(k_msg,argc,argv); } - catch(const char *err) { - post("%s - %s",thisName(),err); - } - catch(...) { - post("%s - unknown error",thisName()); - } -} - -void dyn::m_newtext(int argc,const t_atom *argv) -{ - try { New(k_text,argc,argv); } - catch(const char *err) { - post("%s - %s",thisName(),err); - } - catch(...) { - post("%s - unknown error",thisName()); - } -} - -void dyn::m_del(const t_symbol *n) -{ - Obj *obj = Remove(n); - if(obj) { - glist_delete(obj->glist,obj->object); - delete obj; - } - else - post("%s - del: object not found",thisName()); -} - -void dyn::ConnDis(bool conn,int argc,const t_atom *argv) -{ - const t_symbol *s_n = NULL,*d_n = NULL; - int s_x,d_x; - - if(argc == 4 && IsSymbol(argv[0]) && CanbeInt(argv[1]) && IsSymbol(argv[2]) && CanbeInt(argv[3])) { - s_n = GetSymbol(argv[0]); - s_x = GetAInt(argv[1]); - d_n = GetSymbol(argv[2]); - d_x = GetAInt(argv[3]); - } - else if(argc == 3 && CanbeInt(argv[0]) && IsSymbol(argv[1]) && CanbeInt(argv[2])) { - s_n = NULL; - s_x = GetAInt(argv[0]); - d_n = GetSymbol(argv[1]); - d_x = GetAInt(argv[2]); - } - else if(argc == 3 && IsSymbol(argv[0]) && CanbeInt(argv[1]) && CanbeInt(argv[2])) { - s_n = GetSymbol(argv[0]); - s_x = GetAInt(argv[1]); - d_n = NULL; - d_x = GetAInt(argv[2]); - } - else if(argc == 2 && CanbeInt(argv[0]) && CanbeInt(argv[1])) { - // direct connection from proxy-in to proxy-out - s_n = NULL; - s_x = GetAInt(argv[0]); - d_n = NULL; - d_x = GetAInt(argv[1]); - } - else { - post("%s - connect: [src-name] src-slot [dst-name] dst-slot",thisName()); - return; - } - - t_text *s_obj,*d_obj; - t_glist *s_cnv,*d_cnv; - if(s_n) { - Obj *s_o = Find(s_n); - if(!s_o) { - post("%s - connect: source \"%s\" not found",thisName(),GetString(s_n)); - return; - } - s_obj = (t_text *)s_o->object; - s_cnv = s_o->glist; - } - else if(s_x < 0 && s_x >= s_inlets+m_inlets) { - post("%s - connect: inlet %i out of range (0..%i)",thisName(),s_x,s_inlets+m_inlets-1); - return; - } - else { - s_obj = s_x < s_inlets?&pxsin[s_x]->obj:&pxmin[s_x-s_inlets]->obj; - s_cnv = canvas; - s_x = 0; // always 0 for proxy - } - - if(d_n) { - Obj *d_o = Find(d_n); - if(!d_o) { - post("%s - connect: destination \"%s\" not found",thisName(),GetString(d_n)); - return; - } - d_obj = (t_text *)d_o->object; - d_cnv = d_o->glist; - } - else if(d_x < 0 && d_x >= s_outlets+m_outlets) { - post("%s - connect: outlet %i out of range (0..%i)",thisName(),d_x,s_outlets+m_outlets-1); - return; - } - else { - d_obj = d_x < s_outlets?&pxsout[d_x]->obj:&pxmout[d_x-s_outlets]->obj; - d_cnv = canvas; - d_x = 0; // always 0 for proxy - } - - if(s_cnv != d_cnv) { - post("%s - connect: objects \"%s\" and \"%s\" are not on same canvas",thisName(),GetString(s_n),GetString(d_n)); - return; - } - -#ifndef NO_VIS - int s_oix = canvas_getindex(s_cnv,&s_obj->te_g); - int d_oix = canvas_getindex(d_cnv,&d_obj->te_g); -#endif - - if(conn) { - if(!canvas_isconnected(s_cnv,(t_text *)s_obj,s_x,(t_text *)d_obj,d_x)) { -#ifdef NO_VIS - if(!obj_connect(s_obj, s_x, d_obj, d_x)) - post("%s - connect: connection could not be made",thisName()); -#else - canvas_connect(s_cnv,s_oix,s_x,d_oix,d_x); -#endif - } - } - else { -#ifdef NO_VIS - obj_disconnect(s_obj, s_x, d_obj, d_x); -#else - canvas_disconnect(s_cnv,s_oix,s_x,d_oix,d_x); -#endif - } -} - - -bool dyn::CbMethodResort(int n,const t_symbol *s,int argc,const t_atom *argv) -{ - if(n == 0) - // messages into inlet 0 are for dyn~ - return flext_base::m_method_(n,s,argc,argv); - else { - // all other messages are forwarded to proxies (and connected objects) - if(n >= s_inlets) - pxmin[n-s_inlets-1]->Message(s,argc,argv); - else - post("%s - message to signal inlet",thisName()); - return true; - } -} - - -void dyn::m_send(int argc,const t_atom *argv) -{ - if(argc < 2 || !IsSymbol(argv[0])) - post("%s - Syntax: send name message [args]",thisName()); - else { - Obj *o = Find(GetSymbol(argv[0])); - if(!o) - post("%s - send: object \"%s\" not found",thisName(),GetString(argv[0])); - else if(!canvasmsg && o->AsGlist()) - post("%s - send: object \"%s\" is an abstraction, please create proxy",thisName(),GetString(argv[0])); - else if(IsSymbol(argv[1])) - // has a tag symbol - pd_typedmess((t_pd *)o->object,(t_symbol *)GetSymbol(argv[1]),argc-2,(t_atom *)argv+2); - else - // assume it's a list - pd_forwardmess((t_pd *)o->object,argc-1,(t_atom *)argv+1); - } -} - -void dyn::sigproxyin::dsp(sigproxyin *x,t_signal **sp) -{ - FLEXT_ASSERT(x->vec && x->n); - int n = sp[0]->s_n; - if(n != x->n) { - post("dyn~ proxyin - blocksize doesn't match!"); - } - else - dsp_add_copy(x->vec,sp[0]->s_vec,n); -} - -void dyn::sigproxyout::dsp(sigproxyout *x,t_signal **sp) -{ - FLEXT_ASSERT(x->vec && x->n); - int n = sp[0]->s_n; - if(n != x->n) { - post("dyn~ proxyout - blocksize doesn't match!"); - } - else - dsp_add_copy(sp[0]->s_vec,x->vec,n); -} - -bool dyn::CbDsp() -{ - int n = Blocksize(); - t_sample *const *in = InSig(),*const *out = OutSig(); - int i; - for(i = 0; i < s_inlets; ++i) pxsin[i]->set(n,in[i+1]); - for(i = 0; i < s_outlets; ++i) pxsout[i]->set(n,out[i]); - - // add sub canvas to dsp list (no signal vector to borrow from .. set it to NULL) - mess1((t_pd *)canvas,const_cast(sym_dsp),NULL); - return false; -} diff --git a/externals/grill/fftease/fftease.mcp b/externals/grill/fftease/fftease.mcp deleted file mode 100755 index a3b9fc51..00000000 Binary files a/externals/grill/fftease/fftease.mcp and /dev/null differ diff --git a/externals/grill/fftease/fftease.vcproj b/externals/grill/fftease/fftease.vcproj deleted file mode 100644 index 5e3eb8ba..00000000 --- a/externals/grill/fftease/fftease.vcproj +++ /dev/null @@ -1,3346 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/fftease/gpl.txt b/externals/grill/fftease/gpl.txt deleted file mode 100644 index 5ea29a7d..00000000 --- a/externals/grill/fftease/gpl.txt +++ /dev/null @@ -1,346 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) 19yy - - 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 - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. - diff --git a/externals/grill/fftease/license.txt b/externals/grill/fftease/license.txt deleted file mode 100644 index 501b0d7a..00000000 --- a/externals/grill/fftease/license.txt +++ /dev/null @@ -1,86 +0,0 @@ -FFTease - A set of Live Spectral Processors -Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform - -Copyright (c)Thomas Grill (xovo@gmx.net) - ---------------------------------------------------------- - -Please note that this license only applies to the core FFTease objects, -but *NOT* the sources of the pv-lib. -The pv-lib is instead free for everyone to use as (s)he wants. - ---------------------------------------------------------- - -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. - -In the official fftease distribution, the GNU General Public License is -in the file gpl.txt - ---------------------------------------------------------- - - OTHER COPYRIGHT NOTICES - ---------------------------------------------------------- - - ---- FFtease jMax port -------------------------------------- - -This is FFTease, a set of live spectral processors. - -FFTease was originally designed & programmed by -Eric Lyon Web: http://arcana.dartmouth.edu/~eric/ - eMail: mailto:Eric.Lyon@Dartmouth.EDU -Christopher Web: http://www.sfc.keio.ac.jp/~penrose/ - eMail: mailto:penrose@sfc.keio.ac.jp - -NOTE! The original FFTease package for the MAX/MSP platform is *NOT* - under the GPL !! - However, Eric and Christoph gave me friendly permission to - port this really nice packagee to jMax and put - *ONLY THE jMax FFTease SOURCE'S* undert the GPL. - (for the GPL see the file LICENSE.TXT) - Thanks to you ! - -FFTease uses the pv-lib, which is used by this this release. -NOTE! The pv-lib is *NOT* under the GPL. - Rather it *IS FREE* to use by anyone as (s)he decides !! -The pv-lib is also written by E. Lyon and Ch. Penrose. - -The port of these objects to the jMax system is done by -Christian Klippel Web: http://mamalala.de - - - ---- flext ---------------------------------------------- -flext - C++ layer for Max/MSP and pd (pure data) externals -Copyright (C) 2001-2003 Thomas Grill - -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. - -In the official flext distribution, the GNU General Public License is -in the file gpl.txt - diff --git a/externals/grill/fftease/maxmsp/burrow~.help b/externals/grill/fftease/maxmsp/burrow~.help deleted file mode 100755 index 52b9819f..00000000 Binary files a/externals/grill/fftease/maxmsp/burrow~.help and /dev/null differ diff --git a/externals/grill/fftease/maxmsp/cross~.help b/externals/grill/fftease/maxmsp/cross~.help deleted file mode 100755 index c6b5f598..00000000 Binary files a/externals/grill/fftease/maxmsp/cross~.help and /dev/null differ diff --git a/externals/grill/fftease/maxmsp/dentist~.help b/externals/grill/fftease/maxmsp/dentist~.help deleted file mode 100755 index 4db546af..00000000 Binary files a/externals/grill/fftease/maxmsp/dentist~.help and /dev/null differ diff --git a/externals/grill/fftease/maxmsp/disarray~.help b/externals/grill/fftease/maxmsp/disarray~.help deleted file mode 100755 index 40c0d830..00000000 Binary files a/externals/grill/fftease/maxmsp/disarray~.help and /dev/null differ diff --git a/externals/grill/fftease/maxmsp/drown~.help b/externals/grill/fftease/maxmsp/drown~.help deleted file mode 100755 index 7d18de3e..00000000 Binary files a/externals/grill/fftease/maxmsp/drown~.help and /dev/null differ diff --git a/externals/grill/fftease/maxmsp/ether~.help b/externals/grill/fftease/maxmsp/ether~.help deleted file mode 100755 index 5c78816a..00000000 Binary files a/externals/grill/fftease/maxmsp/ether~.help and /dev/null differ diff --git a/externals/grill/fftease/maxmsp/fftease-objectmappings.txt b/externals/grill/fftease/maxmsp/fftease-objectmappings.txt deleted file mode 100644 index d75f6194..00000000 --- a/externals/grill/fftease/maxmsp/fftease-objectmappings.txt +++ /dev/null @@ -1,29 +0,0 @@ -max objectfile burrow~ fftease; -max objectfile cross~ fftease; -max objectfile dentist~ fftease; -max objectfile disarray~ fftease; -max objectfile drown~ fftease; -max objectfile ether~ fftease; -max objectfile morphine~ fftease; -max objectfile scrape~ fftease; -max objectfile shapee~ fftease; -max objectfile swinger~ fftease; -max objectfile taint~ fftease; -max objectfile thresher~ fftease; -max objectfile vacancy~ fftease; -max objectfile xsyn~ fftease; - -max oblist FFTease burrow~; -max oblist FFTease cross~; -max oblist FFTease dentist~; -max oblist FFTease disarray~; -max oblist FFTease drown~; -max oblist FFTease ether~; -max oblist FFTease morphine~; -max oblist FFTease scrape~; -max oblist FFTease shapee~; -max oblist FFTease swinger~; -max oblist FFTease taint~; -max oblist FFTease thresher~; -max oblist FFTease vacancy~; -max oblist FFTease xsyn~; diff --git a/externals/grill/fftease/maxmsp/fftease4.PICT b/externals/grill/fftease/maxmsp/fftease4.PICT deleted file mode 100755 index cb2a1502..00000000 Binary files a/externals/grill/fftease/maxmsp/fftease4.PICT and /dev/null differ diff --git a/externals/grill/fftease/media/nixon.aiff b/externals/grill/fftease/media/nixon.aiff deleted file mode 100644 index 3a58dc2b..00000000 Binary files a/externals/grill/fftease/media/nixon.aiff and /dev/null differ diff --git a/externals/grill/fftease/media/schubert.aiff b/externals/grill/fftease/media/schubert.aiff deleted file mode 100644 index 5e72ffc3..00000000 Binary files a/externals/grill/fftease/media/schubert.aiff and /dev/null differ diff --git a/externals/grill/fftease/package.txt b/externals/grill/fftease/package.txt deleted file mode 100644 index 997116e6..00000000 --- a/externals/grill/fftease/package.txt +++ /dev/null @@ -1,15 +0,0 @@ -NAME=fftease - -SRCDIR=src -PRECOMPILE=main.h - -SRCS= \ - makewindows.c fold.c convert.c leanconvert.c fft4.c fft.c \ - main.cpp fftease.cpp \ - burrow~.cpp cross~.cpp dentist~.cpp disarray~.cpp drown~.cpp ether~.cpp \ - morphine~.cpp scrape~.cpp shapee~.cpp swinger~.cpp taint~.cpp \ - thresher~.cpp vacancy~.cpp xsyn~.cpp - -HDRS= \ - pv.h main.h - diff --git a/externals/grill/fftease/pd/burrow~-help.pd b/externals/grill/fftease/pd/burrow~-help.pd deleted file mode 100644 index e4adade1..00000000 --- a/externals/grill/fftease/pd/burrow~-help.pd +++ /dev/null @@ -1,90 +0,0 @@ -#N canvas 143 237 600 366 12; -#X msg 17 161 getattributes; -#X obj 391 278 print A; -#X obj 161 210 burrow~ -30 -18 0; -#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1 -1 1; -#X msg 17 103 enable \$1; -#X obj 211 78 tgl 20 0 empty empty inverse_filtering 0 -6 0 10 -225271 --1 -1 0 1; -#X msg 211 102 invert \$1; -#X obj 373 78 nbx 5 18 -100 0 0 1 empty empty filtering_threshold(dB) -0 -6 0 10 -225271 -1 -1 -30 256; -#X msg 373 100 thresh \$1; -#X obj 374 145 nbx 5 18 -100 0 0 1 empty empty filter_multiplier(dB) -0 -6 0 10 -225271 -1 -1 -18 256; -#X msg 374 167 mult \$1; -#X obj 161 275 *~; -#X obj 202 280 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10 --261681 -1 -1 10000 1; -#X obj 150 312 dac~; -#X text 390 297 print attributes; -#X text 15 143 list attributes; -#X obj 16 8 cnv 15 550 40 empty empty burrow~ 10 22 0 24 -260818 -1 -0; -#X text 188 8 FFTease (C)Lyon \, Penrose (for Max/MSP); -#X text 188 28 flext port by Thomas Grill; -#X text 222 231 threshold \, multiplier \, invert; -#X obj 138 80 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1 --1; -#N canvas 35 47 456 306 schubert 0; -#X obj 51 234 outlet~; -#X obj 51 188 readsf~ 1; -#X obj 51 19 inlet; -#X msg 27 80 1; -#X obj 52 115 t f b; -#X obj 51 44 route bang 1 0; -#X msg 86 149 open ../media/schubert.aiff; -#X connect 1 0 0 0; -#X connect 2 0 5 0; -#X connect 3 0 4 0; -#X connect 4 0 1 0; -#X connect 4 1 6 0; -#X connect 5 0 3 0; -#X connect 5 1 4 0; -#X connect 5 2 1 0; -#X connect 6 0 1 0; -#X restore 233 172 pd schubert; -#N canvas 35 47 460 310 nixon 0; -#X obj 51 234 outlet~; -#X obj 51 188 readsf~ 1; -#X obj 51 19 inlet; -#X msg 27 80 1; -#X obj 52 115 t f b; -#X obj 51 44 route bang 1 0; -#X msg 86 149 open ../media/nixon.aiff; -#X connect 1 0 0 0; -#X connect 2 0 5 0; -#X connect 3 0 4 0; -#X connect 4 0 1 0; -#X connect 4 1 6 0; -#X connect 5 0 3 0; -#X connect 5 1 4 0; -#X connect 5 2 1 0; -#X connect 6 0 1 0; -#X restore 161 172 pd nixon; -#X msg 17 259 getthresh; -#X msg 17 284 getmult; -#X msg 17 234 getinvert; -#X text 15 213 get attributes; -#X connect 0 0 2 0; -#X connect 2 0 11 0; -#X connect 2 1 1 0; -#X connect 3 0 4 0; -#X connect 4 0 2 0; -#X connect 5 0 6 0; -#X connect 6 0 2 0; -#X connect 7 0 8 0; -#X connect 8 0 2 0; -#X connect 9 0 10 0; -#X connect 10 0 2 0; -#X connect 11 0 13 0; -#X connect 11 0 13 1; -#X connect 12 0 11 1; -#X connect 20 0 21 0; -#X connect 20 0 22 0; -#X connect 21 0 2 1; -#X connect 22 0 2 0; -#X connect 23 0 2 0; -#X connect 24 0 2 0; -#X connect 25 0 2 0; diff --git a/externals/grill/fftease/pd/cross~-help.pd b/externals/grill/fftease/pd/cross~-help.pd deleted file mode 100644 index 593927c7..00000000 --- a/externals/grill/fftease/pd/cross~-help.pd +++ /dev/null @@ -1,88 +0,0 @@ -#N canvas 275 53 604 370 12; -#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1 -1 1; -#X msg 17 103 enable \$1; -#X obj 312 84 nbx 5 18 -100 0 0 1 empty empty threshold(dB) 0 -6 0 -10 -225271 -1 -1 -86 256; -#X obj 161 275 *~; -#X obj 202 280 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10 --261681 -1 -1 11800 1; -#X obj 150 312 dac~; -#X obj 16 8 cnv 15 550 40 empty empty cross~ 10 22 0 24 -260818 -1 -0; -#X text 188 8 FFTease (C)Lyon \, Penrose (for Max/MSP); -#X text 188 28 flext port by Thomas Grill; -#X obj 161 210 cross~; -#X obj 312 161 sig~; -#X obj 311 113 + 100; -#X obj 312 136 dbtorms; -#X obj 161 80 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1 --1; -#N canvas 35 47 456 306 schubert 0; -#X obj 51 234 outlet~; -#X obj 51 188 readsf~ 1; -#X obj 51 19 inlet; -#X msg 27 80 1; -#X obj 52 115 t f b; -#X obj 51 44 route bang 1 0; -#X msg 86 149 open ../media/schubert.aiff; -#X connect 1 0 0 0; -#X connect 2 0 5 0; -#X connect 3 0 4 0; -#X connect 4 0 1 0; -#X connect 4 1 6 0; -#X connect 5 0 3 0; -#X connect 5 1 4 0; -#X connect 5 2 1 0; -#X connect 6 0 1 0; -#X restore 162 175 pd schubert; -#N canvas 35 47 460 310 nixon 0; -#X obj 51 234 outlet~; -#X obj 51 188 readsf~ 1; -#X obj 51 19 inlet; -#X msg 27 80 1; -#X obj 52 115 t f b; -#X obj 51 44 route bang 1 0; -#X msg 86 149 open ../media/nixon.aiff; -#X connect 1 0 0 0; -#X connect 2 0 5 0; -#X connect 3 0 4 0; -#X connect 4 0 1 0; -#X connect 4 1 6 0; -#X connect 5 0 3 0; -#X connect 5 1 4 0; -#X connect 5 2 1 0; -#X connect 6 0 1 0; -#X restore 183 142 pd nixon; -#X msg 17 161 getattributes; -#X text 15 143 list attributes; -#X text 15 215 get attributes; -#X obj 445 85 tgl 25 1 empty empty memorize 0 -6 0 10 -225271 -1 -1 -1 1; -#X text 371 182 partials below the threshold; -#X text 370 200 are taken from the previous; -#X text 370 216 frame; -#X obj 391 278 print A; -#X text 390 297 print attributes; -#X msg 17 234 getmemorize; -#X text 373 165 memorize defaults to 1; -#X msg 445 117 memorize \$1; -#X connect 0 0 1 0; -#X connect 1 0 9 0; -#X connect 2 0 11 0; -#X connect 3 0 5 0; -#X connect 3 0 5 1; -#X connect 4 0 3 1; -#X connect 9 0 3 0; -#X connect 9 1 23 0; -#X connect 10 0 9 2; -#X connect 11 0 12 0; -#X connect 12 0 10 0; -#X connect 13 0 14 0; -#X connect 13 0 15 0; -#X connect 14 0 9 0; -#X connect 15 0 9 1; -#X connect 16 0 9 0; -#X connect 19 0 27 0; -#X connect 25 0 9 0; -#X connect 27 0 9 0; diff --git a/externals/grill/fftease/pd/dentist~-help.pd b/externals/grill/fftease/pd/dentist~-help.pd deleted file mode 100644 index 7434e57a..00000000 --- a/externals/grill/fftease/pd/dentist~-help.pd +++ /dev/null @@ -1,65 +0,0 @@ -#N canvas 45 260 600 366 12; -#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1 -1 1; -#X msg 17 103 enable \$1; -#X obj 417 91 nbx 5 18 0 20000 0 0 empty empty knee_frq 0 -6 0 10 -225271 --1 -1 0 256; -#X obj 211 272 *~; -#X obj 252 277 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10 --261681 -1 -1 10200 1; -#X obj 200 309 dac~; -#X obj 16 8 cnv 15 550 40 empty empty dentist~ 10 22 0 24 -260818 -1 -0; -#X text 198 8 FFTease (C)Lyon \, Penrose (for Max/MSP); -#X text 198 28 flext port by Thomas Grill; -#X msg 14 181 getattributes; -#X obj 432 255 print A; -#X obj 337 90 bng 25 250 50 0 empty empty reshuffle 0 -6 0 8 -225271 --1 -1; -#X msg 417 123 knee \$1; -#X obj 495 91 nbx 5 18 0 1000 0 0 empty empty teeth 0 -6 0 10 -225271 --1 -1 0 256; -#X msg 495 123 teeth \$1; -#X text 348 209 knee frq. \, teeth; -#X obj 211 208 dentist~ 1000 10; -#X text 14 164 list attributes; -#X obj 212 92 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1 --1; -#N canvas 35 47 456 306 schubert 0; -#X obj 51 234 outlet~; -#X obj 51 188 readsf~ 1; -#X obj 51 19 inlet; -#X msg 27 80 1; -#X obj 52 115 t f b; -#X obj 51 44 route bang 1 0; -#X msg 86 149 open ../media/schubert.aiff; -#X connect 1 0 0 0; -#X connect 2 0 5 0; -#X connect 3 0 4 0; -#X connect 4 0 1 0; -#X connect 4 1 6 0; -#X connect 5 0 3 0; -#X connect 5 1 4 0; -#X connect 5 2 1 0; -#X connect 6 0 1 0; -#X restore 212 156 pd schubert; -#X text 15 222 get attributes; -#X msg 15 239 getknee; -#X msg 15 267 getteeth; -#X connect 0 0 1 0; -#X connect 1 0 16 0; -#X connect 2 0 12 0; -#X connect 3 0 5 0; -#X connect 3 0 5 1; -#X connect 4 0 3 1; -#X connect 9 0 16 0; -#X connect 11 0 16 0; -#X connect 12 0 16 0; -#X connect 13 0 14 0; -#X connect 14 0 16 0; -#X connect 16 0 3 0; -#X connect 16 1 10 0; -#X connect 18 0 19 0; -#X connect 19 0 16 0; -#X connect 21 0 16 0; -#X connect 22 0 16 0; diff --git a/externals/grill/fftease/pd/disarray~-help.pd b/externals/grill/fftease/pd/disarray~-help.pd deleted file mode 100644 index b07a619d..00000000 --- a/externals/grill/fftease/pd/disarray~-help.pd +++ /dev/null @@ -1,67 +0,0 @@ -#N canvas 68 275 606 372 12; -#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1 -1 1; -#X msg 17 103 enable \$1; -#X obj 369 88 nbx 5 18 0 20000 0 1 empty empty knee_frq 0 -6 0 10 -225271 --1 -1 1300 256; -#X obj 211 272 *~; -#X obj 252 277 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10 --261681 -1 -1 9600 1; -#X obj 200 309 dac~; -#X obj 16 8 cnv 15 550 40 empty empty disarray~ 10 22 0 24 -260818 --1 0; -#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP); -#X text 206 27 flext port by Thomas Grill; -#X msg 14 181 getattributes; -#X obj 427 281 print A; -#X text 14 164 list attributes; -#X obj 211 217 disarray~ 1300 0 20; -#X obj 281 89 bng 25 250 50 0 empty empty reshuffle 0 -6 0 10 -225271 --1 -1; -#X obj 454 88 nbx 5 18 0 1000 0 1 empty empty shuffle_count 0 -6 0 -10 -225271 -1 -1 20 256; -#X text 424 300 attributes; -#X text 15 219 get attributes; -#X obj 207 89 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1 --1; -#N canvas 35 47 456 306 schubert 0; -#X obj 51 234 outlet~; -#X obj 51 188 readsf~ 1; -#X obj 51 19 inlet; -#X msg 27 80 1; -#X obj 52 115 t f b; -#X obj 51 44 route bang 1 0; -#X msg 86 149 open ../media/schubert.aiff; -#X connect 1 0 0 0; -#X connect 2 0 5 0; -#X connect 3 0 4 0; -#X connect 4 0 1 0; -#X connect 4 1 6 0; -#X connect 5 0 3 0; -#X connect 5 1 4 0; -#X connect 5 2 1 0; -#X connect 6 0 1 0; -#X restore 212 154 pd schubert; -#X msg 369 120 knee \$1; -#X msg 454 120 partials \$1; -#X msg 15 238 getknee; -#X msg 16 263 getpartials; -#X text 292 199 knee frq \, quality \, partials; -#X text 367 218 (these are the defaults); -#X connect 0 0 1 0; -#X connect 1 0 12 0; -#X connect 2 0 19 0; -#X connect 3 0 5 0; -#X connect 3 0 5 1; -#X connect 4 0 3 1; -#X connect 9 0 12 0; -#X connect 12 0 3 0; -#X connect 12 1 10 0; -#X connect 13 0 12 0; -#X connect 14 0 20 0; -#X connect 17 0 18 0; -#X connect 18 0 12 0; -#X connect 19 0 12 0; -#X connect 20 0 12 0; -#X connect 21 0 12 0; -#X connect 22 0 12 0; diff --git a/externals/grill/fftease/pd/drown~-help.pd b/externals/grill/fftease/pd/drown~-help.pd deleted file mode 100644 index 2e492311..00000000 --- a/externals/grill/fftease/pd/drown~-help.pd +++ /dev/null @@ -1,61 +0,0 @@ -#N canvas 140 138 612 378 12; -#X obj 17 90 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1 -1 1; -#X msg 17 115 enable \$1; -#X obj 166 272 *~; -#X obj 207 277 hsl 128 15 0.001 1000 1 1 empty empty volume -2 -6 0 -10 -261681 -1 -1 9700 1; -#X obj 155 309 dac~; -#X obj 16 8 cnv 15 550 40 empty empty drown~ 10 22 0 24 -260818 -1 -0; -#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP); -#X text 206 27 flext port by Thomas Grill; -#X obj 294 97 nbx 5 18 -100 0 0 1 empty empty threshold 0 -6 0 10 -225271 --1 -1 -75 256; -#X obj 166 88 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1 --1; -#N canvas 35 47 456 306 schubert 0; -#X obj 51 234 outlet~; -#X obj 51 188 readsf~ 1; -#X obj 51 19 inlet; -#X msg 27 80 1; -#X obj 52 115 t f b; -#X obj 51 44 route bang 1 0; -#X msg 86 149 open ../media/schubert.aiff; -#X connect 1 0 0 0; -#X connect 2 0 5 0; -#X connect 3 0 4 0; -#X connect 4 0 1 0; -#X connect 4 1 6 0; -#X connect 5 0 3 0; -#X connect 5 1 4 0; -#X connect 5 2 1 0; -#X connect 6 0 1 0; -#X restore 166 126 pd schubert; -#X obj 166 217 drown~; -#X obj 384 174 sig~ 1; -#X obj 385 99 nbx 5 18 -100 10 0 1 empty empty multiplication_factor -0 -6 0 10 -225271 -1 -1 -18 256; -#X obj 292 175 sig~ 1; -#X obj 294 125 + 100; -#X obj 385 125 + 100; -#X obj 385 148 dbtorms; -#X obj 293 149 dbtorms; -#X obj 405 324 denude~; -#X text 403 345 alternative naming; -#X connect 0 0 1 0; -#X connect 1 0 11 0; -#X connect 2 0 4 0; -#X connect 2 0 4 1; -#X connect 3 0 2 1; -#X connect 8 0 15 0; -#X connect 9 0 10 0; -#X connect 10 0 11 0; -#X connect 11 0 2 0; -#X connect 12 0 11 2; -#X connect 13 0 16 0; -#X connect 14 0 11 1; -#X connect 15 0 18 0; -#X connect 16 0 17 0; -#X connect 17 0 12 0; -#X connect 18 0 14 0; diff --git a/externals/grill/fftease/pd/ether~-help.pd b/externals/grill/fftease/pd/ether~-help.pd deleted file mode 100644 index 720fe466..00000000 --- a/externals/grill/fftease/pd/ether~-help.pd +++ /dev/null @@ -1,84 +0,0 @@ -#N canvas 140 138 602 368 12; -#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1 -1 1; -#X msg 17 103 enable \$1; -#X obj 211 272 *~; -#X obj 252 277 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10 --261681 -1 -1 8600 1; -#X obj 200 309 dac~; -#X obj 16 8 cnv 15 550 40 empty empty ether~ 10 22 0 24 -260818 -1 -0; -#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP); -#X text 206 27 flext port by Thomas Grill; -#X msg 14 181 getattributes; -#X obj 427 281 print A; -#X text 14 164 list attributes; -#X obj 499 84 nbx 5 18 0 1000 0 0 empty empty index 0 -6 0 10 -225271 --1 -1 22 256; -#X text 424 300 attributes; -#X msg 387 117 invert \$1; -#X obj 387 83 tgl 25 0 empty empty invert 0 -6 0 8 -225271 -1 -1 0 -1; -#X msg 499 116 index \$1; -#X obj 211 217 ether~ 1; -#X text 287 212 quality \, invert \, index; -#X obj 211 88 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1 --1; -#N canvas 35 47 456 306 schubert 0; -#X obj 51 234 outlet~; -#X obj 51 188 readsf~ 1; -#X obj 51 19 inlet; -#X msg 27 80 1; -#X obj 52 115 t f b; -#X obj 51 44 route bang 1 0; -#X msg 86 149 open ../media/schubert.aiff; -#X connect 1 0 0 0; -#X connect 2 0 5 0; -#X connect 3 0 4 0; -#X connect 4 0 1 0; -#X connect 4 1 6 0; -#X connect 5 0 3 0; -#X connect 5 1 4 0; -#X connect 5 2 1 0; -#X connect 6 0 1 0; -#X restore 271 172 pd schubert; -#N canvas 35 47 460 310 nixon 0; -#X obj 51 234 outlet~; -#X obj 51 188 readsf~ 1; -#X obj 51 19 inlet; -#X msg 27 80 1; -#X obj 52 115 t f b; -#X obj 51 44 route bang 1 0; -#X msg 86 149 open ../media/nixon.aiff; -#X connect 1 0 0 0; -#X connect 2 0 5 0; -#X connect 3 0 4 0; -#X connect 4 0 1 0; -#X connect 4 1 6 0; -#X connect 5 0 3 0; -#X connect 5 1 4 0; -#X connect 5 2 1 0; -#X connect 6 0 1 0; -#X restore 212 148 pd nixon; -#X text 15 213 get attributes; -#X msg 15 230 getinvert; -#X msg 16 259 getindex; -#X text 287 228 (defaults are 0 \, 0 \, 0); -#X connect 0 0 1 0; -#X connect 1 0 16 0; -#X connect 2 0 4 0; -#X connect 2 0 4 1; -#X connect 3 0 2 1; -#X connect 8 0 16 0; -#X connect 11 0 15 0; -#X connect 13 0 16 0; -#X connect 14 0 13 0; -#X connect 15 0 16 0; -#X connect 16 0 2 0; -#X connect 16 1 9 0; -#X connect 18 0 19 0; -#X connect 18 0 20 0; -#X connect 19 0 16 1; -#X connect 20 0 16 0; -#X connect 22 0 16 0; -#X connect 23 0 16 0; diff --git a/externals/grill/fftease/pd/morphine~-help.pd b/externals/grill/fftease/pd/morphine~-help.pd deleted file mode 100644 index b8ae6f2f..00000000 --- a/externals/grill/fftease/pd/morphine~-help.pd +++ /dev/null @@ -1,77 +0,0 @@ -#N canvas 140 138 606 372 12; -#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1 -1 1; -#X msg 17 103 enable \$1; -#X obj 211 272 *~; -#X obj 252 277 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10 --261681 -1 -1 10000 1; -#X obj 200 309 dac~; -#X obj 16 8 cnv 15 550 40 empty empty morphine~ 10 22 0 24 -260818 --1 0; -#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP); -#X text 206 27 flext port by Thomas Grill; -#X msg 14 181 getattributes; -#X obj 427 281 print A; -#X text 14 164 list attributes; -#X obj 414 86 nbx 5 18 0.001 1 1 1 empty empty index 0 -6 0 10 -225271 --1 -1 0.001 256; -#X text 424 300 attributes; -#X msg 414 110 index \$1; -#X obj 211 88 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1 --1; -#N canvas 35 47 456 306 schubert 0; -#X obj 51 234 outlet~; -#X obj 51 188 readsf~ 1; -#X obj 51 19 inlet; -#X msg 27 80 1; -#X obj 52 115 t f b; -#X obj 51 44 route bang 1 0; -#X msg 86 149 open ../media/schubert.aiff; -#X connect 1 0 0 0; -#X connect 2 0 5 0; -#X connect 3 0 4 0; -#X connect 4 0 1 0; -#X connect 4 1 6 0; -#X connect 5 0 3 0; -#X connect 5 1 4 0; -#X connect 5 2 1 0; -#X connect 6 0 1 0; -#X restore 210 184 pd schubert; -#N canvas 35 47 460 310 nixon 0; -#X obj 51 234 outlet~; -#X obj 51 188 readsf~ 1; -#X obj 51 19 inlet; -#X msg 27 80 1; -#X obj 52 115 t f b; -#X obj 51 44 route bang 1 0; -#X msg 86 149 open ../media/nixon.aiff; -#X connect 1 0 0 0; -#X connect 2 0 5 0; -#X connect 3 0 4 0; -#X connect 4 0 1 0; -#X connect 4 1 6 0; -#X connect 5 0 3 0; -#X connect 5 1 4 0; -#X connect 5 2 1 0; -#X connect 6 0 1 0; -#X restore 307 186 pd nixon; -#X text 15 215 get attributes; -#X msg 16 234 getindex; -#X text 477 87 (0...1); -#X obj 211 217 morphine~ 0.05; -#X text 336 219 index (defaults to 0); -#X connect 0 0 1 0; -#X connect 1 0 20 0; -#X connect 2 0 4 0; -#X connect 2 0 4 1; -#X connect 3 0 2 1; -#X connect 8 0 20 0; -#X connect 11 0 13 0; -#X connect 13 0 20 0; -#X connect 14 0 15 0; -#X connect 14 0 16 0; -#X connect 15 0 20 0; -#X connect 16 0 20 1; -#X connect 18 0 20 0; -#X connect 20 0 2 0; -#X connect 20 1 9 0; diff --git a/externals/grill/fftease/pd/scrape~-help.pd b/externals/grill/fftease/pd/scrape~-help.pd deleted file mode 100644 index c99187ee..00000000 --- a/externals/grill/fftease/pd/scrape~-help.pd +++ /dev/null @@ -1,72 +0,0 @@ -#N canvas 140 138 606 372 12; -#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1 -1 1; -#X msg 17 103 enable \$1; -#X obj 211 272 *~; -#X obj 252 277 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10 --261681 -1 -1 9800 1; -#X obj 200 309 dac~; -#X obj 16 8 cnv 15 550 40 empty empty scrape~ 10 22 0 24 -260818 -1 -0; -#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP); -#X text 206 27 flext port by Thomas Grill; -#X msg 14 181 getattributes; -#X obj 427 281 print A; -#X text 14 164 list attributes; -#X obj 423 90 nbx 5 18 10 20000 1 1 empty empty knee 0 -6 0 10 -225271 --1 -1 1000 256; -#X text 424 300 attributes; -#X obj 211 88 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1 --1; -#N canvas 35 47 456 306 schubert 0; -#X obj 51 234 outlet~; -#X obj 51 188 readsf~ 1; -#X obj 51 19 inlet; -#X msg 27 80 1; -#X obj 52 115 t f b; -#X obj 51 44 route bang 1 0; -#X msg 86 149 open ../media/schubert.aiff; -#X connect 1 0 0 0; -#X connect 2 0 5 0; -#X connect 3 0 4 0; -#X connect 4 0 1 0; -#X connect 4 1 6 0; -#X connect 5 0 3 0; -#X connect 5 1 4 0; -#X connect 5 2 1 0; -#X connect 6 0 1 0; -#X restore 210 184 pd schubert; -#X text 15 215 get attributes; -#X obj 319 89 nbx 5 18 -100 0 0 1 empty empty multiplier 0 -6 0 10 --225271 -1 -1 -60 256; -#X obj 318 183 sig~ 1; -#X obj 318 116 + 100; -#X obj 318 143 dbtorms; -#X msg 16 234 getknee; -#X msg 16 257 getcutoff; -#X msg 423 114 knee \$1; -#X obj 505 90 nbx 5 18 10 20000 1 1 empty empty cutoff 0 -6 0 10 -225271 --1 -1 2000 256; -#X msg 505 114 cutoff \$1; -#X obj 211 217 scrape~ 1000 2000; -#X text 361 219 knee \, cutoff; -#X connect 0 0 1 0; -#X connect 1 0 25 0; -#X connect 2 0 4 0; -#X connect 2 0 4 1; -#X connect 3 0 2 1; -#X connect 8 0 25 0; -#X connect 11 0 22 0; -#X connect 13 0 14 0; -#X connect 14 0 25 0; -#X connect 16 0 18 0; -#X connect 17 0 25 1; -#X connect 18 0 19 0; -#X connect 19 0 17 0; -#X connect 20 0 25 0; -#X connect 21 0 25 0; -#X connect 22 0 25 0; -#X connect 23 0 24 0; -#X connect 24 0 25 0; -#X connect 25 0 2 0; -#X connect 25 1 9 0; diff --git a/externals/grill/fftease/pd/shapee~-help.pd b/externals/grill/fftease/pd/shapee~-help.pd deleted file mode 100644 index 75305fb0..00000000 --- a/externals/grill/fftease/pd/shapee~-help.pd +++ /dev/null @@ -1,62 +0,0 @@ -#N canvas 140 138 612 378 12; -#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1 -1 1; -#X msg 17 103 enable \$1; -#X obj 211 272 *~; -#X obj 252 277 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10 --261681 -1 -1 10700 1; -#X obj 200 309 dac~; -#X obj 16 8 cnv 15 550 40 empty empty shapee~ 10 22 0 24 -260818 -1 -0; -#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP); -#X text 206 27 flext port by Thomas Grill; -#X obj 211 88 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1 --1; -#N canvas 35 47 458 308 schubert 0; -#X obj 51 234 outlet~; -#X obj 51 188 readsf~ 1; -#X obj 51 19 inlet; -#X msg 27 80 1; -#X obj 52 115 t f b; -#X obj 51 44 route bang 1 0; -#X msg 86 149 open ../media/schubert.aiff; -#X connect 1 0 0 0; -#X connect 2 0 5 0; -#X connect 3 0 4 0; -#X connect 4 0 1 0; -#X connect 4 1 6 0; -#X connect 5 0 3 0; -#X connect 5 1 4 0; -#X connect 5 2 1 0; -#X connect 6 0 1 0; -#X restore 210 184 pd schubert; -#N canvas 35 47 460 310 nixon 0; -#X obj 51 234 outlet~; -#X obj 51 188 readsf~ 1; -#X obj 51 19 inlet; -#X msg 27 80 1; -#X obj 52 115 t f b; -#X obj 51 44 route bang 1 0; -#X msg 86 149 open ../media/nixon.aiff; -#X connect 1 0 0 0; -#X connect 2 0 5 0; -#X connect 3 0 4 0; -#X connect 4 0 1 0; -#X connect 4 1 6 0; -#X connect 5 0 3 0; -#X connect 5 1 4 0; -#X connect 5 2 1 0; -#X connect 6 0 1 0; -#X restore 307 184 pd nixon; -#X text 298 219 quality (defaults to 0); -#X obj 211 217 shapee~ 1; -#X connect 0 0 1 0; -#X connect 1 0 12 0; -#X connect 2 0 4 0; -#X connect 2 0 4 1; -#X connect 3 0 2 1; -#X connect 8 0 9 0; -#X connect 8 0 10 0; -#X connect 9 0 12 0; -#X connect 10 0 12 1; -#X connect 12 0 2 0; diff --git a/externals/grill/fftease/pd/swinger~-help.pd b/externals/grill/fftease/pd/swinger~-help.pd deleted file mode 100644 index deb7058f..00000000 --- a/externals/grill/fftease/pd/swinger~-help.pd +++ /dev/null @@ -1,62 +0,0 @@ -#N canvas 275 53 610 376 12; -#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1 -1 1; -#X msg 17 103 enable \$1; -#X obj 198 275 *~; -#X obj 239 280 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10 --261681 -1 -1 10300 1; -#X obj 187 312 dac~; -#X obj 16 8 cnv 15 550 40 empty empty swinger~ 10 22 0 24 -260818 -1 -0; -#X text 188 8 FFTease (C)Lyon \, Penrose (for Max/MSP); -#X text 188 28 flext port by Thomas Grill; -#X obj 198 80 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1 --1; -#N canvas 35 47 456 306 schubert 0; -#X obj 51 234 outlet~; -#X obj 51 188 readsf~ 1; -#X obj 51 19 inlet; -#X msg 27 80 1; -#X obj 52 115 t f b; -#X obj 51 44 route bang 1 0; -#X msg 86 149 open ../media/schubert.aiff; -#X connect 1 0 0 0; -#X connect 2 0 5 0; -#X connect 3 0 4 0; -#X connect 4 0 1 0; -#X connect 4 1 6 0; -#X connect 5 0 3 0; -#X connect 5 1 4 0; -#X connect 5 2 1 0; -#X connect 6 0 1 0; -#X restore 199 175 pd schubert; -#N canvas 35 47 460 310 nixon 0; -#X obj 51 234 outlet~; -#X obj 51 188 readsf~ 1; -#X obj 51 19 inlet; -#X msg 27 80 1; -#X obj 52 115 t f b; -#X obj 51 44 route bang 1 0; -#X msg 86 149 open ../media/nixon.aiff; -#X connect 1 0 0 0; -#X connect 2 0 5 0; -#X connect 3 0 4 0; -#X connect 4 0 1 0; -#X connect 4 1 6 0; -#X connect 5 0 3 0; -#X connect 5 1 4 0; -#X connect 5 2 1 0; -#X connect 6 0 1 0; -#X restore 274 144 pd nixon; -#X obj 198 210 swinger~ 1; -#X text 284 210 quality (defaults to 0); -#X connect 0 0 1 0; -#X connect 1 0 11 0; -#X connect 2 0 4 0; -#X connect 2 0 4 1; -#X connect 3 0 2 1; -#X connect 8 0 9 0; -#X connect 8 0 10 0; -#X connect 9 0 11 0; -#X connect 10 0 11 1; -#X connect 11 0 2 0; diff --git a/externals/grill/fftease/pd/taint~-help.pd b/externals/grill/fftease/pd/taint~-help.pd deleted file mode 100644 index 00f859af..00000000 --- a/externals/grill/fftease/pd/taint~-help.pd +++ /dev/null @@ -1,83 +0,0 @@ -#N canvas 140 138 614 380 12; -#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1 -1 1; -#X msg 17 103 enable \$1; -#X obj 211 272 *~; -#X obj 252 277 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10 --261681 -1 -1 10000 1; -#X obj 200 309 dac~; -#X obj 16 8 cnv 15 550 40 empty empty taint~ 10 22 0 24 -260818 -1 -0; -#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP); -#X text 206 27 flext port by Thomas Grill; -#X msg 14 181 getattributes; -#X obj 427 281 print A; -#X text 14 164 list attributes; -#X obj 480 89 nbx 5 18 -100 0 0 1 empty empty thresh 0 -6 0 10 -225271 --1 -1 -60 256; -#X text 424 300 attributes; -#X obj 211 88 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1 --1; -#N canvas 35 47 456 306 schubert 0; -#X obj 51 234 outlet~; -#X obj 51 188 readsf~ 1; -#X obj 51 19 inlet; -#X msg 27 80 1; -#X obj 52 115 t f b; -#X obj 51 44 route bang 1 0; -#X msg 86 149 open ../media/schubert.aiff; -#X connect 1 0 0 0; -#X connect 2 0 5 0; -#X connect 3 0 4 0; -#X connect 4 0 1 0; -#X connect 4 1 6 0; -#X connect 5 0 3 0; -#X connect 5 1 4 0; -#X connect 5 2 1 0; -#X connect 6 0 1 0; -#X restore 210 184 pd schubert; -#N canvas 35 47 460 310 nixon 0; -#X obj 51 234 outlet~; -#X obj 51 188 readsf~ 1; -#X obj 51 19 inlet; -#X msg 27 80 1; -#X obj 52 115 t f b; -#X obj 51 44 route bang 1 0; -#X msg 86 149 open ../media/nixon.aiff; -#X connect 1 0 0 0; -#X connect 2 0 5 0; -#X connect 3 0 4 0; -#X connect 4 0 1 0; -#X connect 4 1 6 0; -#X connect 5 0 3 0; -#X connect 5 1 4 0; -#X connect 5 2 1 0; -#X connect 6 0 1 0; -#X restore 302 185 pd nixon; -#X text 15 215 get attributes; -#X obj 211 217 taint~ -60 0; -#X msg 481 125 thresh \$1; -#X obj 391 89 tgl 25 1 empty empty invert 0 -6 0 10 -225271 -1 -1 0 -1; -#X msg 391 125 invert \$1; -#X msg 16 258 getthresh; -#X msg 16 234 getinvert; -#X text 319 217 threshold \, invert (default -10 \, 0); -#X connect 0 0 1 0; -#X connect 1 0 17 0; -#X connect 2 0 4 0; -#X connect 2 0 4 1; -#X connect 3 0 2 1; -#X connect 8 0 17 0; -#X connect 11 0 18 0; -#X connect 13 0 14 0; -#X connect 13 0 15 0; -#X connect 14 0 17 0; -#X connect 15 0 17 1; -#X connect 17 0 2 0; -#X connect 17 1 9 0; -#X connect 18 0 17 0; -#X connect 19 0 20 0; -#X connect 20 0 17 0; -#X connect 21 0 17 0; -#X connect 22 0 17 0; diff --git a/externals/grill/fftease/pd/thresher~-help.pd b/externals/grill/fftease/pd/thresher~-help.pd deleted file mode 100644 index d34d4f46..00000000 --- a/externals/grill/fftease/pd/thresher~-help.pd +++ /dev/null @@ -1,46 +0,0 @@ -#N canvas 140 138 585 330 12; -#X obj 17 86 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1 -1 1; -#X msg 17 111 enable \$1; -#X obj 219 248 *~; -#X obj 260 253 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10 --261681 -1 -1 10300 1; -#X obj 208 285 dac~; -#X obj 16 8 cnv 15 550 40 empty empty thresher~ 10 22 0 24 -260818 --1 0; -#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP); -#X text 206 27 flext port by Thomas Grill; -#X obj 327 217 print A; -#X text 391 216 attributes; -#X obj 219 92 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1 --1; -#N canvas 35 47 460 310 nixon 0; -#X obj 51 234 outlet~; -#X obj 51 188 readsf~ 1; -#X obj 51 19 inlet; -#X msg 27 80 1; -#X obj 52 115 t f b; -#X obj 51 44 route bang 1 0; -#X msg 86 149 open ../media/nixon.aiff; -#X connect 1 0 0 0; -#X connect 2 0 5 0; -#X connect 3 0 4 0; -#X connect 4 0 1 0; -#X connect 4 1 6 0; -#X connect 5 0 3 0; -#X connect 5 1 4 0; -#X connect 5 2 1 0; -#X connect 6 0 1 0; -#X restore 219 144 pd nixon; -#X obj 218 187 thresher~; -#X obj 18 250 nacho~; -#X text 17 274 alternative name; -#X connect 0 0 1 0; -#X connect 1 0 12 0; -#X connect 2 0 4 0; -#X connect 2 0 4 1; -#X connect 3 0 2 1; -#X connect 10 0 11 0; -#X connect 11 0 12 0; -#X connect 12 0 2 0; -#X connect 12 1 8 0; diff --git a/externals/grill/fftease/pd/vacancy~-help.pd b/externals/grill/fftease/pd/vacancy~-help.pd deleted file mode 100644 index b191f16a..00000000 --- a/externals/grill/fftease/pd/vacancy~-help.pd +++ /dev/null @@ -1,97 +0,0 @@ -#N canvas 140 138 622 388 12; -#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1 -1 1; -#X msg 17 103 enable \$1; -#X obj 179 284 *~; -#X obj 220 289 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10 --261681 -1 -1 11000 1; -#X obj 168 321 dac~; -#X obj 16 8 cnv 15 550 40 empty empty vacancy~ 10 22 0 24 -260818 -1 -0; -#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP); -#X text 206 27 flext port by Thomas Grill; -#X msg 14 181 getattributes; -#X obj 427 293 print A; -#X text 14 164 list attributes; -#X obj 276 91 nbx 5 18 -100 0 0 1 empty empty threshold 0 -6 0 10 -225271 --1 -1 -31 256; -#X text 424 312 attributes; -#X obj 179 88 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1 --1; -#N canvas 35 47 456 306 schubert 0; -#X obj 51 234 outlet~; -#X obj 51 188 readsf~ 1; -#X obj 51 19 inlet; -#X msg 27 80 1; -#X obj 52 115 t f b; -#X obj 51 44 route bang 1 0; -#X msg 86 149 open ../media/schubert.aiff; -#X connect 1 0 0 0; -#X connect 2 0 5 0; -#X connect 3 0 4 0; -#X connect 4 0 1 0; -#X connect 4 1 6 0; -#X connect 5 0 3 0; -#X connect 5 1 4 0; -#X connect 5 2 1 0; -#X connect 6 0 1 0; -#X restore 180 174 pd schubert; -#N canvas 35 47 460 310 nixon 0; -#X obj 51 234 outlet~; -#X obj 51 188 readsf~ 1; -#X obj 51 19 inlet; -#X msg 27 80 1; -#X obj 52 115 t f b; -#X obj 51 44 route bang 1 0; -#X msg 86 149 open ../media/nixon.aiff; -#X connect 1 0 0 0; -#X connect 2 0 5 0; -#X connect 3 0 4 0; -#X connect 4 0 1 0; -#X connect 4 1 6 0; -#X connect 5 0 3 0; -#X connect 5 1 4 0; -#X connect 5 2 1 0; -#X connect 6 0 1 0; -#X restore 316 175 pd nixon; -#X text 15 215 get attributes; -#X msg 275 129 thresh \$1; -#X obj 363 91 tgl 25 1 empty empty invert 0 -6 0 10 -225271 -1 -1 0 -1; -#X msg 363 127 invert \$1; -#X msg 16 235 getthresh; -#X msg 16 259 getinvert; -#X obj 179 203 vacancy~ -30 0 1 0; -#X obj 451 91 tgl 25 1 empty empty use_rms 0 -6 0 10 -225271 -1 -1 -1 1; -#X obj 520 91 tgl 25 1 empty empty swap_phase 0 -6 0 10 -225271 -1 --1 0 1; -#X msg 451 127 rms \$1; -#X msg 520 127 swap \$1; -#X text 256 226 threshold \, invert \, rms \, swap; -#X msg 16 283 getrms; -#X msg 17 308 getswap; -#X connect 0 0 1 0; -#X connect 1 0 22 0; -#X connect 2 0 4 0; -#X connect 2 0 4 1; -#X connect 3 0 2 1; -#X connect 8 0 22 0; -#X connect 11 0 17 0; -#X connect 13 0 14 0; -#X connect 13 0 15 0; -#X connect 14 0 22 0; -#X connect 15 0 22 1; -#X connect 17 0 22 0; -#X connect 18 0 19 0; -#X connect 19 0 22 0; -#X connect 20 0 22 0; -#X connect 21 0 22 0; -#X connect 22 0 2 0; -#X connect 22 1 9 0; -#X connect 23 0 25 0; -#X connect 24 0 26 0; -#X connect 25 0 22 0; -#X connect 26 0 22 0; -#X connect 28 0 22 0; -#X connect 29 0 22 0; diff --git a/externals/grill/fftease/pd/xsyn~-help.pd b/externals/grill/fftease/pd/xsyn~-help.pd deleted file mode 100644 index e665bfd8..00000000 --- a/externals/grill/fftease/pd/xsyn~-help.pd +++ /dev/null @@ -1,61 +0,0 @@ -#N canvas 140 138 589 373 12; -#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1 -1 1; -#X msg 17 103 enable \$1; -#X obj 214 284 *~; -#X obj 255 289 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10 --261681 -1 -1 10500 1; -#X obj 203 321 dac~; -#X obj 16 8 cnv 15 550 40 empty empty xsyn~ 10 22 0 24 -260818 -1 0 -; -#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP); -#X text 206 27 flext port by Thomas Grill; -#X obj 214 88 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1 --1; -#N canvas 35 47 456 306 schubert 0; -#X obj 51 234 outlet~; -#X obj 51 188 readsf~ 1; -#X obj 51 19 inlet; -#X msg 27 80 1; -#X obj 52 115 t f b; -#X obj 51 44 route bang 1 0; -#X msg 86 149 open ../media/schubert.aiff; -#X connect 1 0 0 0; -#X connect 2 0 5 0; -#X connect 3 0 4 0; -#X connect 4 0 1 0; -#X connect 4 1 6 0; -#X connect 5 0 3 0; -#X connect 5 1 4 0; -#X connect 5 2 1 0; -#X connect 6 0 1 0; -#X restore 215 174 pd schubert; -#N canvas 35 47 460 310 nixon 0; -#X obj 51 234 outlet~; -#X obj 51 188 readsf~ 1; -#X obj 51 19 inlet; -#X msg 27 80 1; -#X obj 52 115 t f b; -#X obj 51 44 route bang 1 0; -#X msg 86 149 open ../media/nixon.aiff; -#X connect 1 0 0 0; -#X connect 2 0 5 0; -#X connect 3 0 4 0; -#X connect 4 0 1 0; -#X connect 4 1 6 0; -#X connect 5 0 3 0; -#X connect 5 1 4 0; -#X connect 5 2 1 0; -#X connect 6 0 1 0; -#X restore 249 150 pd nixon; -#X obj 214 203 xsyn~; -#X connect 0 0 1 0; -#X connect 1 0 11 0; -#X connect 2 0 4 0; -#X connect 2 0 4 1; -#X connect 3 0 2 1; -#X connect 8 0 9 0; -#X connect 8 0 10 0; -#X connect 9 0 11 0; -#X connect 10 0 11 1; -#X connect 11 0 2 0; diff --git a/externals/grill/fftease/readme.txt b/externals/grill/fftease/readme.txt deleted file mode 100644 index 64ea8f05..00000000 --- a/externals/grill/fftease/readme.txt +++ /dev/null @@ -1,75 +0,0 @@ -FFTease - A set of Live Spectral Processors -Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform - -Copyright (c)Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - - ----------------------------------------------------------------------------- - -BUILDING from source --------------------- - -You will need the flext C++ layer for PD and Max/MSP externals to compile this. -See http://grrrr.org/ext/flext -Download, install and compile the package. -Afterwards you can proceed with building this external. - - -pd/Max - Windows - Microsoft Visual C, Borland C++, MinGW: ----------------------------------------------------------- -Start a command shell with your eventual build environment -(e.g. run vcvars32.bat for Microsoft Visual Studio) - -then run - ..\flext\build.bat -(you would have to substitute ..\flext with the respective path to the flext package) - - -pd/Max - OSX/Linux - GCC: -------------------------- -From a shell run -bash ../flext/build.sh -(you would have to substitute ../flext with the respective path to the flext package) - ----------------------------------------------------------------------------- - -PORTING NOTES: - -The example audio files schubert.aiff and nixon.aiff have been taken from the original FFTease package for Max/MSP. - - -- pv-lib: - - gcc (OSX) complains about _cfft being defined by pv-lib and pd.... any problems with that? - -- burrow: - - max_bin calculation: fundamental frequency seems to be wrong - -- cross: - - STRANGE: spectral amplitude in channel1 is undefined if gainer <= threshie - -> value of previous frame is used then - - (jmax) BUG: a2 for i == N2 is calculated from buffer1 - - what about the class members for "correction"?! (superfluous) - -- dentist: - - tooth count ("teeth") is preserved and checked on every reshuffle - - use different knee correction - -- disarray: - - different frequency correction employed - - max_bin calculation: fundamental frequency seems to be wrong - - check whether freq oder number of bins should be selectable -> frequency! - -- ether: - - possibility to change qual? - -- scrape: - - maxamp is computed (from spectral amplitudes) before these are set!! (function frowned) -> corrected - -- shapee: - - danger of div by 0... corrected - -- swinger: - - (jmax) phase is calculated from signal1 (instead of correct signal 2)!! - diff --git a/externals/grill/fftease/src/burrow~.cpp b/externals/grill/fftease/src/burrow~.cpp deleted file mode 100644 index 01564618..00000000 --- a/externals/grill/fftease/src/burrow~.cpp +++ /dev/null @@ -1,107 +0,0 @@ -/* - -FFTease - A set of Live Spectral Processors -Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform - -Copyright (c)Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#include "main.h" - - -class burrow: - public fftease -{ - FLEXT_HEADER_S(burrow,fftease,setup) - -public: - burrow(I argc,const t_atom *argv); - -protected: - - virtual V Transform(I _N2,S *const *in); - - BL _invert; - - F _threshold,_multiplier; - F _thresh_dB,_mult_dB; - -private: - V ms_thresh(F v) { _threshold = FromdB(_thresh_dB = v); } - V ms_mult(F v) { _multiplier = FromdB(_mult_dB = v); } - - - static V setup(t_classid c); - - FLEXT_ATTRGET_F(_thresh_dB) - FLEXT_CALLSET_F(ms_thresh) - FLEXT_ATTRGET_F(_mult_dB) - FLEXT_CALLSET_F(ms_mult) - FLEXT_ATTRVAR_B(_invert) -}; - -FLEXT_LIB_DSP_V("burrow~",burrow) - - -V burrow::setup(t_classid c) -{ - FLEXT_CADDATTR_VAR(c,"thresh",_thresh_dB,ms_thresh); - FLEXT_CADDATTR_VAR(c,"mult",_mult_dB,ms_mult); - FLEXT_CADDATTR_VAR1(c,"invert",_invert); -} - - -burrow::burrow(I argc,const t_atom *argv): - fftease(4,F_STEREO|F_BALANCED|F_BITSHUFFLE|F_NOPH2), - _invert(false), - _thresh_dB(-30),_mult_dB(-18) -{ - /* parse and set object's options given */ - if(argc >= 1) { - if(CanbeFloat(argv[0])) - _thresh_dB = GetAFloat(argv[0]); - else - post("%s - Threshold must be a float value - set to %0f",thisName(),_thresh_dB); - } - if(argc >= 2) { - if(CanbeFloat(argv[1])) - _mult_dB = GetAFloat(argv[1]); - else - post("%s - Multiplier must be a float value - set to %0f",thisName(),_mult_dB); - } - if(argc >= 3) { - if(CanbeBool(argv[2])) - _invert = GetABool(argv[2]); - else - post("%s - Invert flag must be a boolean value - set to %i",thisName(),_invert?1:0); - } - - ms_thresh(_thresh_dB); - ms_mult(_mult_dB); - - AddInSignal("Messages and input signal"); - AddInSignal("Reference signal"); - AddOutSignal("Transformed signal"); -} - - -V burrow::Transform(I _N,S *const *) -{ - register const F thr = _threshold,mul = _multiplier; - - // use simple threshold from second signal to trigger filtering - // transform does not need phase of signal 2 - - if(_invert) - for (I i = 0; i <= _N; i += 2) - if(_channel2[i] < thr) _channel1[i] *= mul; - else - for (I i = 0; i <= _N; i += 2) - if(_channel2[i] > thr) _channel1[i] *= mul; -} - - - diff --git a/externals/grill/fftease/src/convert.c b/externals/grill/fftease/src/convert.c deleted file mode 100644 index 006e4cf7..00000000 --- a/externals/grill/fftease/src/convert.c +++ /dev/null @@ -1,134 +0,0 @@ -#include "pv.h" - -/* S is a spectrum in rfft format, i.e., it contains N real values - arranged as real followed by imaginary values, except for first - two values, which are real parts of 0 and Nyquist frequencies; - convert first changes these into N/2+1 PAIRS of magnitude and - phase values to be stored in output array C; the phases are then - unwrapped and successive phase differences are used to compute - estimates of the instantaneous frequencies for each phase vocoder - analysis channel; decimation rate D and sampling rate R are used - to render these frequency values directly in Hz. */ - -void convert(float *S, float *C, int N2, float *lastphase, float fundamental, float factor ) -{ -#if 1 - float phase,phasediff; - int even,odd; - float a,b; - int i; - - for ( i = 0; i <= N2; i++ ) { - odd = ( even = i<<1 ) + 1; - a = ( i == N2 ? S[1] : S[even] ); - b = ( i == 0 || i == N2 ? 0. : S[odd] ); - - C[even] = hypot( a, b ); - if ( C[even] == 0. ) - phasediff = 0.; - else { - phase = -atan2( b, a ); - phasediff = fmod(phase - lastphase[i] + (PV_2PI+PV_PI), PV_2PI)-PV_PI; - lastphase[i] = phase; - } - - C[odd] = phasediff*factor + i*fundamental; - } -#else - float phase, - phasediff; - int real, - imag, - amp, - freq; - float a, - b; - int i; - - float myTWOPI, myPI; - - myTWOPI = 8.*atan(1.); - myPI = 4.*atan(1.); - - - for ( i = 0; i <= N2; i++ ) { - imag = freq = ( real = amp = i<<1 ) + 1; - a = ( i == N2 ? S[1] : S[real] ); - b = ( i == 0 || i == N2 ? 0. : S[imag] ); - - C[amp] = hypot( a, b ); - if ( C[amp] == 0. ) - phasediff = 0.; - else { - phasediff = ( phase = -atan2( b, a ) ) - lastphase[i]; - lastphase[i] = phase; - - // TG: DANGEROUS!!!! (and slow, if lastphase not correctly initialized) - while ( phasediff > myPI ) - phasediff -= myTWOPI; - while ( phasediff < -myPI ) - phasediff += myTWOPI; - } - C[freq] = phasediff*factor + i*fundamental; - /* - if( i > 8 && i < 12 ) { - fprintf(stderr,"convert freq %d: %f\n",i, C[freq]); - } - */ - } -#endif -} - - -void unconvert(float *C, float *S, int N2, float *lastphase, float fundamental, float factor ) -{ -#if 1 - int i,even,odd; - float mag,phase; - - for ( i = 0; i <= N2; i++ ) { - odd = ( even = i<<1 ) + 1; - - mag = C[even]; - lastphase[i] += C[odd] - i*fundamental; - phase = lastphase[i]*factor; - - if(i != N2) { - S[even] = mag*cos( phase ); - S[odd] = -mag*sin( phase ); - } - else - S[1] = mag*cos( phase ); - } -#else - int i, - real, - imag, - amp, - freq; - float mag, - phase; - - for ( i = 0; i <= N2; i++ ) { - - imag = freq = ( real = amp = i<<1 ) + 1; - - if ( i == N2 ) - real = 1; - - mag = C[amp]; - lastphase[i] += C[freq] - i*fundamental; - phase = lastphase[i]*factor; - S[real] = mag*cos( phase ); - - if ( i != N2 ) - S[imag] = -mag*sin( phase ); - /* - if( i == 10 ) { - fprintf(stderr,"unconvert: amp: %f freq: %f funda %f fac %f\n", C[amp],C[freq],fundamental,factor); - } - */ - } - -#endif -} diff --git a/externals/grill/fftease/src/cross~.cpp b/externals/grill/fftease/src/cross~.cpp deleted file mode 100644 index cdbd9d0a..00000000 --- a/externals/grill/fftease/src/cross~.cpp +++ /dev/null @@ -1,92 +0,0 @@ -/* - -FFTease - A set of Live Spectral Processors -Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform - -Copyright (c)Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#include "main.h" - - -class cross: - public fftease -{ - FLEXT_HEADER_S(cross,fftease,setup) - -public: - cross(); - -protected: - - F *amps; - BL memory; - - virtual V Set(); - virtual V Clear(); - virtual V Delete(); - - virtual V Transform(I _N2,S *const *in); - -private: - static V setup(t_classid c); - - FLEXT_ATTRVAR_B(memory) -}; - -FLEXT_LIB_DSP("cross~",cross) - - -V cross::setup(t_classid c) -{ - FLEXT_CADDATTR_VAR1(c,"memorize",memory); -} - -cross::cross(): - fftease(2,F_STEREO|F_BALANCED|F_BITSHUFFLE|F_NOPH2), - memory(true) -{ - AddInSignal("Messages and driver signal"); - AddInSignal("Filter signal"); - AddInSignal("Threshold signal for cross synthesis"); - AddOutSignal("Transformed signal"); -} - -V cross::Clear() -{ - amps = NULL; - fftease::Clear(); -} - -V cross::Delete() -{ - fftease::Delete(); - if(amps) delete[] amps; -} - -V cross::Set() -{ - fftease::Set(); - const I _N2 = get_N()/2; - amps = new F[_N2]; - ZeroMem(amps,_N2*sizeof(*amps)); -} - -V cross::Transform(I _N,S *const *in) -{ - // filled only once per signal vector!! - register const F threshie = *in[0]; - F *amp = amps; - - for (I i = 0; i <= _N; i += 2,amp++) - if( _channel2[i] > threshie ) - *amp = _channel1[i] *= _channel2[i]; - else if(memory) - // retrieve previous value - _channel1[i] = *amp; - -} - diff --git a/externals/grill/fftease/src/dentist~.cpp b/externals/grill/fftease/src/dentist~.cpp deleted file mode 100644 index 99d111bb..00000000 --- a/externals/grill/fftease/src/dentist~.cpp +++ /dev/null @@ -1,149 +0,0 @@ -/* - -FFTease - A set of Live Spectral Processors -Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform - -Copyright (c)Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#include "main.h" -#include - -class dentist: - public fftease -{ - FLEXT_HEADER_S(dentist,fftease,setup) - -public: - dentist(I argc,const t_atom *argv); - -protected: - - virtual V Transform(I _N2,S *const *in); - - BL *_bin_selection; - I _teeth; - F _knee; - I _max_bin; // determined by _knee and fundamental frequency - - V reset_shuffle(); - -private: - - virtual V Set(); - virtual V Clear(); - virtual V Delete(); - - V ms_knee(F knee); - V ms_teeth(I teeth) { _teeth = teeth; reset_shuffle(); } - - - static V setup(t_classid c); - - FLEXT_CALLBACK(reset_shuffle) - FLEXT_ATTRGET_F(_knee) - FLEXT_CALLSET_F(ms_knee) - FLEXT_ATTRGET_I(_teeth) - FLEXT_CALLSET_I(ms_teeth) -}; - -FLEXT_LIB_DSP_V("dentist~",dentist) - - -V dentist::setup(t_classid c) -{ - FLEXT_CADDBANG(c,0,reset_shuffle); - - FLEXT_CADDATTR_VAR(c,"knee",_knee,ms_knee); - FLEXT_CADDATTR_VAR(c,"teeth",_teeth,ms_teeth); -} - - -dentist::dentist(I argc,const t_atom *argv): - fftease(4,F_BALANCED|F_BITSHUFFLE), - _teeth(10),_knee(500),_max_bin(0) -{ - /* parse and set object's options given */ - if(argc >= 1) { - if(CanbeFloat(argv[0])) - _knee = GetAFloat(argv[0]); - else - post("%s - Knee must be a float value - set to %0f",thisName(),_knee); - } - if(argc >= 2) { - if(CanbeInt(argv[1])) - _teeth = GetAInt(argv[1]); - else - post("%s - Teeth must be an integer value - set to %0i",thisName(),_teeth); - } - - AddInSignal("Messages and input signal"); - AddOutSignal("Transformed signal"); -} - -V dentist::Clear() -{ - _bin_selection = NULL; - fftease::Clear(); -} - -V dentist::Delete() -{ - fftease::Delete(); - if(_bin_selection) delete[] _bin_selection; -} - - -V dentist::ms_knee(F f) -{ - _knee = f; // store original - - const F funda = get_Fund(); - - // TG: This is a different, but steady correction than in original fftease - if( f < funda ) f = funda; - else if(f > Samplerate()/2) f = Samplerate()/2; - - _max_bin = (I)(f/funda+0.5); - - reset_shuffle(); -} - - -V dentist::Set() -{ - fftease::Set(); - - _bin_selection = new BL[get_N()/2]; - - // calculation of _max_bin - ms_knee(_knee); -} - -V dentist::Transform(I _N,S *const *) -{ - const BL *bs = _bin_selection; - for(I i = 0; i < _N ; i += 2) - if(!*(bs++)) _channel1[i] = 0; -} - - -V dentist::reset_shuffle() -{ - const I _N2 = get_N()/2; - I t = _teeth; - - // check number of teeth - if( t < 0 ) t = 0; - else if( t > _N2 ) t = _N2; - - // clear and set random bins - I i; - for( i = 0; i < _N2; i++ ) - _bin_selection[i] = false; - for( i = 0; i < t; i++ ) - _bin_selection[rand()%_max_bin] = true; -} diff --git a/externals/grill/fftease/src/disarray~.cpp b/externals/grill/fftease/src/disarray~.cpp deleted file mode 100644 index 342d45fc..00000000 --- a/externals/grill/fftease/src/disarray~.cpp +++ /dev/null @@ -1,164 +0,0 @@ -/* - -FFTease - A set of Live Spectral Processors -Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform - -Copyright (c)Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#include "main.h" -#include - -class disarray: - public fftease -{ - FLEXT_HEADER_S(disarray,fftease,setup) - -public: - disarray(I argc,const t_atom *argv); - -protected: - - virtual V Transform(I _N2,S *const *in); - - BL _qual; - I _shuffle_count,_max_bin; - F _freq; - I *_shuffle_in,*_shuffle_out; - - V reset_shuffle(); - -private: - virtual V Set(); - virtual V Clear(); - virtual V Delete(); - - V ms_freq(F f); - - static V setup(t_classid c); - - FLEXT_CALLBACK(reset_shuffle) - FLEXT_ATTRGET_F(_freq) - FLEXT_CALLSET_F(ms_freq) - FLEXT_ATTRVAR_I(_shuffle_count) -}; - -FLEXT_LIB_DSP_V("disarray~",disarray) - - -V disarray::setup(t_classid c) -{ - FLEXT_CADDBANG(c,0,reset_shuffle); - - FLEXT_CADDATTR_VAR(c,"knee",_freq,ms_freq); - FLEXT_CADDATTR_VAR1(c,"partials",_shuffle_count); -} - - -disarray::disarray(I argc,const t_atom *argv): - fftease(2,F_BITSHUFFLE), - _qual(false),_shuffle_count(20),_max_bin(0),_freq(1300) -{ - /* parse and set object's options given */ - if(argc >= 1) { - if(CanbeFloat(argv[0])) - _freq = GetAFloat(argv[0]); - else - post("%s - Freq must be a float value - set to %0f",thisName(),_freq); - } - if(argc >= 2) { - if(CanbeBool(argv[1])) - _qual = GetABool(argv[1]); - else - post("%s - Quality must be a boolean value - set to %0i",thisName(),_qual?1:0); - } - if(argc >= 3) { - if(CanbeInt(argv[2])) - _shuffle_count = GetAInt(argv[2]); - else - post("%s - Partials must be an integer value - set to %0i",thisName(),_shuffle_count); - } - - Mult(_qual?4:2); - if(_qual) _flags |= F_BALANCED; - - AddInSignal("Messages and input signal"); - AddOutSignal("Transformed signal"); -} - - -V disarray::Clear() -{ - _shuffle_in = _shuffle_out = NULL; - fftease::Clear(); -} - -V disarray::Delete() -{ - fftease::Delete(); - if(_shuffle_in) delete[] _shuffle_in; - if(_shuffle_out) delete[] _shuffle_out; -} - -V disarray::Set() -{ - fftease::Set(); - - const I _N2 = get_N()/2; - - _shuffle_in = new I[_N2]; - _shuffle_out = new I[_N2]; - - // calculate _max_bin - ms_freq(_freq); -} - -V disarray::ms_freq(F f) -{ - _freq = f; // store original - - const F funda = get_Fund(); - - // TG: This is a different, but steady correction than in original fftease - if( f < funda ) f = funda; - else if(f > Samplerate()/2) f = Samplerate()/2; - - _max_bin = (I)(f/funda+0.5); - - reset_shuffle(); -} - -inline V swap(F &a,F &b) { F t = a; a = b; b = t; } -inline V swap(I &a,I &b) { I t = a; a = b; b = t; } - -V disarray::Transform(I _N,S *const *) -{ - I shcnt = _shuffle_count; - if(shcnt < 0) shcnt = 0; - else if(shcnt > _N/2) shcnt = _N/2; - - for(I i = 0; i < shcnt; i++) - // leave phase, just swap amplitudes - swap(_channel1[ _shuffle_in[i] * 2 ],_channel1[ _shuffle_out[i] * 2]); -} - - -V disarray::reset_shuffle() -{ - const I _N2 = get_N()/2; - - I i; - for( i = 0; i < _N2; i++ ) - _shuffle_out[i] = _shuffle_in[i] = i ; - - for( i = 0; i < _max_bin*2; i++ ) { - I p1 = _shuffle_out[ rand()%_max_bin ]; - I p2 = _shuffle_out[ rand()%_max_bin ]; - swap(_shuffle_out[ p1 ],_shuffle_out[ p2 ]); - } - -} - diff --git a/externals/grill/fftease/src/drown~.cpp b/externals/grill/fftease/src/drown~.cpp deleted file mode 100644 index 2f59cc0a..00000000 --- a/externals/grill/fftease/src/drown~.cpp +++ /dev/null @@ -1,50 +0,0 @@ -/* - -FFTease - A set of Live Spectral Processors -Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform - -Copyright (c)Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#include "main.h" -#include - -class drown: - public fftease -{ - FLEXT_HEADER(drown,fftease) - -public: - drown(); - -protected: - virtual V Transform(I n,S *const *in); -}; - -FLEXT_LIB_DSP("drown~ denude~",drown) - - -drown::drown(): - fftease(4,F_BALANCED) -{ - AddInSignal("Messages and input signal"); - AddInSignal("Threshold generator signal"); - AddInSignal("Multiplier signal for weak bins"); - AddOutSignal("Transformed signal"); -} - - -V drown::Transform(I _N,S *const *in) -{ - // only first value of the signal vectors - const F thresh = *in[0],mult = *in[1]; - - // make up low amplitude bins - for (I i = 0; i <= _N; i += 2) - if(_channel1[i] < thresh) _channel1[i] *= mult; -} - - diff --git a/externals/grill/fftease/src/ether~.cpp b/externals/grill/fftease/src/ether~.cpp deleted file mode 100644 index 6e4d3810..00000000 --- a/externals/grill/fftease/src/ether~.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/* - -FFTease - A set of Live Spectral Processors -Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform - -Copyright (c)Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#include "main.h" -#include - -class ether: - public fftease -{ - FLEXT_HEADER_S(ether,fftease,setup) - -public: - ether(I argc,const t_atom *argv); - -protected: - - virtual V Transform(I n,S *const *in); - - BL _qual,_invert; - F _threshMult; - -private: - static V setup(t_classid c); - - - FLEXT_ATTRVAR_B(_invert) - FLEXT_ATTRVAR_F(_threshMult) -}; - -FLEXT_LIB_DSP_V("ether~",ether) - - -V ether::setup(t_classid c) -{ - FLEXT_CADDATTR_VAR1(c,"invert",_invert); - FLEXT_CADDATTR_VAR1(c,"index",_threshMult); -} - - -ether::ether(I argc,const t_atom *argv): - fftease(2,F_STEREO|F_BITSHUFFLE), - _qual(false),_invert(false),_threshMult(0) -{ - /* parse and set object's options given */ - if(argc >= 1) { - if(CanbeBool(argv[0])) - _qual = GetABool(argv[0]); - else - post("%s - Quality must be a boolean value - set to %0i",thisName(),_qual?1:0); - } - - Mult(_qual?4:2); - if(_qual) _flags |= F_BALANCED; - - AddInSignal("Messages and input signal"); - AddInSignal("Reference signal"); - AddOutSignal("Transformed signal"); -} - - -V ether::Transform(I _N,S *const *) -{ - const BL inv = _invert; - const F threshMult = _threshMult?_threshMult:1; - - for (I i = 0; i <= _N; i += 2) { - F &1 = _channel1[i]; - F &phase1 = _channel1[i+1]; - - F &2 = _channel2[i]; - F &phase2 = _channel2[i+1]; - - // use simple threshold for inverse compositing - - if(inv?(amp1 > amp2*threshMult):(amp1 < amp2*threshMult) ) amp1 = amp2; - if (phase1 == 0. ) phase1 = phase2; - } -} - diff --git a/externals/grill/fftease/src/fft.c b/externals/grill/fftease/src/fft.c deleted file mode 100644 index 844cddd5..00000000 --- a/externals/grill/fftease/src/fft.c +++ /dev/null @@ -1,157 +0,0 @@ -#include "pv.h" - - -/* If forward is true, rfft replaces 2*N real data points in x with - N complex values representing the positive frequency half of their - Fourier spectrum, with x[1] replaced with the real part of the Nyquist - frequency value. If forward is false, rfft expects x to contain a - positive frequency spectrum arranged as before, and replaces it with - 2*N real values. N MUST be a power of 2. */ -static void -bitreverse( float *x, int N ); - -static float sqr(float x) { return x*x; } - -void pv_rfft( float *x, int N, int forward ) -{ - float c1,c2, - h1r,h1i, - h2r,h2i, - wr,wi, - wpr,wpi, - temp, - theta; - float xr,xi; - int i, - i1,i2,i3,i4, - N2p1; - static int first = 1; - - if ( first ) { - - first = 0; - } - theta = PV_PI/N; - wr = 1.; - wi = 0.; - c1 = 0.5; - if ( forward ) { - c2 = -0.5; - pv_cfft( x, N, forward ); - xr = x[0]; - xi = x[1]; - } else { - c2 = 0.5; - theta = -theta; - xr = x[1]; - xi = 0.; - x[1] = 0.; - } - wpr = -2.*sqr( sin( 0.5*theta )); - wpi = sin( theta ); - N2p1 = (N<<1) + 1; - for ( i = 0; i <= N>>1; i++ ) { - i1 = i<<1; - i2 = i1 + 1; - i3 = N2p1 - i2; - i4 = i3 + 1; - if ( i == 0 ) { - h1r = c1*(x[i1] + xr ); - h1i = c1*(x[i2] - xi ); - h2r = -c2*(x[i2] + xi ); - h2i = c2*(x[i1] - xr ); - x[i1] = h1r + wr*h2r - wi*h2i; - x[i2] = h1i + wr*h2i + wi*h2r; - xr = h1r - wr*h2r + wi*h2i; - xi = -h1i + wr*h2i + wi*h2r; - } else { - h1r = c1*(x[i1] + x[i3] ); - h1i = c1*(x[i2] - x[i4] ); - h2r = -c2*(x[i2] + x[i4] ); - h2i = c2*(x[i1] - x[i3] ); - x[i1] = h1r + wr*h2r - wi*h2i; - x[i2] = h1i + wr*h2i + wi*h2r; - x[i3] = h1r - wr*h2r + wi*h2i; - x[i4] = -h1i + wr*h2i + wi*h2r; - } - wr = (temp = wr)*wpr - wi*wpi + wr; - wi = wi*wpr + temp*wpi + wi; - } - if ( forward ) - x[1] = xr; - else - pv_cfft( x, N, forward ); -} - -/* cfft replaces float array x containing NC complex values - (2*NC float values alternating real, imagininary, etc.) - by its Fourier transform if forward is true, or by its - inverse Fourier transform if forward is false, using a - recursive Fast Fourier transform method due to Danielson - and Lanczos. NC MUST be a power of 2. */ - -void pv_cfft( float *x, int NC, int forward ) -{ - float wr,wi, - wpr,wpi, - theta, - scale; - int mmax, - ND, - m, - i,j, - delta; - - ND = NC<<1; - bitreverse( x, ND ); - for ( mmax = 2; mmax < ND; mmax = delta ) { - delta = mmax<<1; - theta = PV_2PI/( forward? mmax : -mmax ); - wpr = -2.*sqr( sin( 0.5*theta )); - wpi = sin( theta ); - wr = 1.; - wi = 0.; - for ( m = 0; m < mmax; m += 2 ) { - register float rtemp, itemp; - for ( i = m; i < ND; i += delta ) { - j = i + mmax; - rtemp = wr*x[j] - wi*x[j+1]; - itemp = wr*x[j+1] + wi*x[j]; - x[j] = x[i] - rtemp; - x[j+1] = x[i+1] - itemp; - x[i] += rtemp; - x[i+1] += itemp; - } - wr = (rtemp = wr)*wpr - wi*wpi + wr; - wi = wi*wpr + rtemp*wpi + wi; - } - } - -/* scale output */ - - scale = forward ? 1./ND : 2.; - { register float *xi=x, *xe=x+ND; - while ( xi < xe ) - *xi++ *= scale; - } -} - -/* bitreverse places float array x containing N/2 complex values - into bit-reversed order */ - -void bitreverse( float *x, int N ) -{ - float rtemp,itemp; - int i,j, - m; - - for ( i = j = 0; i < N; i += 2, j += m ) { - if ( j > i ) { - rtemp = x[j]; itemp = x[j+1]; /* complex exchange */ - x[j] = x[i]; x[j+1] = x[i+1]; - x[i] = rtemp; x[i+1] = itemp; - } - for ( m = N>>1; m >= 2 && j >= m; m >>= 1 ) - j -= m; - } -} diff --git a/externals/grill/fftease/src/fft4.c b/externals/grill/fftease/src/fft4.c deleted file mode 100644 index 70127b47..00000000 --- a/externals/grill/fftease/src/fft4.c +++ /dev/null @@ -1,340 +0,0 @@ -/* - * This file is part of the pv-lib - * - * The pv-lib can be used by everyone as desired - * - * (c) Eric Lyon and Christopher Penrose - * - */ - -#include -#include "pv.h" - -static void bitrv2(int n, int *ip, float *a); -static void cftsub(int n, float *a, float *w); -static void rftsub(int n, float *a, int nc, float *c); -static void makewt(int nw, int *ip, float *w); -static void makect(int nc, int *ip, float *c); - -void init_rdft(int n, int *ip, float *w) -{ - - int nw, - nc; - - nw = n >> 2; - makewt(nw, ip, w); - - nc = n >> 2; - makect(nc, ip, w + nw); - - return; -} - - -void pv_rdft(int n, int isgn, float *a, int *ip, float *w) -{ - - int j, - nw, - nc; - - float xi; - - nw = ip[0]; - nc = ip[1]; - - if (isgn < 0) { - a[1] = 0.5 * (a[1] - a[0]); - a[0] += a[1]; - - for (j = 3; j <= n - 1; j += 2) { - a[j] = -a[j]; - } - - if (n > 4) { - rftsub(n, a, nc, w + nw); - bitrv2(n, ip + 2, a); - } - - cftsub(n, a, w); - - for (j = 1; j < n; j += 2) { - a[j] = -a[j]; - } - } - - else { - - if (n > 4) { - bitrv2(n, ip + 2, a); - } - - cftsub(n, a, w); - - if (n > 4) { - rftsub(n, a, nc, w + nw); - } - - xi = a[0] - a[1]; - a[0] += a[1]; - a[1] = xi; - } -} - - -static void bitrv2(int n, int *ip, float *a) -{ - int j, j1, k, k1, l, m, m2; - float xr, xi; - - ip[0] = 0; - l = n; - m = 1; - - while ((m << 2) < l) { - l >>= 1; - for (j = 0; j < m; j++) { - ip[m + j] = ip[j] + l; - } - m <<= 1; - } - - if ((m << 2) > l) { - - for (k = 1; k < m; k++) { - - for (j = 0; j <= k - 1; j++) { - j1 = (j << 1) + ip[k]; - k1 = (k << 1) + ip[j]; - xr = a[j1]; - xi = a[j1 + 1]; - a[j1] = a[k1]; - a[j1 + 1] = a[k1 + 1]; - a[k1] = xr; - a[k1 + 1] = xi; - } - } - } - - else { - m2 = m << 1; - - for (k = 1; k < m; k++) { - - for (j = 0; j < k; j++) { - j1 = (j << 1) + ip[k]; - k1 = (k << 1) + ip[j]; - xr = a[j1]; - xi = a[j1 + 1]; - a[j1] = a[k1]; - a[j1 + 1] = a[k1 + 1]; - a[k1] = xr; - a[k1 + 1] = xi; - j1 += m2; - k1 += m2; - xr = a[j1]; - xi = a[j1 + 1]; - a[j1] = a[k1]; - a[j1 + 1] = a[k1 + 1]; - a[k1] = xr; - a[k1 + 1] = xi; - } - } - } -} - - -static void cftsub(int n, float *a, float *w) -{ - int j, j1, j2, j3, k, k1, ks, l, m; - float wk1r, wk1i, wk2r, wk2i, wk3r, wk3i; - float x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i; - - l = 2; - - while ((l << 1) < n) { - m = l << 2; - - for (j = 0; j <= l - 2; j += 2) { - j1 = j + l; - j2 = j1 + l; - j3 = j2 + l; - x0r = a[j] + a[j1]; - x0i = a[j + 1] + a[j1 + 1]; - x1r = a[j] - a[j1]; - x1i = a[j + 1] - a[j1 + 1]; - x2r = a[j2] + a[j3]; - x2i = a[j2 + 1] + a[j3 + 1]; - x3r = a[j2] - a[j3]; - x3i = a[j2 + 1] - a[j3 + 1]; - a[j] = x0r + x2r; - a[j + 1] = x0i + x2i; - a[j2] = x0r - x2r; - a[j2 + 1] = x0i - x2i; - a[j1] = x1r - x3i; - a[j1 + 1] = x1i + x3r; - a[j3] = x1r + x3i; - a[j3 + 1] = x1i - x3r; - } - - if (m < n) { - wk1r = w[2]; - - for (j = m; j <= l + m - 2; j += 2) { - j1 = j + l; - j2 = j1 + l; - j3 = j2 + l; - x0r = a[j] + a[j1]; - x0i = a[j + 1] + a[j1 + 1]; - x1r = a[j] - a[j1]; - x1i = a[j + 1] - a[j1 + 1]; - x2r = a[j2] + a[j3]; - x2i = a[j2 + 1] + a[j3 + 1]; - x3r = a[j2] - a[j3]; - x3i = a[j2 + 1] - a[j3 + 1]; - a[j] = x0r + x2r; - a[j + 1] = x0i + x2i; - a[j2] = x2i - x0i; - a[j2 + 1] = x0r - x2r; - x0r = x1r - x3i; - x0i = x1i + x3r; - a[j1] = wk1r * (x0r - x0i); - a[j1 + 1] = wk1r * (x0r + x0i); - x0r = x3i + x1r; - x0i = x3r - x1i; - a[j3] = wk1r * (x0i - x0r); - a[j3 + 1] = wk1r * (x0i + x0r); - } - - k1 = 1; - ks = -1; - - for (k = (m << 1); k <= n - m; k += m) { - k1++; - ks = -ks; - wk1r = w[k1 << 1]; - wk1i = w[(k1 << 1) + 1]; - wk2r = ks * w[k1]; - wk2i = w[k1 + ks]; - wk3r = wk1r - 2 * wk2i * wk1i; - wk3i = 2 * wk2i * wk1r - wk1i; - - for (j = k; j <= l + k - 2; j += 2) { - j1 = j + l; - j2 = j1 + l; - j3 = j2 + l; - x0r = a[j] + a[j1]; - x0i = a[j + 1] + a[j1 + 1]; - x1r = a[j] - a[j1]; - x1i = a[j + 1] - a[j1 + 1]; - x2r = a[j2] + a[j3]; - x2i = a[j2 + 1] + a[j3 + 1]; - x3r = a[j2] - a[j3]; - x3i = a[j2 + 1] - a[j3 + 1]; - a[j] = x0r + x2r; - a[j + 1] = x0i + x2i; - x0r -= x2r; - x0i -= x2i; - a[j2] = wk2r * x0r - wk2i * x0i; - a[j2 + 1] = wk2r * x0i + wk2i * x0r; - x0r = x1r - x3i; - x0i = x1i + x3r; - a[j1] = wk1r * x0r - wk1i * x0i; - a[j1 + 1] = wk1r * x0i + wk1i * x0r; - x0r = x1r + x3i; - x0i = x1i - x3r; - a[j3] = wk3r * x0r - wk3i * x0i; - a[j3 + 1] = wk3r * x0i + wk3i * x0r; - } - } - } - - l = m; - } - - if (l < n) { - - for (j = 0; j <= l - 2; j += 2) { - j1 = j + l; - x0r = a[j] - a[j1]; - x0i = a[j + 1] - a[j1 + 1]; - a[j] += a[j1]; - a[j + 1] += a[j1 + 1]; - a[j1] = x0r; - a[j1 + 1] = x0i; - } - } -} - - -static void rftsub(int n, float *a, int nc, float *c) -{ - int j, k, kk, ks; - float wkr, wki, xr, xi, yr, yi; - - ks = (nc << 2) / n; - kk = 0; - - for (k = (n >> 1) - 2; k >= 2; k -= 2) { - j = n - k; - kk += ks; - wkr = 0.5 - c[kk]; - wki = c[nc - kk]; - xr = a[k] - a[j]; - xi = a[k + 1] + a[j + 1]; - yr = wkr * xr - wki * xi; - yi = wkr * xi + wki * xr; - a[k] -= yr; - a[k + 1] -= yi; - a[j] += yr; - a[j + 1] -= yi; - } -} - - -static void makewt(int nw, int *ip, float *w) -{ - int nwh, j; - float delta, x, y; - - ip[0] = nw; - ip[1] = 1; - if (nw > 2) { - nwh = nw >> 1; - delta = atan(1.0) / nwh; - w[0] = 1; - w[1] = 0; - w[nwh] = cos(delta * nwh); - w[nwh + 1] = w[nwh]; - for (j = 2; j <= nwh - 2; j += 2) { - x = cos(delta * j); - y = sin(delta * j); - w[j] = x; - w[j + 1] = y; - w[nw - j] = y; - w[nw - j + 1] = x; - } - bitrv2(nw, ip + 2, w); - } -} - - -static void makect(int nc, int *ip, float *c) -{ - int nch, j; - float delta; - - ip[1] = nc; - if (nc > 1) { - nch = nc >> 1; - delta = atan(1.0) / nch; - c[0] = 0.5; - c[nch] = 0.5 * cos(delta * nch); - for (j = 1; j <= nch - 1; j++) { - c[j] = 0.5 * cos(delta * j); - c[nc - j] = 0.5 * sin(delta * j); - } - } -} - diff --git a/externals/grill/fftease/src/fftease.cpp b/externals/grill/fftease/src/fftease.cpp deleted file mode 100644 index 9a7641c1..00000000 --- a/externals/grill/fftease/src/fftease.cpp +++ /dev/null @@ -1,236 +0,0 @@ -/* - -FFTease - A set of Live Spectral Processors -Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform - -Copyright (c)Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#include "main.h" - - -fftease::fftease(I mult,I flags): - _inCount(0), - _flags(flags), - blsz(0),smprt(0), - _mult(mult),_N(0) -{} - -fftease::~fftease() {} - -BL fftease::Init() -{ - Clear(); - Set(); - return flext_dsp::Init(); -} - -V fftease::Exit() -{ - Delete(); -} - -V fftease::m_dsp(I n,S *const *,S *const *) -{ - const F sr = Samplerate(); - if(n != blsz || sr != smprt) { - blsz = n; - smprt = sr; - MakeVar(); - - Delete(); - Set(); - } -} - -V fftease::m_signal(I n,S *const *in,S *const *out) -{ - /* declare working variables */ - I i; - const I _N = get_N(),_Nw = _N,_N2 = _N/2; //,_Nw2 = _Nw/2; - - /* fill our retaining buffers */ - _inCount += n; - - if(_flags&F_STEREO) { - for(i = 0; i < _N-n ; i++ ) { - _input1[i] = _input1[i+n]; - _input2[i] = _input2[i+n]; - } - for(I j = 0; i < _N; i++,j++) { - _input1[i] = in[0][j]; - _input2[i] = in[1][j]; - } - } - else { - for (i = 0 ; i < _N-n ; i++ ) - _input1[i] = _input1[i+n]; - for (I j = 0; i < _N; i++,j++ ) - _input1[i] = in[0][j]; - } - - _rms = 0.; - if(_flags&F_RMS) { - for ( i=0; i < _Nw; i++ ) - _rms += _input1[i] * _input1[i]; - _rms = sqrt(_rms / _Nw); - } - - /* apply hamming window and fold our window buffer into the fft buffer */ - fold( _input1, _Wanal, _Nw, _buffer1, _N, _inCount ); - if(_flags&F_STEREO) fold( _input2, _Wanal, _Nw, _buffer2, _N, _inCount ); - - /* do an fft */ - if(_flags&F_BITSHUFFLE) { - pv_rdft( _N, 1, _buffer1, _bitshuffle, _trigland ); - if(_flags&F_STEREO) pv_rdft( _N, 1, _buffer2, _bitshuffle, _trigland ); - } - else { - pv_rfft( _buffer1, _N2, 1); - if(_flags&F_STEREO) pv_rfft( _buffer2, _N2,1); - } - - if(!(_flags&F_NOSPEC)) { - if(_flags&F_PHCONV) { - convert( _buffer1, _channel1, _N2, _c_lastphase_in1, get_Fund(), _c_factor_in ); - if(_flags&F_STEREO) convert( _buffer2, _channel2, _N2, _c_lastphase_in2, get_Fund(), _c_factor_in ); - } - else { - leanconvert( _buffer1, _channel1, _N2 , !(_flags&F_NOAMP1),!(_flags&F_NOPH1)); - if(_flags&F_STEREO) leanconvert( _buffer2, _channel2, _N2 ,!(_flags&F_NOAMP2),!(_flags&F_NOPH2) ); - } - } - - // ---- BEGIN -------------------------------- - - Transform(_N,in+((_flags&F_STEREO)?2:1)); - - // ---- END -------------------------------- - - if(!(_flags&F_NOSPEC)) { - if(_flags&F_PHCONV) - unconvert( _channel1, _buffer1, _N2, _c_lastphase_out, get_Fund(), 1./_c_factor_in ); - else - leanunconvert( _channel1, _buffer1, _N2 ); - } - - - /* do an inverse fft */ - if(_flags&F_BITSHUFFLE) - pv_rdft( _N, -1, _buffer1, _bitshuffle, _trigland ); - else - pv_rfft( _buffer1, _N2, 0); - - /* dewindow our result */ - overlapadd( _buffer1, _N, _Wsyn, _output, _Nw, _inCount); - - /* set our output and adjust our retaining output buffer */ - const F mult = 1./_N; - for ( i = 0; i < n; i++ ) - out[0][i] = _output[i] * mult; - - for ( i = 0; i < _N-n; i++ ) - _output[i] = _output[i+n]; - for (; i < _N; i++ ) - _output[i] = 0.; -} - - -void fftease::Set() -{ - /* preset the objects data */ - const I n = Blocksize(),_N = n*Mult(),_Nw = _N,_N2 = _N/2; //,_Nw2 = _Nw/2; - - _inCount = -_Nw; - - /* assign memory to the buffers */ - _input1 = new F[_Nw]; - ZeroMem(_input1,_Nw*sizeof(*_input1)); - _buffer1 = new F[_N]; - if(_flags&F_STEREO) { - _input2 = new F[_Nw]; - ZeroMem(_input2,_Nw*sizeof(*_input2)); - _buffer2 = new F[_N]; - } - - if(!(_flags&F_NOSPEC) || (_flags&F_SPECRES)) { - _channel1 = new F[_N+2]; - ZeroMem(_channel1,(_N+2)*sizeof(*_channel1)); - if(_flags&F_STEREO) { - _channel2 = new F[_N+2]; - ZeroMem(_channel2,(_N+2)*sizeof(*_channel2)); - } - - if(_flags&F_PHCONV) { - _c_lastphase_in1 = new F[_N2+1]; - ZeroMem(_c_lastphase_in1,(_N2+1)*sizeof(*_c_lastphase_in1)); - if(_flags&F_STEREO) { - _c_lastphase_in2 = new F[_N2+1]; - ZeroMem(_c_lastphase_in2,(_N2+1)*sizeof(*_c_lastphase_in2)); - } - _c_lastphase_out = new F[_N2+1]; - ZeroMem(_c_lastphase_out,(_N2+1)*sizeof(*_c_lastphase_out)); - - _c_factor_in = Samplerate()/(n * PV_2PI); - } - } - - _output = new F[_Nw]; - ZeroMem(_output,_Nw*sizeof(*_output)); - - if(_flags&F_BITSHUFFLE) { - _bitshuffle = new I[_N*2]; - _trigland = new F[_N*2]; - init_rdft( _N, _bitshuffle, _trigland); - } - - _Hwin = new F[_Nw]; - _Wanal = new F[_Nw]; - _Wsyn = new F[_Nw]; - if(_flags&F_BALANCED) - makewindows( _Hwin, _Wanal, _Wsyn, _Nw, _N, n, 0); - else - makehanning( _Hwin, _Wanal, _Wsyn, _Nw, _N, n, 0,0); -} - -void fftease::Clear() -{ - _bitshuffle = NULL; - _trigland = NULL; - _input1 = _input2 = NULL; - _Hwin = NULL; - _Wanal = _Wsyn = NULL; - _buffer1 = _buffer2 = NULL; - _channel1 = _channel2 = NULL; - _output = NULL; - - _c_lastphase_in1 = _c_lastphase_in2 = _c_lastphase_out = NULL; -} - -void fftease::Delete() -{ - if(_input1) delete[] _input1; - if(_buffer1) delete[] _buffer1; - if(_channel1) delete[] _channel1; - if(_input2) delete[] _input2; - if(_buffer2) delete[] _buffer2; - if(_channel2) delete[] _channel2; - - if(_c_lastphase_in1) delete[] _c_lastphase_in1; - if(_c_lastphase_in2) delete[] _c_lastphase_in2; - if(_c_lastphase_out) delete[] _c_lastphase_out; - - if(_output) delete[] _output; - - if(_bitshuffle) delete[] _bitshuffle; - if(_trigland) delete[] _trigland; - - if(_Hwin) delete[] _Hwin; - if(_Wanal) delete[] _Wanal; - if(_Wsyn) delete[] _Wsyn; -} - - diff --git a/externals/grill/fftease/src/fold.c b/externals/grill/fftease/src/fold.c deleted file mode 100644 index 5b9ce476..00000000 --- a/externals/grill/fftease/src/fold.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * multiply current input I by window W (both of length Nw); - * using modulus arithmetic, fold and rotate windowed input - * into output array O of (FFT) length N according to current - * input time n - */ -void fold( float *I, float *W, int Nw, float *O, int N, int n ) -{ -#if 1 - int i; - for ( i = 0; i < N; i++ ) O[i] = 0.; - - while ( n < 0 ) n += N; - n %= N; - - for ( i = 0; i < Nw; i++ ) { - O[n] += I[i]*W[i]; - if ( ++n == N ) n = 0; - } -#else - int i; - - for ( i = 0; i < N; i++ ) - O[i] = 0.; - - while ( n < 0 ) - n += N; - n %= N; - for ( i = 0; i < Nw; i++ ) { - O[n] += I[i]*W[i]; - if ( ++n == N ) - n = 0; - } -#endif -} - - -/* - * input I is a folded spectrum of length N; output O and - * synthesis window W are of length Nw--overlap-add windowed, - * unrotated, unfolded input data into output O - */ -void overlapadd( float *I, int N, float *W, float *O, int Nw, int n ) -{ -#if 1 - int i ; - while ( n < 0 ) n += N ; - n %= N ; - - for ( i = 0 ; i < Nw ; i++ ) { - O[i] += I[n]*W[i] ; - if ( ++n == N ) n = 0 ; - } -#else - int i ; - while ( n < 0 ) - n += N ; - n %= N ; - for ( i = 0 ; i < Nw ; i++ ) { - O[i] += I[n]*W[i] ; - if ( ++n == N ) - n = 0 ; - } - -#endif -} - diff --git a/externals/grill/fftease/src/leanconvert.c b/externals/grill/fftease/src/leanconvert.c deleted file mode 100644 index d121d896..00000000 --- a/externals/grill/fftease/src/leanconvert.c +++ /dev/null @@ -1,84 +0,0 @@ -#include "pv.h" - -void leanconvert( float *S, float *C, int N2 , int amp, int ph) -{ -#if 1 - register int i; - - float a = fabs(S[0]); /* real value at f=0 */ - float b = fabs(S[1]); /* real value at f=Nyquist */ - - C[0] = a; - C[1] = 0; - S += 2,C += 2; - - if(amp && ph) { - for ( i = 1; i < N2; i++,S += 2,C += 2 ) { - C[0] = hypot( S[0], S[1] ); - C[1] = -atan2( S[1], S[0] ); - } - } - else if(amp) { - for ( i = 1; i < N2; i++,S += 2,C += 2 ) - C[0] = hypot( S[0], S[1] ); - } - else if(ph) { - for ( i = 1; i < N2; i++,S += 2,C += 2 ) - C[1] = -atan2( S[1], S[0] ); - } - - C[0] = b; - C[1] = 0; -#else - - int real, imag, - amp, phase; - float a, b; - int i; - - for ( i = 0; i <= N2; i++ ) { - imag = phase = ( real = amp = i<<1 ) + 1; - a = ( i == N2 ? S[1] : S[real] ); - b = ( i == 0 || i == N2 ? 0. : S[imag] ); - C[amp] = hypot( a, b ); - C[phase] = -atan2( b, a ); - } -#endif -} - - -/* unconvert essentially undoes what convert does, i.e., it - turns N2+1 PAIRS of amplitude and frequency values in - C into N2 PAIR of complex spectrum data (in rfft format) - in output array S; sampling rate R and interpolation factor - I are used to recompute phase values from frequencies */ - -void leanunconvert( float *C, float *S, int N2 ) -{ -#if 1 - register int i; - - S[0] = fabs(C[0]); - S[1] = fabs(C[N2*2]); - S += 2,C += 2; - - for (i = 1; i < N2; i++,S += 2,C += 2 ) { - S[0] = C[0] * cos( C[1] ); - S[1] = -C[0] * sin( C[1] ); - } -#else - int real, imag, - amp, phase; - float a, b; - register int i; - - for ( i = 0; i <= N2; i++ ) { - imag = phase = ( real = amp = i<<1 ) + 1; - S[real] = *(C+amp) * cos( *(C+phase) ); - if ( i != N2 ) - S[imag] = -*(C+amp) * sin( *(C+phase) ); - } - -#endif -} - diff --git a/externals/grill/fftease/src/main.cpp b/externals/grill/fftease/src/main.cpp deleted file mode 100644 index 75bea448..00000000 --- a/externals/grill/fftease/src/main.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/* - -FFTease - A set of Live Spectral Processors -Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform - -Copyright (c)Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#include "main.h" - - -// Initialization function for xsample library -static V fftease_main() -{ - post(""); - post("-------------------------------------------------------------------"); - post("FFTease - A set of Live Spectral Processors"); - post("Originally written by Eric Lyon and Christopher Penrose for MAX/MSP"); - post(""); - post("flext port (version " FFTEASE_VERSION ") provided by Thomas Grill, (C)2003-2004"); - post("-------------------------------------------------------------------"); - post(""); - - // call the objects' setup routines - FLEXT_DSP_SETUP(burrow); - FLEXT_DSP_SETUP(cross); - FLEXT_DSP_SETUP(dentist); - FLEXT_DSP_SETUP(disarray); - FLEXT_DSP_SETUP(drown); - FLEXT_DSP_SETUP(ether); - FLEXT_DSP_SETUP(morphine); - FLEXT_DSP_SETUP(scrape); - FLEXT_DSP_SETUP(shapee); - FLEXT_DSP_SETUP(swinger); - FLEXT_DSP_SETUP(taint); - FLEXT_DSP_SETUP(thresher); - FLEXT_DSP_SETUP(vacancy); - FLEXT_DSP_SETUP(xsyn); -/* - FLEXT_DSP_SETUP(pvcompand); - FLEXT_DSP_SETUP(pvoc); - -*/ -} - -// setup the library -FLEXT_LIB_SETUP(fftease,fftease_main) - diff --git a/externals/grill/fftease/src/main.h b/externals/grill/fftease/src/main.h deleted file mode 100644 index 50ca4c66..00000000 --- a/externals/grill/fftease/src/main.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - -FFTease - A set of Live Spectral Processors -Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform - -Copyright (c)Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#ifndef __FFTEASE_H -#define __FFTEASE_H - -#define FFTEASE_VERSION "0.0.0" - - -#define FLEXT_ATTRIBUTES 1 - -#include - -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 501) -#error You need at least flext version 0.5.1 -#endif - - -#include "pv.h" - -// lazy me -#define F float -#define D double -#define I int -#define L long -#define C char -#define V void -#define BL bool -#define S t_sample - - - -class fftease: - public flext_dsp -{ - FLEXT_HEADER(fftease,flext_dsp) - -public: - fftease(I mult,I flags); - virtual ~fftease(); - - static F FromdB(F v) { return pow(10.,v*.05); } - - inline I get_N() const { return _N; } - inline F get_Fund() const { return smprt/_N; } - -protected: - - virtual BL Init(); - virtual V Exit(); - - virtual V m_dsp(I n,S *const *in,S *const *out); - virtual V m_signal(I n,S *const *in,S *const *out); - - virtual V Set(); - virtual V Clear(); - virtual V Delete(); - virtual V Transform(I _N,S *const *in) = 0; - - - V Mult(I n) { _mult = n; MakeVar(); } - inline I Mult() const { return _mult; } - - F *_input1,*_input2; - F *_buffer1,*_buffer2; - F *_channel1,*_channel2; - F *_output; - F *_trigland; - I *_bitshuffle; - F *_Wanal,*_Wsyn,*_Hwin; - - F *_c_lastphase_in1,*_c_lastphase_in2,*_c_lastphase_out; - F _c_factor_in; - - I _inCount; - - enum { - F_STEREO = 0x01, - F_BALANCED = 0x02, - F_BITSHUFFLE = 0x04, - F_RMS = 0x08, - F_NOSPEC = 0x10,F_SPECRES = 0x20,F_PHCONV = 0x40, - F_NOAMP1 = 0x100, - F_NOPH1 = 0x200, - F_NOAMP2 = 0x400, - F_NOPH2 = 0x800 - }; - - I _flags; - F _rms; - -private: - - V MakeVar() { _N = Blocksize()*_mult; } - - I blsz; - F smprt; - I _mult,_N; -}; - - -#endif diff --git a/externals/grill/fftease/src/makewindows.c b/externals/grill/fftease/src/makewindows.c deleted file mode 100644 index e26690ec..00000000 --- a/externals/grill/fftease/src/makewindows.c +++ /dev/null @@ -1,190 +0,0 @@ -#include "pv.h" -#include "math.h" - -/* - * make balanced pair of analysis (A) and synthesis (S) windows; - * window lengths are Nw, FFT length is N, synthesis interpolation - * factor is I, and osc is true (1) if oscillator bank resynthesis - * is specified - */ -void makewindows( float *H, float *A, float *S, int Nw, int N, int I, int osc ) -{ - int i ; - float sum ; - -/* - * basic Hamming windows - */ - for ( i = 0 ; i < Nw ; i++ ) - H[i] = A[i] = S[i] = 0.54 - 0.46*cos( PV_2PI*i/(Nw - 1) ) ; -/* - * when Nw > N, also apply interpolating (sinc) windows to - * ensure that window are 0 at increments of N (the FFT length) - * away from the center of the analysis window and of I away - * from the center of the synthesis window - */ - if ( Nw > N ) { - float x ; - -/* - * take care to create symmetrical windows - */ - x = -(Nw - 1)/2. ; - for ( i = 0 ; i < Nw ; i++, x += 1. ) - if ( x != 0. ) { - A[i] *= N*sin( PV_PI*x/N )/(PV_PI*x) ; - if ( I ) - S[i] *= I*sin( PV_PI*x/I )/(PV_PI*x) ; - } - } -/* - * normalize windows for unity gain across unmodified - * analysis-synthesis procedure - */ - for ( sum = i = 0 ; i < Nw ; i++ ) - sum += A[i] ; - - for ( i = 0 ; i < Nw ; i++ ) { - float afac = 2./sum ; - float sfac = Nw > N ? 1./afac : afac ; - A[i] *= afac ; - S[i] *= sfac ; - } - - if ( Nw <= N && I ) { - for ( sum = i = 0 ; i < Nw ; i += I ) - sum += S[i]*S[i] ; - for ( sum = 1./sum, i = 0 ; i < Nw ; i++ ) - S[i] *= sum ; - } -} - -void makehamming( float *H, float *A, float *S, int Nw, int N, int I, int osc,int odd ) -{ - int i; - float sum ; - -/* - * basic Hamming windows - */ - - - if (odd) { - for ( i = 0 ; i < Nw ; i++ ) - H[i] = A[i] = S[i] = sqrt(0.54 - 0.46*cos( PV_2PI*i/(Nw - 1) )); - } - - else { - - for ( i = 0 ; i < Nw ; i++ ) - H[i] = A[i] = S[i] = 0.54 - 0.46*cos( PV_2PI*i/(Nw - 1) ); - - } - -/* - * when Nw > N, also apply interpolating (sinc) windows to - * ensure that window are 0 at increments of N (the FFT length) - * away from the center of the analysis window and of I away - * from the center of the synthesis window - */ - if ( Nw > N ) { - float x ; - -/* - * take care to create symmetrical windows - */ - x = -(Nw - 1)/2. ; - for ( i = 0 ; i < Nw ; i++, x += 1. ) - if ( x != 0. ) { - A[i] *= N*sin( PV_PI*x/N )/(PV_PI*x) ; - if ( I ) - S[i] *= I*sin( PV_PI*x/I )/(PV_PI*x) ; - } - } -/* - * normalize windows for unity gain across unmodified - * analysis-synthesis procedure - */ - for ( sum = i = 0 ; i < Nw ; i++ ) - sum += A[i] ; - - for ( i = 0 ; i < Nw ; i++ ) { - float afac = 2./sum ; - float sfac = Nw > N ? 1./afac : afac ; - A[i] *= afac ; - S[i] *= sfac ; - } - - if ( Nw <= N && I ) { - for ( sum = i = 0 ; i < Nw ; i += I ) - sum += S[i]*S[i] ; - for ( sum = 1./sum, i = 0 ; i < Nw ; i++ ) - S[i] *= sum ; - } -} - - -void makehanning( float *H, float *A, float *S, int Nw, int N, int I, int osc, int odd ) -{ - int i; - float sum ; - -/* - * basic Hanning windows - */ - - - if (odd) { - for ( i = 0 ; i < Nw ; i++ ) - H[i] = A[i] = S[i] = sqrt(0.5 * (1. + cos(PV_PI + PV_2PI * i / (Nw - 1)))); - } - - else { - - for ( i = 0 ; i < Nw ; i++ ) - H[i] = A[i] = S[i] = 0.5 * (1. + cos(PV_PI + PV_2PI * i / (Nw - 1))); - - } - -/* - * when Nw > N, also apply interpolating (sinc) windows to - * ensure that window are 0 at increments of N (the FFT length) - * away from the center of the analysis window and of I away - * from the center of the synthesis window - */ - if ( Nw > N ) { - float x ; - -/* - * take care to create symmetrical windows - */ - x = -(Nw - 1)/2. ; - for ( i = 0 ; i < Nw ; i++, x += 1. ) - if ( x != 0. ) { - A[i] *= N*sin( PV_PI*x/N )/(PV_PI*x) ; - if ( I ) - S[i] *= I*sin( PV_PI*x/I )/(PV_PI*x) ; - } - } -/* - * normalize windows for unity gain across unmodified - * analysis-synthesis procedure - */ - for ( sum = i = 0 ; i < Nw ; i++ ) - sum += A[i] ; - - for ( i = 0 ; i < Nw ; i++ ) { - float afac = 2./sum ; - float sfac = Nw > N ? 1./afac : afac ; - A[i] *= afac ; - S[i] *= sfac ; - } - - if ( Nw <= N && I ) { - for ( sum = i = 0 ; i < Nw ; i += I ) - sum += S[i]*S[i] ; - for ( sum = 1./sum, i = 0 ; i < Nw ; i++ ) - S[i] *= sum ; - } -} - diff --git a/externals/grill/fftease/src/morphine~.cpp b/externals/grill/fftease/src/morphine~.cpp deleted file mode 100644 index cda155c8..00000000 --- a/externals/grill/fftease/src/morphine~.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/* - -FFTease - A set of Live Spectral Processors -Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform - -Copyright (c)Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#include "main.h" -#include - -class morphine: - public fftease -{ - FLEXT_HEADER_S(morphine,fftease,setup) - -public: - morphine(I argc,const t_atom *argv); - -protected: - - virtual V Transform(I n,S *const *in); - - F _index; - - struct pickme { I bin; F value; }; - static I sortpicks( const V *a, const V *b ); - - pickme *_picks; - -private: - virtual V Set(); - virtual V Clear(); - virtual V Delete(); - - static V setup(t_classid c); - - FLEXT_ATTRVAR_F(_index) -}; - -FLEXT_LIB_DSP_V("morphine~",morphine) - - -V morphine::setup(t_classid c) -{ - FLEXT_CADDATTR_VAR1(c,"index",_index); -} - - -morphine::morphine(I argc,const t_atom *argv): - fftease(4,F_STEREO|F_BALANCED|F_BITSHUFFLE), - _index(0) -{ - /* parse and set object's options given */ - if(argc >= 1) { - if(CanbeFloat(argv[0])) - _index = GetAFloat(argv[0]); - else - post("%s - Index must be a float value - set to %f",thisName(),_index); - } - - AddInSignal("Messages and input signal 1"); - AddInSignal("Input signal 2"); - AddOutSignal("Transformed signal"); -} - -V morphine::Clear() -{ - _picks = NULL; - fftease::Clear(); -} - -V morphine::Delete() -{ - fftease::Delete(); - if(_picks) delete[] _picks; -} - -V morphine::Set() -{ - fftease::Set(); - - _picks = new pickme[get_N()/2+1]; -} - -I morphine::sortpicks( const void *a, const void *b ) -{ - if ( ((pickme *)a)->value > ((pickme *) b)->value ) return 1; - if ( ((pickme *) a)->value < ((pickme *) b)->value ) return -1; - return 0; -} - -V morphine::Transform(I _N,S *const *) -{ - const I _N2 = _N/2; - I i; - for ( i = 0; i <= _N2; i++ ) { - // find amplitude differences between home and visitors - _picks[i].value = fabs( _channel1[i*2] - _channel2[i*2]); - _picks[i].bin = i; - } - - // sort our differences in ascending order - qsort( _picks, _N2+1, sizeof(pickme), sortpicks ); - - I ix2 = (I)(_index*(_N2+1)+.5)*2; - if(ix2 < 0) ix2 = 0; - else if(ix2 > _N+2) ix2 = _N+2; - - // choose the bins that are least different first - for (i=0; i < ix2; i += 2) { - _channel1[i] = _channel2[i]; - _channel1[i+1] = _channel2[i+1]; - } -} - diff --git a/externals/grill/fftease/src/pv.h b/externals/grill/fftease/src/pv.h deleted file mode 100644 index 1a555ec7..00000000 --- a/externals/grill/fftease/src/pv.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * This file is part of the pv-lib - * - * The pv-lib can be used by everyone as desired - * - * (c) Eric Lyon and Christopher Penrose - */ - -#include - -/* ------------------------------------- - modifications by Thomas Grill -*/ - -/* #include */ -#include - -#ifdef _MSC_VER -#pragma warning(disable: 4305) -#pragma warning(disable: 4244) -#pragma warning(disable: 4101) -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - -#define PV_PI 3.141592653589793115997963468544185161590576171875 -#define PV_2PI (2.*PV_PI) - -/* ------------------------------------- */ - - -#define FORWARD 1 -#define INVERSE 0 - -typedef struct { - float min; - float max; -} Bound; - -void init_rdft(int n, int *ip, float *w); -void pv_rdft(int n, int isgn, float *a, int *ip, float *w); -void fold( float *I, float *W, int Nw, float *O, int N, int n ); -void overlapadd(float *I, int N, float *W, float *O, int Nw, int n ); -void makehanning( float *H, float *A, float *S, int Nw, int N, int I, int osc, int odd ); -void makewindows( float *H, float *A, float *S, int Nw, int N, int I, int osc ); -void leanconvert( float *S, float *C, int N2 , int amp, int ph ); -void leanunconvert( float *C, float *S, int N2 ); -void pv_rfft( float *x, int N, int forward ); -void pv_cfft( float *x, int NC, int forward ); -void convert_new(float *S, float *C, int N2, float *lastphase, float fundamental, float factor ); -void convert(float *S, float *C, int N2, float *lastphase, float fundamental, float factor ); -void unconvert(float *C, float *S, int N2, float *lastphase, float fundamental, float factor ); - - -/* ------------------------------------- */ - -#ifdef __cplusplus -} -#endif - -/* ------------------------------------- */ - diff --git a/externals/grill/fftease/src/pvoc~.cpp b/externals/grill/fftease/src/pvoc~.cpp deleted file mode 100644 index 5f941e09..00000000 --- a/externals/grill/fftease/src/pvoc~.cpp +++ /dev/null @@ -1,130 +0,0 @@ -/* - -FFTease - A set of Live Spectral Processors -Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform - -Copyright (c)Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#include "main.h" - - -class pvoc: - public fftease -{ - FLEXT_HEADER_S(pvoc,fftease,setup) - -public: - pvoc(I argc,const t_atom *argv); - -protected: - - virtual V Transform(I _N2,S *const *in); - - BL _invert; - - F _threshold,_multiplier; - F _thresh_dB,_mult_dB; - -private: - V ms_thresh(F v) { _threshold = FromdB(_thresh_dB = v); } - V ms_mult(F v) { _multiplier = FromdB(_mult_dB = v); } - - - static V setup(t_classid c); - - FLEXT_ATTRGET_F(_thresh_dB) - FLEXT_CALLSET_F(ms_thresh) - FLEXT_ATTRGET_F(_mult_dB) - FLEXT_CALLSET_F(ms_mult) - FLEXT_ATTRVAR_B(_invert) -}; - -FLEXT_LIB_DSP_V("pvoc~",pvoc) - - -V pvoc::setup(t_classid c) -{ - FLEXT_CADDATTR_VAR(c,"thresh",_thresh_dB,ms_thresh); - FLEXT_CADDATTR_VAR(c,"mult",_mult_dB,ms_mult); - FLEXT_CADDATTR_VAR1(c,"invert",_invert); -} - - -pvoc::pvoc(I argc,const t_atom *argv): - fftease(4,F_STEREO|F_BALANCED|F_BITSHUFFLE|F_NOPH2), - _thresh_dB(-30),_mult_dB(-18), - _invert(false) -{ - /* parse and set object's options given */ - if(argc >= 1) { - if(CanbeFloat(argv[0])) - _thresh_dB = GetAFloat(argv[0]); - else - post("%s - Threshold must be a float value - set to %0f",thisName(),_thresh_dB); - } - if(argc >= 2) { - if(CanbeFloat(argv[1])) - _mult_dB = GetAFloat(argv[1]); - else - post("%s - Multiplier must be a float value - set to %0f",thisName(),_mult_dB); - } - if(argc >= 3) { - if(CanbeBool(argv[2])) - _invert = GetABool(argv[2]); - else - post("%s - Invert flag must be a boolean value - set to %i",thisName(),_invert?1:0); - } - - ms_thresh(_thresh_dB); - ms_mult(_mult_dB); - - AddInSignal("Messages and input signal"); - AddInSignal("Reference signal"); - AddOutSignal("Transformed signal"); -} - - -V pvoc::Transform(I _N,S *const *in) -{ - /* - int freq,amp; - int chan; - - // start osc bank - for ( chan = lo_bin; chan < hi_bin; chan++ ) { - freq = ( amp = ( chan << 1 ) ) + 1; - if ( _channel1[amp] < synt ){ - breaker = 1; - } - if( breaker ) { - breaker = 0 ; - } - else { - _channel1[freq] *= myPInc; - finc = ( _channel1[freq] - ( f = lastfreq[chan] ) )*Iinv; - ainc = ( _channel1[amp] - ( a = lastamp[chan] ) )*Iinv; - address = index[chan]; - for ( n = 0; n < I; n++ ) { - output[n] += a*table[ (int) address ]; - address += f; - while ( address >= L ) - address -= L; - while ( address < 0 ) - address += L; - a += ainc; - f += finc; - } - lastfreq[chan] = _channel1[freq]; - lastamp[chan] = _channel1[amp]; - index[chan] = address; - } - } - */ -} - - - diff --git a/externals/grill/fftease/src/scrape~.cpp b/externals/grill/fftease/src/scrape~.cpp deleted file mode 100644 index dff46dfb..00000000 --- a/externals/grill/fftease/src/scrape~.cpp +++ /dev/null @@ -1,154 +0,0 @@ -/* - -FFTease - A set of Live Spectral Processors -Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform - -Copyright (c)Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#include "main.h" -#include - -class scrape: - public fftease -{ - FLEXT_HEADER_S(scrape,fftease,setup) - -public: - scrape(I argc,const t_atom *argv); - -protected: - - virtual V Transform(I n,S *const *in); - - F _thresh1,_thresh2; - F _knee,_cutoff; - F *_threshfunc; - - V UpdThrFun(); - -private: - virtual V Set(); - virtual V Clear(); - virtual V Delete(); - - static V setup(t_classid c); - - inline V ms_knee(F knee) { _knee = knee; UpdThrFun(); } - inline V ms_cutoff(F cutoff) { _cutoff = cutoff; UpdThrFun(); } - inline V ms_thresh1(F thr) { _thresh1 = thr; UpdThrFun(); } - inline V ms_thresh2(F thr) { _thresh2 = thr; UpdThrFun(); } - - FLEXT_ATTRGET_F(_knee) - FLEXT_CALLSET_F(ms_knee) - FLEXT_ATTRGET_F(_cutoff) - FLEXT_CALLSET_F(ms_cutoff) - FLEXT_ATTRGET_F(_thresh1) - FLEXT_CALLSET_F(ms_thresh1) - FLEXT_ATTRGET_F(_thresh2) - FLEXT_CALLSET_F(ms_thresh2) -}; - -FLEXT_LIB_DSP_V("scrape~",scrape) - - -V scrape::setup(t_classid c) -{ - FLEXT_CADDATTR_VAR(c,"knee",_knee,ms_knee); - FLEXT_CADDATTR_VAR(c,"cutoff",_cutoff,ms_cutoff); - FLEXT_CADDATTR_VAR(c,"thresh1",_thresh1,ms_thresh1); - FLEXT_CADDATTR_VAR(c,"thresh2",_thresh2,ms_thresh2); -} - - -scrape::scrape(I argc,const t_atom *argv): - fftease(4,F_BALANCED|F_BITSHUFFLE), - _thresh1(.0001),_thresh2(.09), - _knee(1000),_cutoff(4000) - -{ - /* parse and set object's options given */ - if(argc >= 1) { - if(CanbeFloat(argv[0])) - _knee = GetAFloat(argv[0]); - else - post("%s - Knee must be a float value - set to %f",thisName(),_knee); - } - if(argc >= 2) { - if(CanbeFloat(argv[1])) { - F c = GetAFloat(argv[1]); - if(c > 0) _cutoff = c; - else - post("%s - Cutoff must be > 0 - set to %f",thisName(),_cutoff); - } - else - post("%s - Cutoff must be a float value - set to %f",thisName(),_cutoff); - } - - AddInSignal("Messages and input signal"); - AddInSignal("Multiplier signal"); - AddOutSignal("Transformed signal"); -} - -V scrape::Clear() -{ - _threshfunc = NULL; - fftease::Clear(); -} - -V scrape::Delete() -{ - fftease::Delete(); - if(_threshfunc) delete[] _threshfunc; -} - -V scrape::Set() -{ - fftease::Set(); - - _threshfunc = new F[get_N()/2]; - UpdThrFun(); -} - -V scrape::UpdThrFun() -{ - const I _N2 = get_N()/2; - const F funda = get_Fund(); - - F curfreq = funda; - for(I i = 0; i < _N2; i++ ) { - if( curfreq < _knee ) - _threshfunc[i] = 0; - else if( curfreq >= _knee && curfreq < _cutoff ) { - const F m = (_knee - curfreq) / (_cutoff - _knee) ; - _threshfunc[i] = (1-m) * _thresh1 + m * _thresh2 ; - } else - _threshfunc[i] = _thresh2; - - curfreq += funda ; - } -} - -/*! \brief Do the spectral transformation - - \remark maxamp is calculated later than in the original FFTease scrape~ object -*/ -V scrape::Transform(I _N,S *const *in) -{ - const F fmult = *in[0]; - const F *thrf = _threshfunc; - - I i; - F maxamp = 1.; - for( i = 0; i <= _N; i += 2 ) - if(maxamp < _channel1[i]) - maxamp = _channel1[i]; - - for( i = 0; i <= _N; i += 2 ) - if(_channel1[i] < *(thrf++) * maxamp) - _channel1[i] *= fmult; -} - diff --git a/externals/grill/fftease/src/shapee~.cpp b/externals/grill/fftease/src/shapee~.cpp deleted file mode 100644 index 1e86f801..00000000 --- a/externals/grill/fftease/src/shapee~.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/* - -FFTease - A set of Live Spectral Processors -Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform - -Copyright (c)Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#include "main.h" -#include - -class shapee: - public fftease -{ - FLEXT_HEADER(shapee,fftease) - -public: - shapee(I argc,const t_atom *argv); - -protected: - - virtual V Transform(I n,S *const *in); - - BL _qual; -}; - -FLEXT_LIB_DSP_V("shapee~",shapee) - - -shapee::shapee(I argc,const t_atom *argv): - fftease(2,F_STEREO|F_BITSHUFFLE), - _qual(false) -{ - /* parse and set object's options given */ - if(argc >= 1) { - if(CanbeBool(argv[0])) - _qual = GetABool(argv[0]); - else - post("%s - Quality must be a boolean value - set to %0i",thisName(),_qual?1:0); - } - - if(_qual) { - Mult(4); - _flags |= F_BALANCED; - } - else - Mult(2); - - AddInSignal("Messages and frequency reference signal"); - AddInSignal("Amplitude reference signal"); - AddOutSignal("Transformed signal"); -} - -#define THRESH 0.000001 - -V shapee::Transform(I _N,S *const *) -{ - // lets just shape the entire signal in groups of three - - I i; - for ( i=2; i <= _N; i += 6 ) { - const F ref = _channel1[i]; - F lowerMult,upperMult; - - if(!ref) - lowerMult = upperMult = 1; - else { - lowerMult = _channel1[i-2] / ref; - upperMult = _channel1[i+2] / ref; - } - F newCenter = ( _channel2[i-2]+_channel2[i]+_channel2[i+2] ) / (upperMult + lowerMult + 1); - - _channel2[i-2] = lowerMult * newCenter; - _channel2[i+2] = upperMult * newCenter; - _channel2[i] = newCenter; - } - - for ( i=0; i <= _N; i+=2 ) { - _channel1[i] = _channel2[i]; - if ( _channel1[i] == 0. ) - _channel1[i+1] = 0.; - else if( _channel1[i+1] == 0. ) - _channel1[i+1] = _channel2[i+1]; - } -} diff --git a/externals/grill/fftease/src/swinger~.cpp b/externals/grill/fftease/src/swinger~.cpp deleted file mode 100644 index 4660058d..00000000 --- a/externals/grill/fftease/src/swinger~.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/* - -FFTease - A set of Live Spectral Processors -Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform - -Copyright (c)Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#include "main.h" -#include - - -// add quality switch - -class swinger: - public fftease -{ - FLEXT_HEADER(swinger,fftease) - -public: - swinger(I argc,const t_atom *argv); - -protected: - - BL _qual; - - virtual V Transform(I n,S *const *in); -}; - -FLEXT_LIB_DSP_V("swinger~",swinger) - - -swinger::swinger(I argc,const t_atom *argv): - fftease(2,F_STEREO|F_BITSHUFFLE|F_NOPH1|F_NOAMP2), - _qual(false) -{ - /* parse and set object's options given */ - if(argc >= 1) { - if(CanbeBool(argv[0])) - _qual = GetABool(argv[0]); - else - post("%s - Quality must be a boolean value - set to %0i",thisName(),_qual?1:0); - } - - if(_qual) { - Mult(4); - _flags |= F_BALANCED; - } - else - Mult(2); - - AddInSignal("Messages and input signal"); - AddInSignal("Signal to supply phase information"); - AddOutSignal("Transformed signal"); -} - - -V swinger::Transform(I _N,S *const *) -{ - for (I i = 0; i <= _N; i += 2) _channel1[i+1] = _channel2[i+1]; -} diff --git a/externals/grill/fftease/src/taint~.cpp b/externals/grill/fftease/src/taint~.cpp deleted file mode 100644 index b9bf9cf9..00000000 --- a/externals/grill/fftease/src/taint~.cpp +++ /dev/null @@ -1,99 +0,0 @@ -/* - -FFTease - A set of Live Spectral Processors -Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform - -Copyright (c)Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#include "main.h" -#include - -class taint: - public fftease -{ - FLEXT_HEADER_S(taint,fftease,setup) - -public: - taint(I argc,const t_atom *argv); - -protected: - - virtual V Transform(I n,S *const *in); - - V ms_thresh(F thr) { _threshold = FromdB(_threshdB = thr); } - - F _threshold,_threshdB; - BL _invert; - -private: - static V setup(t_classid c); - - FLEXT_ATTRGET_F(_threshdB) - FLEXT_CALLSET_F(ms_thresh) - FLEXT_ATTRVAR_B(_invert) -}; - -FLEXT_LIB_DSP_V("taint~",taint) - - -V taint::setup(t_classid c) -{ - FLEXT_CADDATTR_VAR(c,"thresh",_threshdB,ms_thresh); - FLEXT_CADDATTR_VAR1(c,"invert",_invert); -} - - -taint::taint(I argc,const t_atom *argv): - fftease(4,F_STEREO|F_BALANCED|F_BITSHUFFLE|F_NOPH2), - _threshdB(-10),_invert(false) -{ - /* parse and set object's options given */ - if(argc >= 1) { - if(CanbeFloat(argv[0])) - _threshdB = GetAFloat(argv[0]); - else - post("%s - Threshold must be a float value - set to %f",thisName(),_threshdB); - } - - if(argc >= 2) { - if(CanbeBool(argv[1])) - _invert = GetABool(argv[1]); - else - post("%s - Invert must be a boolean value - set to %0i",thisName(),_invert?1:0); - } - - ms_thresh(_threshdB); - - AddInSignal("Messages and frequency reference signal"); - AddInSignal("Amplitude reference signal"); - AddOutSignal("Transformed signal"); -} - - -V taint::Transform(I _N,S *const *) -{ - register const F thr = _threshold; - - if(_invert) { - // use threshold for inverse filtering to avoid division by zero - for (I i = 0; i <= _N; i += 2) { - const F magnitude = _channel2[i]; - - if ( magnitude < thr ) - _channel1[i] = 0; - else - _channel1[i] /= magnitude; - } - } - else { - // simple multiplication of magnitudes - for (I i = 0; i <= _N; i += 2) { - const F magnitude = _channel2[i]; - if (magnitude > thr) _channel1[i] *= magnitude; - } - } -} diff --git a/externals/grill/fftease/src/thresher~.cpp b/externals/grill/fftease/src/thresher~.cpp deleted file mode 100644 index 7e674bdf..00000000 --- a/externals/grill/fftease/src/thresher~.cpp +++ /dev/null @@ -1,112 +0,0 @@ -/* - -FFTease - A set of Live Spectral Processors -Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform - -Copyright (c)Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#include "main.h" -#include - -class thresher: - public fftease -{ - FLEXT_HEADER_S(thresher,fftease,setup) - -public: - thresher(); - -protected: - virtual V Set(); - virtual V Clear(); - virtual V Delete(); - - virtual V Transform(I n,S *const *in); - - F *_compositeFrame; - I *_framesLeft; - BL _firstFrame; - - F _moveThreshold; - I _maxHoldFrames; - -private: - static V setup(t_classid c); -}; - -FLEXT_LIB_DSP("thresher~ nacho~",thresher) - - -V thresher::setup(t_classid ) -{ -} - -void thresher::Set() -{ - fftease::Set(); - - const F rate = Samplerate(); - const I n = Blocksize(),_N = get_N(),_N2 = _N/2; - - _compositeFrame = new F[_N+2]; - _framesLeft = new I[_N2+1]; - - _firstFrame = true; - _moveThreshold = .00001 ; - F _maxHoldTime = 5.0 ; - _maxHoldFrames = (I)(_maxHoldTime *rate/n); -} - -void thresher::Clear() -{ - fftease::Clear(); - _compositeFrame = NULL; - _framesLeft = NULL; -} - -void thresher::Delete() -{ - fftease::Delete(); - if(_compositeFrame) delete[] _compositeFrame; - if(_framesLeft) delete[] _framesLeft; -} - - -thresher::thresher(): - fftease(4,F_BALANCED|F_BITSHUFFLE|F_PHCONV) -{ - AddInSignal("Messages and input signal"); - AddOutSignal("Transformed signal"); -} - - -V thresher::Transform(I _N,S *const *) -{ - I *fr = _framesLeft; - if( _firstFrame ) { - for (I i = 0; i <= _N; i += 2,++fr ){ - _compositeFrame[i] = _channel1[i]; - _compositeFrame[i+1] = _channel1[i+1]; - *fr = _maxHoldFrames; - } - _firstFrame = false; - } - else { - for(I i = 0; i <= _N; i += 2,++fr ){ - if( (fabs( _compositeFrame[i] - _channel1[i] ) > _moveThreshold) || (*fr <= 0) ) { - _compositeFrame[i] = _channel1[i]; - _compositeFrame[i+1] = _channel1[i+1]; - *fr = _maxHoldFrames; - } - else { - _channel1[i] = _compositeFrame[i]; - _channel1[i+1] = _compositeFrame[i+1]; - --*fr; - } - } - } -} diff --git a/externals/grill/fftease/src/vacancy~.cpp b/externals/grill/fftease/src/vacancy~.cpp deleted file mode 100644 index 53341bb4..00000000 --- a/externals/grill/fftease/src/vacancy~.cpp +++ /dev/null @@ -1,134 +0,0 @@ -/* - -FFTease - A set of Live Spectral Processors -Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform - -Copyright (c)Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#include "main.h" -#include - -class vacancy: - public fftease -{ - FLEXT_HEADER_S(vacancy,fftease,setup) - -public: - vacancy(I argc,const t_atom *argv); - -protected: - virtual V Transform(I n,S *const *in); - - V ms_thresh(F thr) { _threshold = FromdB(_threshdB = thr); } - V ms_userms(BL r) { if(r) _flags |= F_RMS; else _flags &= ~F_RMS; } - - F _threshold,_threshdB; - BL _invert,_useRms,_swapPhase; - -private: - static V setup(t_classid c); - - FLEXT_ATTRGET_F(_threshdB) - FLEXT_CALLSET_F(ms_thresh) - FLEXT_ATTRVAR_B(_invert) - FLEXT_ATTRGET_B(_useRms) - FLEXT_CALLSET_B(ms_userms) - FLEXT_ATTRVAR_B(_swapPhase) -}; - -FLEXT_LIB_DSP_V("vacancy~",vacancy) - - -V vacancy::setup(t_classid c) -{ - FLEXT_CADDATTR_VAR(c,"thresh",_threshdB,ms_thresh); - FLEXT_CADDATTR_VAR1(c,"invert",_invert); - FLEXT_CADDATTR_VAR(c,"rms",_useRms,ms_userms); - FLEXT_CADDATTR_VAR1(c,"swap",_swapPhase); -} - - -vacancy::vacancy(I argc,const t_atom *argv): - fftease(2,F_STEREO|F_BITSHUFFLE), - _threshdB(-30),_invert(false),_useRms(true),_swapPhase(false) -{ - /* parse and set object's options given */ - if(argc >= 1) { - if(CanbeFloat(argv[0])) - _threshdB = GetAFloat(argv[0]); - else - post("%s - Threshold must be a float value - set to %f",thisName(),_threshdB); - } - - if(argc >= 2) { - if(CanbeBool(argv[1])) - _invert = GetABool(argv[1]); - else - post("%s - Invert must be a boolean value - set to %0i",thisName(),_invert?1:0); - } - - if(argc >= 3) { - if(CanbeBool(argv[2])) - _useRms = GetABool(argv[2]); - else - post("%s - Rms flag must be a boolean value - set to %0i",thisName(),_useRms?1:0); - } - - if(argc >= 4) { - if(CanbeBool(argv[3])) - _swapPhase = GetABool(argv[3]); - else - post("%s - Swapphase flag must be a boolean value - set to %0i",thisName(),_swapPhase?1:0); - } - - ms_thresh(_threshdB); - ms_userms(_useRms); - - AddInSignal("Messages and input signal"); - AddInSignal("Reference signal"); - AddOutSignal("Transformed signal"); -} - - -V vacancy::Transform(I _N,S *const *) -{ - const F useme = _useRms?_rms * _threshold:_threshold; - - // composite here please - if (_invert) { - if (_swapPhase) { - for (I i=0; i < _N; i+=2 ) - if ( _channel1[i] > useme && _channel2[i] < _channel1[i] ) { - _channel1[i] = _channel2[i]; - _channel1[i+1] = _channel2[i+1]; - } - } - else { - for (I i=0; i < _N; i+=2 ) - if ( _channel1[i] > useme && _channel2[i] < _channel1[i] ) { - _channel1[i] = _channel2[i]; - if ( _channel1[i+1] == 0. ) _channel1[i+1] = _channel2[i+1]; - } - } - } - else { - if (_swapPhase) { - for (I i=0; i < _N; i+=2 ) - if ( _channel1[i] < useme && _channel2[i] > _channel1[i] ) { - _channel1[i] = _channel2[i]; - _channel1[i+1] = _channel2[i+1]; - } - } - else { - for (I i=0; i < _N; i+=2 ) - if ( _channel1[i] < useme && _channel2[i] > _channel1[i] ) { - _channel1[i] = _channel2[i]; - if ( _channel1[i+1] == 0. ) _channel1[i+1] = _channel2[i+1]; - } - } - } -} diff --git a/externals/grill/fftease/src/xsyn~.cpp b/externals/grill/fftease/src/xsyn~.cpp deleted file mode 100644 index b08ae1e2..00000000 --- a/externals/grill/fftease/src/xsyn~.cpp +++ /dev/null @@ -1,50 +0,0 @@ -/* - -FFTease - A set of Live Spectral Processors -Originally written by Eric Lyon and Christopher Penrose for the Max/MSP platform - -Copyright (c)Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#include "main.h" -#include - -class xsyn: - public fftease -{ - FLEXT_HEADER(xsyn,fftease) - -public: - xsyn(); - -protected: - virtual V Transform(I n,S *const *in); -}; - -FLEXT_LIB_DSP("xsyn~",xsyn) - - -xsyn::xsyn(): - fftease(2,F_STEREO|F_BITSHUFFLE|F_NOPH2) -{ - AddInSignal("Messages and source signal 1"); - AddInSignal("Source signal 2"); - AddOutSignal("Transformed signal"); -} - - -V xsyn::Transform(I _N,S *const *) -{ - F maxamp = 0; - I i; - for( i = 0; i <= _N; i+= 2 ) - if(_channel2[i] > maxamp ) maxamp = _channel2[i]; - - const F f = maxamp?1./maxamp:1.; - - for( i = 0; i <= _N; i+= 2 ) - _channel1[i] *= (_channel2[i] * f); -} diff --git a/externals/grill/flext/Doxyfile b/externals/grill/flext/Doxyfile deleted file mode 100644 index 63e8b61d..00000000 --- a/externals/grill/flext/Doxyfile +++ /dev/null @@ -1,273 +0,0 @@ -# Doxyfile 1.4.3 - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = flext -PROJECT_NUMBER = 0.5.0 -OUTPUT_DIRECTORY = ./doc -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -USE_WINDOWS_ENCODING = NO -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = YES -STRIP_FROM_PATH = /Applications/util/ -STRIP_FROM_INC_PATH = -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = NO -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = NO -INHERIT_DOCS = YES -DISTRIBUTE_GROUP_DOC = NO -SEPARATE_MEMBER_PAGES = NO -TAB_SIZE = 8 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = NO -OPTIMIZE_OUTPUT_JAVA = NO -SUBGROUPING = YES -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = YES -EXTRACT_PRIVATE = YES -EXTRACT_STATIC = YES -EXTRACT_LOCAL_CLASSES = YES -EXTRACT_LOCAL_METHODS = NO -HIDE_UNDOC_MEMBERS = NO -HIDE_UNDOC_CLASSES = NO -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = NO -CASE_SENSE_NAMES = NO -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -SORT_BRIEF_DOCS = NO -SORT_BY_SCOPE_NAME = NO -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = YES -SHOW_DIRECTORIES = YES -FILE_VERSION_FILTER = -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = NO -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = \ - /Users/thomas/Develop/pdmax/flext/source -FILE_PATTERNS = *.c \ - *.cc \ - *.cxx \ - *.cpp \ - *.c++ \ - *.d \ - *.java \ - *.ii \ - *.ixx \ - *.ipp \ - *.i++ \ - *.inl \ - *.h \ - *.hh \ - *.hxx \ - *.hpp \ - *.h++ \ - *.idl \ - *.odl \ - *.cs \ - *.php \ - *.php3 \ - *.inc \ - *.m \ - *.mm \ - *.dox \ - *.C \ - *.CC \ - *.C++ \ - *.II \ - *.I++ \ - *.H \ - *.HH \ - *.H++ \ - *.CS \ - *.PHP \ - *.PHP3 \ - *.M \ - *.MM -RECURSIVE = NO -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = * -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = -INPUT_FILTER = -FILTER_PATTERNS = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = NO -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = NO -REFERENCES_RELATION = NO -USE_HTAGS = NO -VERBATIM_HEADERS = YES -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = html -HTML_FILE_EXTENSION = .html -HTML_HEADER = -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = YES -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -BINARY_TOC = NO -TOC_EXPAND = NO -DISABLE_INDEX = NO -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = NO -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = YES -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = YES -USE_PDFLATEX = YES -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -XML_PROGRAMLISTING = YES -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = YES -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = FLEXT_SYS=2 \ - FLEXT_SHARED \ - __DOXYGEN__ -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES -HIDE_UNDOC_RELATIONS = YES -HAVE_DOT = NO -CLASS_GRAPH = YES -COLLABORATION_GRAPH = YES -GROUP_GRAPHS = YES -UML_LOOK = NO -TEMPLATE_RELATIONS = NO -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = YES -CALL_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DIRECTORY_GRAPH = YES -DOT_IMAGE_FORMAT = png -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1024 -MAX_DOT_GRAPH_DEPTH = 1000 -DOT_TRANSPARENT = NO -DOT_MULTI_TARGETS = NO -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO diff --git a/externals/grill/flext/Makefile.am b/externals/grill/flext/Makefile.am deleted file mode 100755 index 0cf89b38..00000000 --- a/externals/grill/flext/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -SUBDIRS = source tutorial - -EXTRA_DIST = flext.doxy \ No newline at end of file diff --git a/externals/grill/flext/bootstrap.sh b/externals/grill/flext/bootstrap.sh deleted file mode 100755 index 8e1a99b2..00000000 --- a/externals/grill/flext/bootstrap.sh +++ /dev/null @@ -1,5 +0,0 @@ -#! /bin/sh - -aclocal \ -&& automake --foreign \ -&& autoconf diff --git a/externals/grill/flext/build.bat b/externals/grill/flext/build.bat deleted file mode 100644 index 4f97f0cd..00000000 --- a/externals/grill/flext/build.bat +++ /dev/null @@ -1,58 +0,0 @@ -@echo off - -rem -rem flext - C++ layer for Max/MSP and pd (pure data) externals -rem -rem Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -rem For information on usage and redistribution, and for a DISCLAIMER OF ALL -rem WARRANTIES, see the file, "license.txt," in this distribution. -rem -rem more information on http://grrrr.org/ext -rem ------------------------------------------------------------------------ -rem -rem To build flext or flext-based externals simply run this script. -rem Running it without arguments will print some help to the console. -rem -rem ------------------------------------------------------------------------ - -set flext=%~dp0 - -rem Arguments: -rem %1 - system (pd/max) -rem %2 - compiler (msvc/gcc/mingw/cygwin/bcc/icc) -rem %3 - target (build/clean/install) - -set platform=win -set rtsys=%1 -set compiler=%2 -set target=%3 - -rem --- The subbatch knowns which make utility to use --- -set subbatch=%flext%buildsys\build-%compiler%.bat - -if "%platform%"=="" goto syntax -if "%rtsys%"=="" goto syntax -if "%compiler%"=="" goto syntax - -if not exist %subbatch% goto syntax - -call %subpatch% %subbatch% %platform% %rtsys% %target% %4 %5 %6 %7 %8 %9 - -goto end - -rem ----------------------------------------- -:syntax - -echo . -echo SYNTAX: build [system] [compiler] {target} -echo system ... pd / max -echo compiler ... msvc / gcc / mingw / cygwin / bcc / icc -echo target ... all (default) / clean / install -echo . -echo Please make sure that your make program and compiler can be accessed with the -echo system path and that all relevant environment variables are properly set. -echo . -echo For further information read flext/build.txt -echo . - -:end diff --git a/externals/grill/flext/build.sh b/externals/grill/flext/build.sh deleted file mode 100644 index c467fd45..00000000 --- a/externals/grill/flext/build.sh +++ /dev/null @@ -1,57 +0,0 @@ -#! /bin/bash - -# flext - C++ layer for Max/MSP and pd (pure data) externals -# -# Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -# For information on usage and redistribution, and for a DISCLAIMER OF ALL -# WARRANTIES, see the file, "license.txt," in this distribution. -# -# more information on http://grrrr.org/ext -# ------------------------------------------------------------------------ -# -# To build flext or flext-based externals simply run this script. -# Running it without arguments will print some help to the console. -# -# ------------------------------------------------------------------------ - -flext=${0%/*}/ -if [ "$flext" = "$0"/ ]; then flext=./ ; fi - -# Arguments: -# $1 - system (pd/max) -# $2 - compiler (msvc/gcc/mingw/cygwin/bcc/icc) -# $3 - target (build/clean/install) - -unamesys=$(uname -s) - -case $unamesys in - Linux) platform=lnx;; - Darwin) platform=mac;; - CYGWIN*|MINGW*) platform=win;; - *) echo Platform $unamesys not supported; exit;; -esac - -rtsys=$1 -compiler=$2 -target=$3 - -# --- The subbatch knows which make utility to use --- -subbatch=${flext}buildsys/build-${compiler}.sh - -if - [ -n "$platform" -a -n "$rtsys" -a -n "$compiler" -a -f $subbatch ] -then - sh $subbatch $platform $rtsys $target $4 $5 $6 $7 $8 $9 -else - echo - echo SYNTAX: build.sh [system] [compiler] {target} - echo system ..... pd / max - echo compiler ... msvc / gcc / mingw / cygwin / bcc / icc - echo target ..... build \(default\) / clean / install - echo - echo Please make sure that your make program and compiler can be accessed with the - echo system path and that all relevant environment variables are properly set. - echo - echo For further information read flext/build.txt - echo -fi diff --git a/externals/grill/flext/build.txt b/externals/grill/flext/build.txt deleted file mode 100644 index 04eb5248..00000000 --- a/externals/grill/flext/build.txt +++ /dev/null @@ -1,251 +0,0 @@ -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - ----------------------------------------------------------------------------- - -This document consists of the following parts: - -0) Important stuff at the beginning -1) Using the flext build system -1.1) Building and installing flext -1.2) Building externals -1.3) Tested configurations - -2) Using autoconf - -3) Other ways to compile flext and flext-based externals - ----------------------------------------------------------------------------- - -0) Important stuff at the beginning -=================================== - -Please be aware that the build system might have difficulties handling paths with spaces. -Under unix you might get along with escaping your\ path or quoting "your path". -Under Windows escaping doesn't work at all and quoting might not work either - therefore it's -best not to use spaced paths at all. - ----------------------------------------------------------------------------- - -1) Using the flext build system -=============================== - -flext provides a universal build system which supports - -- various operating systems - Windows (win) - Linux (lnx) - MacOSX (mac) -- various real-time systems - Pure Data (pd) - Max/MSP (max) -- various make programs - GNU make (gnumake) - Microsoft nmake (nmake) - Borland make (bmake) -- various compilers - Microsoft Visual C/C++ 6.0 or .NET 2002/2003 (msvc) - GNU gcc 2.95 and above (gcc,cygwin,mingw) - Borland bcc32 (bcc) - -Useful combinations of the above are - -under Windows: -pd msvc, using nmake -pd cygwin, using GNU make -pd mingw, using GNU make (from the CMD prompt, not msys!) -max msvc, using nmake -max cygwin, using GNU make -max mingw, using GNU make (from the CMD prompt, not msys!) -pd bcc, using Borland make - -under Linux or MacOSX: -pd gcc, using GNU make - -under MacOSX: -max gcc, using GNU make - Mach-O externals only (Max 4.5 upwards) - - -There are two central scripts in the flext folder which invoke the building process: -- build.sh for bash shells (Linux, MacOSX, cygwin) -- build.bat for the Windows command prompt - -A project needs to provide some information in order to be built properly. -By default, this resides in a file called package.txt - - -Please note, that the build system is shell-oriented, which means, that you'll have -to launch a command prompt (cmd.exe under Windows) and probably also set some -environment variables for your development system (e.g. run vcvars32.bat included with Microsoft Visual Studio) - -By invoking one of the build scripts (e.g. with "bash build.sh" under unix, -or just "build" unter Windows) you'll get some lines of help. -Operating System, real-time system and compiler need to be provided as arguments. - - -See buildsys/readme.txt for developer-centered information. - - -1.1) Prerequisites -================== - -Linux: -- A gnu g/g++ compiler should be present on any system. - The command "g++ --version" should show version 2.95 at least. Compiler version >= 3.3 is recommended. - -OSX: -- The developer package must be installed which contains all necessary parts. - -Windows: -- Microsoft Visual Studio 6, .NET 2002, .NET 2003 or .NET 2005 - be sure to use the VCVARS32.BAT (or probably SDKVARS.BAT) command on the prompt to set up the environment variables -or -- cygwin with binutils, gcc and make packages - - - -1.2) Building and installing flext -================================== - -Flext can build itself using the build system. -From the flext main directory, run the build script - -e.g. under Windows - build pd msvc -or under unix with - bash build.sh pd gcc - -When you run it for the first time, one or more configuration files will be created -from templates - you will get a message on the console. -You should edit the files to adapt it to your system. - -Depending on your platform these will have name like -buildsys/config-win-pd-msvc.txt -or -buildsys/config-lnx-pd-gcc.txt -or -buildsys/config-mac-max-gcc.txt - - -After editing the files you will have to run the build script again to ensure that flext is built. - -After successfully building everything, you can install flext with (under Windows) - build pd msvc install -or (under unix) - bash build.sh pd gcc install - - -You will probably have to have superuser rights in order to install things -into the default location. -(try "sudo" or "su -c" prefixes, or log in as root) - - -1.3) Building externals -======================= - -The flext build system can be used to compile flext-based externals or also -native PD and Max/MSP externals, provided there is a package.txt file in the project folder. - -In the shell, change to the project folder. -Then, simply run the flext build script, - -e.g. under Windows - ..\flext\build pd msvc -Then install your newly built external with - ..\flext\build pd msvc install -You can clean up the intermediate build folders with - ..\flext\build pd msvc clean - -or under unix with - bash ../flext/build.sh pd gcc -Then install your external with - bash ../flext/build.sh pd gcc install -You can clean up the intermediate build folders with - bash ../flext/build.sh pd gcc clean - - -1.4) Tested configurations -========================== - -Both flext and flext-based externals have been successfully built with the -following combination of platform-system-compiler, build type. -A missing combination does not necessarily mean that it won't work. - -win-pd-msvc, single/multi/shared -win-pd-bcc, single/multi/shared -win-pd-mingw, single/multi/shared (from CMD prompt, not MSYS) -win-pd-cygwin, single/multi/shared -win-max-msvc, single/multi/shared -win-max-cygwin, single/multi/shared -win-max-mingw, single/multi/shared - - -mac-pd-gcc, single/multi/shared -mac-max-gcc, single/multi/shared - -lnx-pd-gcc, single/multi/shared - ----------------------------------------------------------------------------- - -2) Using autoconf -================= - -Thanks to Tim Blechmann, flext can also be built using autoconf. -This only works under unix shells. - -When starting from a fresh cvs-based copy of flext first run -./bootstrap.sh - -then you can run -./configure --help -to get a page of options. - -You need to pass the path to the PD source files to the ./configure script, e.g. with -./configure --with-sysdir=/usr/local/src/pd/src - -Then build flext with -make -and install it with -su -c "make install" - ----------------------------------------------------------------------------- - -3) Other ways to compile flext and flext-based externals -======================================================== - -- Windows - Microsoft Visual Studio projects (.vcproj files) - - Please have a look at the projects delivered with flext and flext-based externals. - -- MacOSX - Apple Xcode projects (.xcode bundles) - - Please have a look at the projects delivered with flext and flext-based externals. - - Xcode projects often use some Source Trees (definable in the Xcode Preferences). - - Flext - the flext main folder - - PD - the PD installation - - Max SDK - the Max SDK (path ending with "c74support") - - Max Common - Max common files (normally /Library/Application\ Support/Cycling\ \'74 ) - -- MacOSX - Metrowerks Codewarrior (.mcp files) - - You should have the following "Source Trees" (CW preferences, not project specific!) defined: - "OS X Volume" - Pointing to your OSX boot drive - "flext" - Pointing to the flext main directory - "Cycling74 OSX" - Pointing to the SDK for Max/MSP - the path should end with /c74support - - With your project using flext use the prefix file "flcwmax-x.h" or, - alternatively "flcwmax-x-thr.h" for threading support. - -- MacOS9 - Metrowerks Codewarrior (.mcp files) - - You should have the following "Source Trees" (CW preferences, not project specific!) defined: - "flext" - Pointing to the flext main directory - "Cycling74" - Pointing to the Cycling 74 SDK - "MP SDK" - Pointing to the Multiprocessing SDK (for threading support) - - With your project using flext use the prefix file "flcwmax.h" or, - alternatively "flcwmax-thr.h" for threading support. diff --git a/externals/grill/flext/build/bmake-win-bcc.inc b/externals/grill/flext/build/bmake-win-bcc.inc deleted file mode 100644 index a54bb367..00000000 --- a/externals/grill/flext/build/bmake-win-bcc.inc +++ /dev/null @@ -1,17 +0,0 @@ -!ifdef SIMD -DEFS=$(DEFS) /DFLEXT_USE_SIMD -!endif - -!ifdef SNDOBJ -SRCS=$(SRCS) $(SRCS_SNDOBJ) -HDRS=$(HDRS) $(HDRS_SNDOBJ) -INCPATH=$(INCPATH) /I$(SNDOBJ)\include -LIBS=$(LIBS) $(SNDOBJ)\lib\sndobj.lib -!endif - -!ifdef STK -SRCS=$(SRCS) $(SRCS_STK) -HDRS=$(HDRS) $(HDRS_STK) -INCPATH=$(INCPATH) /I$(STK)\include -LIBS=$(LIBS) $(STK)\lib\stk.lib -!endif diff --git a/externals/grill/flext/build/config-lnx.def b/externals/grill/flext/build/config-lnx.def deleted file mode 100644 index 88c43f4d..00000000 --- a/externals/grill/flext/build/config-lnx.def +++ /dev/null @@ -1,2 +0,0 @@ -# comment out to inhibit SIMD (Altivec/SSE) usage -SIMD=1 diff --git a/externals/grill/flext/build/config-mac.def b/externals/grill/flext/build/config-mac.def deleted file mode 100644 index 88c43f4d..00000000 --- a/externals/grill/flext/build/config-mac.def +++ /dev/null @@ -1,2 +0,0 @@ -# comment out to inhibit SIMD (Altivec/SSE) usage -SIMD=1 diff --git a/externals/grill/flext/build/config-win.def b/externals/grill/flext/build/config-win.def deleted file mode 100644 index 88c43f4d..00000000 --- a/externals/grill/flext/build/config-win.def +++ /dev/null @@ -1,2 +0,0 @@ -# comment out to inhibit SIMD (Altivec/SSE) usage -SIMD=1 diff --git a/externals/grill/flext/build/gnumake-lnx-gcc.inc b/externals/grill/flext/build/gnumake-lnx-gcc.inc deleted file mode 100644 index aec212c5..00000000 --- a/externals/grill/flext/build/gnumake-lnx-gcc.inc +++ /dev/null @@ -1,13 +0,0 @@ -ifdef SIMD -DEFS += -DFLEXT_USE_SIMD -endif - -ifdef SNDOBJ_LIB -SRCS+=$(SRCS_SNDOBJ) -HDRS+=$(HDRS_SNDOBJ) -endif - -ifdef STK_LIB -SRCS+=$(SRCS_STK) -HDRS+=$(HDRS_STK) -endif diff --git a/externals/grill/flext/build/gnumake-lnx-icc.inc b/externals/grill/flext/build/gnumake-lnx-icc.inc deleted file mode 100644 index aec212c5..00000000 --- a/externals/grill/flext/build/gnumake-lnx-icc.inc +++ /dev/null @@ -1,13 +0,0 @@ -ifdef SIMD -DEFS += -DFLEXT_USE_SIMD -endif - -ifdef SNDOBJ_LIB -SRCS+=$(SRCS_SNDOBJ) -HDRS+=$(HDRS_SNDOBJ) -endif - -ifdef STK_LIB -SRCS+=$(SRCS_STK) -HDRS+=$(HDRS_STK) -endif diff --git a/externals/grill/flext/build/gnumake-mac-gcc.inc b/externals/grill/flext/build/gnumake-mac-gcc.inc deleted file mode 100644 index aec212c5..00000000 --- a/externals/grill/flext/build/gnumake-mac-gcc.inc +++ /dev/null @@ -1,13 +0,0 @@ -ifdef SIMD -DEFS += -DFLEXT_USE_SIMD -endif - -ifdef SNDOBJ_LIB -SRCS+=$(SRCS_SNDOBJ) -HDRS+=$(HDRS_SNDOBJ) -endif - -ifdef STK_LIB -SRCS+=$(SRCS_STK) -HDRS+=$(HDRS_STK) -endif diff --git a/externals/grill/flext/build/gnumake-win-cygwin.inc b/externals/grill/flext/build/gnumake-win-cygwin.inc deleted file mode 100644 index 1eb1ce77..00000000 --- a/externals/grill/flext/build/gnumake-win-cygwin.inc +++ /dev/null @@ -1,17 +0,0 @@ -ifdef SIMD -DEFS += -DFLEXT_USE_SIMD -endif - -ifdef SNDOBJ -SRCS+=$(SRCS_SNDOBJ) -HDRS+=$(HDRS_SNDOBJ) -INCPATH+=-I$(SNDOBJ) -LIBS+=-lsndobj -endif - -ifdef STK -SRCS+=$(SRCS_STK) -HDRS+=$(HDRS_STK) -INCPATH+=-I$(STK) -LIBS+=-lstk -endif diff --git a/externals/grill/flext/build/gnumake-win-mingw.inc b/externals/grill/flext/build/gnumake-win-mingw.inc deleted file mode 100644 index 1eb1ce77..00000000 --- a/externals/grill/flext/build/gnumake-win-mingw.inc +++ /dev/null @@ -1,17 +0,0 @@ -ifdef SIMD -DEFS += -DFLEXT_USE_SIMD -endif - -ifdef SNDOBJ -SRCS+=$(SRCS_SNDOBJ) -HDRS+=$(HDRS_SNDOBJ) -INCPATH+=-I$(SNDOBJ) -LIBS+=-lsndobj -endif - -ifdef STK -SRCS+=$(SRCS_STK) -HDRS+=$(HDRS_STK) -INCPATH+=-I$(STK) -LIBS+=-lstk -endif diff --git a/externals/grill/flext/build/nmake-win-msvc.inc b/externals/grill/flext/build/nmake-win-msvc.inc deleted file mode 100644 index 9dee194d..00000000 --- a/externals/grill/flext/build/nmake-win-msvc.inc +++ /dev/null @@ -1,3 +0,0 @@ -!ifdef SIMD -DEFS=$(DEFS) /DFLEXT_USE_SIMD -!endif diff --git a/externals/grill/flext/buildsys/bmake-ext.inc b/externals/grill/flext/buildsys/bmake-ext.inc deleted file mode 100644 index 1455c83e..00000000 --- a/externals/grill/flext/buildsys/bmake-ext.inc +++ /dev/null @@ -1 +0,0 @@ -OUTNAME=$(NAME) diff --git a/externals/grill/flext/buildsys/bmake-flext.inc b/externals/grill/flext/buildsys/bmake-flext.inc deleted file mode 100644 index 2e7faf0c..00000000 --- a/externals/grill/flext/buildsys/bmake-flext.inc +++ /dev/null @@ -1,3 +0,0 @@ -DEFS=$(DEFS) /DFLEXT_EXPORTS - -OUTNAME=$(FLEXTNAME) diff --git a/externals/grill/flext/buildsys/bmake-sub.mak b/externals/grill/flext/buildsys/bmake-sub.mak deleted file mode 100644 index f55fcc4f..00000000 --- a/externals/grill/flext/buildsys/bmake-sub.mak +++ /dev/null @@ -1,44 +0,0 @@ -# include flext version number -!include $(BUILDPATH)version.inc - -# general settings -!include $(BUILDPATH)config-$(PLATFORM)-$(RTSYS)-$(COMPILER).txt - -############################### -# project-specific definitions - -# package info -!if "$(PKGINFO)" != "" && "$(PKGINFO)" != "1" -!include $(PKGINFO) -!endif - -# special package settings -!ifdef USRCONFIG -!include $(USRCONFIG) -!endif - -# package specific make stuff -!ifdef USRMAKE -!include $(USRMAKE) -!endif - -############################## -# flext-specific make stuff - -!include $(BUILDPATH)bmake.inc - -!include $(BUILDPATH)bmake-$(BUILDCLASS).inc - -############################## -# platform-specific make stuff - -!include $(BUILDPATH)$(PLATFORM)\$(RTSYS)\bmake-$(COMPILER).inc - -!include $(BUILDPATH)$(PLATFORM)\$(RTSYS)\bmake-$(COMPILER)-$(BUILDCLASS).inc - -############################## -# general make stuff - -!include $(BUILDPATH)$(PLATFORM)\bmake-$(COMPILER).inc - -!include $(BUILDPATH)$(PLATFORM)\bmake-$(COMPILER)-$(BUILDCLASS).inc diff --git a/externals/grill/flext/buildsys/bmake.inc b/externals/grill/flext/buildsys/bmake.inc deleted file mode 100644 index c8dac6fa..00000000 --- a/externals/grill/flext/buildsys/bmake.inc +++ /dev/null @@ -1,67 +0,0 @@ -############################################## -# flext defines -############################################## - -CFLAGS=$(CFLAGS) $(UFLAGS) - -!ifdef DEBUG -CFLAGS=$(CFLAGS) /D_DEBUG $(DFLAGS) -!else -CFLAGS=$(CFLAGS) /DNDEBUG $(OFLAGS) -!endif - - -!ifdef SHARED -# --- shared --- -DEFS=$(DEFS) /DFLEXT_SHARED - -!else -!ifdef THREADED -# --- static multi-threaded --- -DEFS=$(DEFS) /DFLEXT_THREADS - -!else -# --- static single-threaded --- - -!endif -!endif - -############################################## -# name of flext library -############################################## - -!ifdef SHARED -TYPEEXT=_ -!else -!ifdef THREADED -TYPEEXT=_t -!else -TYPEEXT=_s -!endif -!endif - -!ifdef DEBUG -MODEEXT=d -!else -!ifdef PROFILE -MODEEXT=p -!else -MODEEXT= -!ifdef SHARED -TYPEEXT= -!endif -!endif -!endif - -FLEXTNAME=flext-$(RTSYS)$(TYPEEXT)$(MODEEXT) - -############################################## -# product name and folder -############################################## - -!ifndef SRCDIR -SRCDIR=. -!endif - -OUTNAME=$(NAME) -OUTSUB=$(TARGETMODE)-$(TARGETTYPE) diff --git a/externals/grill/flext/buildsys/bmake.mak b/externals/grill/flext/buildsys/bmake.mak deleted file mode 100644 index 5b5ea10a..00000000 --- a/externals/grill/flext/buildsys/bmake.mak +++ /dev/null @@ -1,110 +0,0 @@ -# required settings: -# -# PLATFORM - win/mac/lnx -# RTSYS - pd/max -# COMPILER - msvc/gcc/mingw/cygwin -# BUILDPATH including trailing \ - -############################################### -# package info - -!ifndef PKGINFO -PKGINFO=package.txt -!endif - -!if "$(PKGINFO)" != "" && "$(PKGINFO)" != "1" -!include $(PKGINFO) -!endif - -!ifndef NAME -!error NAME variable must be defined (name of target) -!endif - -!ifndef SRCS -!error SRCS variable must be defined (list of source files) -!endif - -############################################### -# check variables - -!ifndef BUILDCLASS -BUILDCLASS=ext -!endif - -!ifndef BUILDMODE -BUILDMODE=release -!endif - -!ifndef BUILDTYPE -BUILDTYPE=single -!endif - -############################## - -#!ifndef TARGETMODE -#TARGETMODE=$(BUILDMODE) -#!endif - -#!ifndef TARGETTYPE -#TARGETTYPE=$(BUILDTYPE) -#!endif - -############################################### - -SYSCONFIG=$(BUILDPATH)config-$(PLATFORM)-$(RTSYS)-$(COMPILER).txt -SYSDEFAULT=$(BUILDPATH)$(PLATFORM)\$(RTSYS)\config-$(COMPILER).def - -OPTIONS=-f $(BUILDPATH)bmake-sub.mak -N \ - PLATFORM=$(PLATFORM) RTSYS=$(RTSYS) COMPILER=$(COMPILER) \ - BUILDPATH=$(BUILDPATH) PKGINFO=$(PKGINFO) BUILDCLASS=$(BUILDCLASS) - -############################################### - -!ifdef BUILDDIR -USRCONFIG=config.txt -USRDEFAULT=$(BUILDDIR)\config-$(PLATFORM).def - -USRMAKE=$(BUILDDIR)\bmake-$(PLATFORM)-$(COMPILER).inc - -OPTIONS=$(OPTIONS) USRCONFIG=$(USRCONFIG) USRMAKE=$(USRMAKE) -!endif - -############################################### -# include file describing default target dependencies - -!include $(BUILDPATH)targets.inc - -!include $(BUILDPATH)targets-$(BUILDCLASS).inc - -############################################### - -.precious: $(SYSCONFIG) $(USRCONFIG) - -$(SYSCONFIG): $(SYSDEFAULT) - @copy $** $@ - @echo ------------------------------------------------------------------------- - @echo A default system configuration file has been created. - @echo Please edit $(SYSCONFIG) - @echo to match your platform and start again. - @echo ------------------------------------------------------------------------- - @exit 1 - -!ifdef BUILDDIR -$(USRCONFIG): $(USRDEFAULT) - @copy $** $@ - @echo ------------------------------------------------------------------------- - @echo A default package configuration file has been created. - @echo Please edit $(USRCONFIG) and start again. - @echo ------------------------------------------------------------------------- - @exit 1 - -$(USRDEFAULT) $(USRMAKE): - @echo ------------------------------------------------------------------------- - @echo Your combination of platform, system and compiler is not supported yet. - @echo Required files: - @echo $(USRDEFAULT) - @echo and - @echo $(USRMAKE) - @echo ------------------------------------------------------------------------- - @exit 1 -!endif diff --git a/externals/grill/flext/buildsys/build-bcc.bat b/externals/grill/flext/buildsys/build-bcc.bat deleted file mode 100644 index bf5c4bff..00000000 --- a/externals/grill/flext/buildsys/build-bcc.bat +++ /dev/null @@ -1,3 +0,0 @@ -@set build=%~dp0 - -make -f %build%bmake.mak -N PLATFORM=%1 RTSYS=%2 COMPILER=bcc BUILDPATH=%build% %3 %4 %5 %6 %7 %8 %9 diff --git a/externals/grill/flext/buildsys/build-cygwin.sh b/externals/grill/flext/buildsys/build-cygwin.sh deleted file mode 100644 index 606eaade..00000000 --- a/externals/grill/flext/buildsys/build-cygwin.sh +++ /dev/null @@ -1,5 +0,0 @@ -#! /bin/bash - -build=${0%/*}/ - -make -f ${build}gnumake.mak PLATFORM=$1 RTSYS=$2 COMPILER=cygwin BUILDPATH=${build} $3 $4 $5 $6 $7 $8 $9 diff --git a/externals/grill/flext/buildsys/build-gcc.sh b/externals/grill/flext/buildsys/build-gcc.sh deleted file mode 100644 index ab4b5570..00000000 --- a/externals/grill/flext/buildsys/build-gcc.sh +++ /dev/null @@ -1,5 +0,0 @@ -#! /bin/bash - -build=${0%/*}/ - -make -f ${build}gnumake.mak PLATFORM=$1 RTSYS=$2 COMPILER=gcc BUILDPATH=${build} $3 $4 $5 $6 $7 $8 $9 diff --git a/externals/grill/flext/buildsys/build-icc.sh b/externals/grill/flext/buildsys/build-icc.sh deleted file mode 100644 index d110da66..00000000 --- a/externals/grill/flext/buildsys/build-icc.sh +++ /dev/null @@ -1,5 +0,0 @@ -#! /bin/bash - -build=${0%/*}/ - -make -f ${build}gnumake.mak PLATFORM=$1 RTSYS=$2 COMPILER=icc BUILDPATH=${build} $3 $4 $5 $6 $7 $8 $9 diff --git a/externals/grill/flext/buildsys/build-mingw.bat b/externals/grill/flext/buildsys/build-mingw.bat deleted file mode 100644 index 11a39ed3..00000000 --- a/externals/grill/flext/buildsys/build-mingw.bat +++ /dev/null @@ -1,3 +0,0 @@ -@set build=%~dp0 - -mingw32-make -f %build%gnumake.mak PLATFORM=%1 RTSYS=%2 COMPILER=mingw BUILDPATH=%build% %3 %4 %5 %6 %7 %8 %9 diff --git a/externals/grill/flext/buildsys/build-msvc.bat b/externals/grill/flext/buildsys/build-msvc.bat deleted file mode 100644 index b7cbb8f1..00000000 --- a/externals/grill/flext/buildsys/build-msvc.bat +++ /dev/null @@ -1,3 +0,0 @@ -@set build=%~dp0 - -nmake -f %build%nmake.mak PLATFORM=%1 RTSYS=%2 COMPILER=msvc BUILDPATH=%build% %3 %4 %5 %6 %7 %8 %9 diff --git a/externals/grill/flext/buildsys/gnumake-ext.inc b/externals/grill/flext/buildsys/gnumake-ext.inc deleted file mode 100644 index 1455c83e..00000000 --- a/externals/grill/flext/buildsys/gnumake-ext.inc +++ /dev/null @@ -1 +0,0 @@ -OUTNAME=$(NAME) diff --git a/externals/grill/flext/buildsys/gnumake-flext.inc b/externals/grill/flext/buildsys/gnumake-flext.inc deleted file mode 100644 index 64204656..00000000 --- a/externals/grill/flext/buildsys/gnumake-flext.inc +++ /dev/null @@ -1,3 +0,0 @@ -DEFS+=-DFLEXT_EXPORTS - -OUTNAME=lib$(FLEXTNAME) diff --git a/externals/grill/flext/buildsys/gnumake-sub.mak b/externals/grill/flext/buildsys/gnumake-sub.mak deleted file mode 100644 index 17aa589f..00000000 --- a/externals/grill/flext/buildsys/gnumake-sub.mak +++ /dev/null @@ -1,44 +0,0 @@ -# include flext version number -include $(BUILDPATH)version.inc - -# system settings -include $(BUILDPATH)config-$(PLATFORM)-$(RTSYS)-$(COMPILER).txt - -############################### -# project specific definitions - -# package info -ifneq ($(PKGINFO),) - include $(PKGINFO) -endif - -# special settings -ifdef USRCONFIG - include $(USRCONFIG) -endif - -# package specific make stuff -ifdef USRMAKE - include $(USRMAKE) -endif - -############################## -# flext-specific definitions - -include $(BUILDPATH)gnumake.inc - -include $(BUILDPATH)gnumake-$(BUILDCLASS).inc - -############################## -# platform-specific make stuff - -include $(BUILDPATH)$(PLATFORM)/$(RTSYS)/gnumake-$(COMPILER).inc - -include $(BUILDPATH)$(PLATFORM)/$(RTSYS)/gnumake-$(COMPILER)-$(BUILDCLASS).inc - -############################## -# general make stuff - -include $(BUILDPATH)$(PLATFORM)/gnumake-$(COMPILER).inc - -include $(BUILDPATH)$(PLATFORM)/gnumake-$(COMPILER)-$(BUILDCLASS).inc diff --git a/externals/grill/flext/buildsys/gnumake.inc b/externals/grill/flext/buildsys/gnumake.inc deleted file mode 100644 index 27052d68..00000000 --- a/externals/grill/flext/buildsys/gnumake.inc +++ /dev/null @@ -1,95 +0,0 @@ -############################################## -# cross-compilation -############################################## - -ifndef ARCH -ifeq ("$(shell uname -p)","powerpc") -ARCH := ppc -else -ARCH := $(shell uname -p) -endif -endif - -############################################## -# some compiler definitions -############################################## - -CFLAGS += $(UFLAGS) -$(foreach arch,$(ARCH),$(eval CFLAGS_$(arch) += $$(UFLAGS_$(arch)) ) ) - -ifdef DEBUG - -DEFS += -D_DEBUG -CFLAGS += $(DFLAGS) - -define ARCH_FLAGS -CFLAGS_$(1) += $$(DFLAGS_$(1)) -endef - -else ## profile and release - -DEFS += -DNDEBUG -CFLAGS += $(OFLAGS) - -define ARCH_FLAGS -CFLAGS_$(1) += $$(OFLAGS_$(1)) -endef - -endif - -$(foreach arch,$(ARCH),$(eval $(call ARCH_FLAGS,$(arch)))) - - -ifdef SHARED -# --- shared --- -DEFS += -DFLEXT_SHARED - -else -ifdef THREADED -# --- static multi-threaded --- -DEFS += -DFLEXT_THREADS - -else -# --- static single-threaded --- - -endif -endif - -############################################## -# name of flext library -############################################## - -ifdef SHARED -TYPEEXT := _ -else -ifdef THREADED -TYPEEXT := _t -else -TYPEEXT := _s -endif -endif - -ifdef DEBUG -MODEEXT := d -else -ifdef PROFILE -MODEEXT := p -else -MODEEXT := -ifdef SHARED -TYPEEXT := -endif -endif -endif - -FLEXTNAME := flext-$(RTSYS)$(TYPEEXT)$(MODEEXT) - -############################################## -# product name and folder -############################################## - -ifndef SRCDIR -SRCDIR := . -endif - -OUTSUB := $(TARGETMODE)-$(TARGETTYPE) diff --git a/externals/grill/flext/buildsys/gnumake.mak b/externals/grill/flext/buildsys/gnumake.mak deleted file mode 100644 index efa0c273..00000000 --- a/externals/grill/flext/buildsys/gnumake.mak +++ /dev/null @@ -1,142 +0,0 @@ -# required settings: -# -# PLATFORM - win/mac/lnx -# RTSYS - pd/max -# COMPILER - msvc/gcc/mingw/cygwin -# BUILDPATH including trailing / - -############################################### -# package info - -ifndef PKGINFO -PKGINFO=package.txt -endif - -ifneq ($(PKGINFO),) -include $(PKGINFO) -endif - -ifndef NAME -$(error "NAME variable must be defined (name of target)") -endif - -ifndef SRCS -$(error "SRCS variable must be defined (list of source files)") -endif - -############################################### -# check variables - -ifndef BUILDCLASS -BUILDCLASS=ext -endif - -ifndef BUILDMODE -BUILDMODE=release -endif - -ifndef BUILDTYPE -BUILDTYPE=single -endif - -############################## - -#ifndef TARGETMODE -#TARGETMODE=$(BUILDMODE) -#endif - -#ifndef TARGETTYPE -#TARGETTYPE=$(BUILDTYPE) -#endif - -############################################### - -ifeq ($(PLATFORM),win) - # substitute eventual \ by / - UBUILDPATH=$(subst \,/,$(BUILDPATH)) -else - UBUILDPATH=$(BUILDPATH) -endif - -############################################### - -SYSCONFIG=$(UBUILDPATH)config-$(PLATFORM)-$(RTSYS)-$(COMPILER).txt -SYSDEFAULT=$(UBUILDPATH)$(PLATFORM)/$(RTSYS)/config-$(COMPILER).def - -OPTIONS=-f $(UBUILDPATH)gnumake-sub.mak \ - PLATFORM=$(PLATFORM) RTSYS=$(RTSYS) COMPILER=$(COMPILER) \ - BUILDPATH=$(UBUILDPATH) PKGINFO=$(PKGINFO) BUILDCLASS=$(BUILDCLASS) - -############################################### - -ifdef BUILDDIR -USRCONFIG=config.txt -USRDEFAULT=$(BUILDDIR)/config-$(PLATFORM).def - -USRMAKE=$(BUILDDIR)/gnumake-$(PLATFORM)-$(COMPILER).inc - -OPTIONS+=USRCONFIG=$(USRCONFIG) USRMAKE=$(USRMAKE) -endif - -############################################### -# include file describing default target dependencies - -.PHONY : all build clean install profile - -include $(BUILDPATH)targets.inc - -include $(BUILDPATH)targets-$(BUILDCLASS).inc - -############################################### - -.PRECIOUS: $(SYSCONFIG) $(USRCONFIG) - -$(SYSCONFIG): $(SYSDEFAULT) -ifeq ($(COMPILER),mingw) - @copy $(subst /,\,$<) $(subst /,\,$@) -else - @cp $< $@ -endif - @echo ------------------------------------------------------------------------- - @echo A default system configuration file has been created. - @echo Please edit $(SYSCONFIG) - @echo to match your platform, then start again. - @echo ------------------------------------------------------------------------- -ifeq ($(COMPILER),mingw) - @exit 1 -else - @false -endif - -ifdef BUILDDIR -$(USRCONFIG): $(USRDEFAULT) -ifeq ($(COMPILER),mingw) - @copy $(subst /,\,$<) $(subst /,\,$@) -else - @cp $< $@ -endif - @echo ------------------------------------------------------------------------- - @echo A default package configuration file has been created. - @echo Please edit $(USRCONFIG), then start again. - @echo ------------------------------------------------------------------------- -ifeq ($(COMPILER),mingw) - @exit 1 -else - @false -endif - -$(USRDEFAULT) $(USRMAKE): - @echo ------------------------------------------------------------------------- - @echo Your combination of platform, system and compiler is not supported yet. - @echo Required files: - @echo $(USRDEFAULT) - @echo and - @echo $(USRMAKE) - @echo ------------------------------------------------------------------------- -ifeq ($(COMPILER),mingw) - @exit 1 -else - @false -endif - -endif diff --git a/externals/grill/flext/buildsys/lnx/gnumake-gcc-ext.inc b/externals/grill/flext/buildsys/lnx/gnumake-gcc-ext.inc deleted file mode 100644 index a1fef152..00000000 --- a/externals/grill/flext/buildsys/lnx/gnumake-gcc-ext.inc +++ /dev/null @@ -1,56 +0,0 @@ -# build class specific settings - -TARGET=$(TARGETPATH)/$(TARGETNAME) -INSTTARGET=$(TARGET) - -INCPATH += -I$(FLEXTINC) -LIBPATH += -L$(FLEXTLIB) - -#ifdef SHARED -#LIBS += -l$(FLEXTNAME).$(FLEXTMAJOR).$(FLEXTMINOR) -#else -LIBS += -l$(FLEXTNAME) -#endif - -############################################## - -# default target -_build_: $(TARGET) - -$(CSRCS) $(CPPSRCS): $(patsubst %,$(SRCDIR)/%,$(HDRS)) - touch $@ - -$(TARGETPATH): - mkdir -p $@ - -$(TARGETPATH)/%.opp : $(SRCDIR)/%.cpp - -mkdir -p $(dir $@) - $(CXX) -c $(CFLAGS) $(DEFS) $(INCPATH) $< -o $@ - -$(TARGETPATH)/%.o : $(SRCDIR)/%.c - -mkdir -p $(dir $@) - $(CC) -c $(CFLAGS) $(DEFS) $(INCPATH) $< -o $@ - -$(TARGET):: $(TARGETPATH) - -$(TARGET):: $(COBJS) $(CPPOBJS) - $(CXX) $(LDFLAGS) $(LIBPATH) -o $@ $(COBJS) $(CPPOBJS) $(LIBS) - chmod 755 $@ -ifndef DEBUG -ifndef PROFILE - strip --strip-unneeded $@ -endif -endif - -############################################## - -_clean_: - -rm -r $(TARGETPATH) - -############################################## - -$(INSTPATH): - -mkdir -p $@ - -_install_: $(INSTPATH) - install $(TARGET) $(INSTPATH) diff --git a/externals/grill/flext/buildsys/lnx/gnumake-gcc-flext.inc b/externals/grill/flext/buildsys/lnx/gnumake-gcc-flext.inc deleted file mode 100644 index 887f093a..00000000 --- a/externals/grill/flext/buildsys/lnx/gnumake-gcc-flext.inc +++ /dev/null @@ -1,72 +0,0 @@ -# build class specific settings - -CMPNAME=$(OUTNAME).$(EXT).$(FLEXTMAJOR).$(FLEXTMINOR) -VERNAME=$(CMPNAME).$(FLEXTMICRO) -TARGET=$(TARGETPATH)/$(VERNAME) -INSTTARGET=$(TARGET) - -ifdef SHARED -LDFLAGS += -Wl,-soname,$(CMPNAME) -endif - -############################################## - -# default target -_build_: $(TARGET) - -$(CSRCS) $(CPPSRCS): $(patsubst %,$(SRCDIR)/%,$(HDRS)) - touch $@ - -$(TARGETPATH): - -mkdir -p $@ - -$(TARGETPATH)/%.opp : $(SRCDIR)/%.cpp - -mkdir -p $(dir $@) - $(CXX) -c $(CFLAGS) $(DEFS) $(INCPATH) $< -o $@ - -$(TARGETPATH)/%.o : $(SRCDIR)/%.c - -mkdir -p $(dir $@) - $(CC) -c $(CFLAGS) $(DEFS) $(INCPATH) $< -o $@ - -$(TARGET) :: $(TARGETPATH) - -$(TARGET) :: $(COBJS) $(CPPOBJS) -ifdef SHARED - $(CXX) $(LDFLAGS) $(LIBPATH) -o $@ $(COBJS) $(CPPOBJS) $(LIBS) - chmod 755 $@ -ifndef DEBUG -ifndef PROFILE - strip --strip-unneeded $@ -endif -endif -else - $(AR) rc $@ $(COBJS) $(CPPOBJS) -endif - -############################################## - -_clean_: - -rm -r $(TARGETPATH) - -############################################## - -$(FLEXTINC) $(FLEXTLIB) $(FLEXTSYS) $(FLEXTBIN): - -mkdir -p $@ - -_install_: $(FLEXTINC) $(FLEXTLIB) $(FLEXTSYS) $(FLEXTBIN) - install $(TARGET) $(FLEXTLIB) -ifdef SHARED - /sbin/ldconfig -l $(FLEXTLIB)/$(VERNAME) - -ln -sf $(CMPNAME) $(FLEXTLIB)/$(OUTNAME).$(EXT) -else - -ln -sf $(VERNAME) $(FLEXTLIB)/$(TARGETNAME) -endif - install $(patsubst %,$(SRCDIR)/%,$(HDRS)) $(FLEXTINC) -# transfer build system -# cp -rf buildsys $(FLEXTSYS) -# install build.sh $(FLEXTSYS) -# chmod -R a+rx $(FLEXTSYS) -# make convenience script -# echo bash $(FLEXTSYS)/build.sh $$\* > $(FLEXTBIN)/flext-build.sh -# chmod a+rx $(FLEXTBIN)/flext-build.sh - diff --git a/externals/grill/flext/buildsys/lnx/gnumake-gcc.inc b/externals/grill/flext/buildsys/lnx/gnumake-gcc.inc deleted file mode 100644 index 39639d86..00000000 --- a/externals/grill/flext/buildsys/lnx/gnumake-gcc.inc +++ /dev/null @@ -1,64 +0,0 @@ -############################################## - -ifndef FLEXTINC -FLEXTINC=$(FLEXTPREFIX)/include/flext -endif -ifndef FLEXTLIB -FLEXTLIB=$(FLEXTPREFIX)/lib -endif -ifndef FLEXTSYS -FLEXTSYS=$(FLEXTPREFIX)/lib/flext -endif -ifndef FLEXTBIN -FLEXTBIN=$(FLEXTPREFIX)/bin -endif - -############################################## - -OBJPATH=$(OUTPATH)/$(OUTSUB) -TARGETPATH=$(OBJPATH) -TARGETNAME=$(OUTNAME).$(EXT) - -############################################## - -CFLAGS += -pthread -fPIC -LDFLAGS += -pthread -shared - -############################################## - -ifdef DEBUG -CFLAGS += -g -LDFLAGS += -g -else -ifdef PROFILE -CFLAGS += -g -pg -LDFLAGS += -g -pg -else -LDFLAGS += -Wl,-S -endif -endif - -############################################## - -ifdef STK_INC -INCPATH += -I$(STK_INC) -endif -ifdef STK_LIB -LIBS += $(STK_LIB) -endif - -############################################## - -ifdef SNDOBJ_INC -INCPATH += -I$(SNDOBJ_INC) -endif -ifdef SNDOBJ_LIB -LIBS += $(SNDOBJ_LIB) -endif - -############################################## - -CSRCS=$(patsubst %.c,$(SRCDIR)/%.c,$(filter %.c,$(SRCS))) -CPPSRCS=$(patsubst %.cpp,$(SRCDIR)/%.cpp,$(filter %.cpp,$(SRCS))) -COBJS=$(patsubst %.c,$(OBJPATH)/%.o,$(filter %.c,$(SRCS))) -CPPOBJS=$(patsubst %.cpp,$(OBJPATH)/%.opp,$(filter %.cpp,$(SRCS))) diff --git a/externals/grill/flext/buildsys/lnx/gnumake-icc-ext.inc b/externals/grill/flext/buildsys/lnx/gnumake-icc-ext.inc deleted file mode 100644 index 27c781f3..00000000 --- a/externals/grill/flext/buildsys/lnx/gnumake-icc-ext.inc +++ /dev/null @@ -1,56 +0,0 @@ -# build class specific settings - -TARGET=$(TARGETPATH)/$(TARGETNAME) -INSTTARGET=$(TARGET) - -INCPATH += -I$(FLEXTINC) -LIBPATH += -L$(FLEXTLIB) - -ifdef SHARED -LIBS += -l$(FLEXTNAME).$(FLEXTMAJOR).$(FLEXTMINOR) -else -LIBS += -l$(FLEXTNAME) -endif - -############################################## - -# default target -_build_: $(TARGET) - -$(CSRCS) $(CPPSRCS): $(patsubst %,$(SRCDIR)/%,$(HDRS)) - touch $@ - -$(TARGETPATH): - -mkdir -p $@ - -$(TARGETPATH)/%.opp : $(SRCDIR)/%.cpp - -mkdir -p $(dir $@) - icc -c $(CFLAGS) $(DEFS) $(INCPATH) $< -o $@ - -$(TARGETPATH)/%.o : $(SRCDIR)/%.c - -mkdir -p $(dir $@) - icc -c $(CFLAGS) $(DEFS) $(INCPATH) $< -o $@ - -$(TARGET):: $(TARGETPATH) - -$(TARGET):: $(COBJS) $(CPPOBJS) - icc $(LDFLAGS) $(LIBPATH) -o $@ $(COBJS) $(CPPOBJS) $(LIBS) - chmod 755 $@ -ifndef DEBUG -ifndef PROFILE - strip --strip-unneeded $@ -endif -endif - -############################################## - -_clean_: - -rm -r $(TARGETPATH) - -############################################## - -$(INSTPATH): - -mkdir -p $@ - -_install_: $(INSTPATH) - install $(TARGET) $(INSTPATH) diff --git a/externals/grill/flext/buildsys/lnx/gnumake-icc-flext.inc b/externals/grill/flext/buildsys/lnx/gnumake-icc-flext.inc deleted file mode 100644 index b289d77f..00000000 --- a/externals/grill/flext/buildsys/lnx/gnumake-icc-flext.inc +++ /dev/null @@ -1,72 +0,0 @@ -# build class specific settings - -CMPNAME=$(OUTNAME).$(EXT).$(FLEXTMAJOR).$(FLEXTMINOR) -VERNAME=$(CMPNAME).$(FLEXTMICRO) -TARGET=$(TARGETPATH)/$(VERNAME) -INSTTARGET=$(TARGET) - -ifdef SHARED -LDFLAGS += -Wl,-soname,$(CMPNAME) -endif - -############################################## - -# default target -_build_: $(TARGET) - -$(CSRCS) $(CPPSRCS): $(patsubst %,$(SRCDIR)/%,$(HDRS)) - touch $@ - -$(TARGETPATH): - -mkdir -p $@ - -$(TARGETPATH)/%.opp : $(SRCDIR)/%.cpp - -mkdir -p $(dir $@) - icc -c $(CFLAGS) $(DEFS) $(INCPATH) $< -o $@ - -$(TARGETPATH)/%.o : $(SRCDIR)/%.c - -mkdir -p $(dir $@) - icc -c $(CFLAGS) $(DEFS) $(INCPATH) $< -o $@ - -$(TARGET) :: $(TARGETPATH) - -$(TARGET) :: $(COBJS) $(CPPOBJS) -ifdef SHARED - icc $(LDFLAGS) $(LIBPATH) -o $@ $(COBJS) $(CPPOBJS) $(LIBS) - chmod 755 $@ -ifndef DEBUG -ifndef PROFILE - strip --strip-unneeded $@ -endif -endif -else - $(AR) rc $@ $(COBJS) $(CPPOBJS) -endif - -############################################## - -_clean_: - -rm -r $(TARGETPATH) - -############################################## - -$(FLEXTINC) $(FLEXTLIB) $(FLEXTSYS) $(FLEXTBIN): - -mkdir -p $@ - -_install_: $(FLEXTINC) $(FLEXTLIB) $(FLEXTSYS) $(FLEXTBIN) - install $(TARGET) $(FLEXTLIB) -ifdef SHARED - /sbin/ldconfig -l $(FLEXTLIB)/$(VERNAME) - -ln -sf $(CMPNAME) $(FLEXTLIB)/$(OUTNAME).$(EXT) -else - -ln -sf $(VERNAME) $(FLEXTLIB)/$(TARGETNAME) -endif - install $(patsubst %,$(SRCDIR)/%,$(HDRS)) $(FLEXTINC) -# transfer build system -# cp -rf buildsys $(FLEXTSYS) -# install build.sh $(FLEXTSYS) -# chmod -R a+rx $(FLEXTSYS) -# make convenience script -# echo bash $(FLEXTSYS)/build.sh $$\* > $(FLEXTBIN)/flext-build.sh -# chmod a+rx $(FLEXTBIN)/flext-build.sh - diff --git a/externals/grill/flext/buildsys/lnx/gnumake-icc.inc b/externals/grill/flext/buildsys/lnx/gnumake-icc.inc deleted file mode 100644 index b95dd55a..00000000 --- a/externals/grill/flext/buildsys/lnx/gnumake-icc.inc +++ /dev/null @@ -1,64 +0,0 @@ -############################################## - -ifndef FLEXTINC -FLEXTINC=$(FLEXTPREFIX)/include/flext -endif -ifndef FLEXTLIB -FLEXTLIB=$(FLEXTPREFIX)/lib -endif -ifndef FLEXTSYS -FLEXTSYS=$(FLEXTPREFIX)/lib/flext -endif -ifndef FLEXTBIN -FLEXTBIN=$(FLEXTPREFIX)/bin -endif - -############################################## - -OBJPATH=$(OUTPATH)/$(OUTSUB) -TARGETPATH=$(OBJPATH) -TARGETNAME=$(OUTNAME).$(EXT) - -############################################## - -CFLAGS += -LDFLAGS += -shared -Wl,-x - -############################################## - -ifdef DEBUG -CFLAGS += -g -LDFLAGS += -g -else -ifdef PROFILE -CFLAGS += -g -qp -LDFLAGS += -g -qp -else -LDFLAGS += -Wl,-S -endif -endif - -############################################## - -ifdef STK_INC -INCPATH += -I$(STK_INC) -endif -ifdef STK_LIB -LIBS += $(STK_LIB) -endif - -############################################## - -ifdef SNDOBJ_INC -INCPATH += -I$(SNDOBJ_INC) -endif -ifdef SNDOBJ_LIB -LIBS += $(SNDOBJ_LIB) -endif - -############################################## - -CSRCS=$(patsubst %.c,$(SRCDIR)/%.c,$(filter %.c,$(SRCS))) -CPPSRCS=$(patsubst %.cpp,$(SRCDIR)/%.cpp,$(filter %.cpp,$(SRCS))) -COBJS=$(patsubst %.c,$(OBJPATH)/%.o,$(filter %.c,$(SRCS))) -CPPOBJS=$(patsubst %.cpp,$(OBJPATH)/%.opp,$(filter %.cpp,$(SRCS))) diff --git a/externals/grill/flext/buildsys/lnx/pd/config-gcc.def b/externals/grill/flext/buildsys/lnx/pd/config-gcc.def deleted file mode 100644 index e0340e77..00000000 --- a/externals/grill/flext/buildsys/lnx/pd/config-gcc.def +++ /dev/null @@ -1,56 +0,0 @@ -# where is the PD source package? -# (this should point to the main folder, which has a "src" subfolder) -PDPATH=/usr/local/src/pd - -############################################################### - -# prefix for flext installation -# headers are in $(FLEXTPREFIX)/include/flext -# libraries are in $(FLEXTPREFIX)/lib -# build system is in $(FLEXTPREFIX)/lib/flext - -FLEXTPREFIX=/usr/local - -############################################################### - -# where should the external be built? -OUTPATH=pd-linux - -# where should the external be installed? -INSTPATH=/usr/local/lib/pd/extra - -############################################################### - -# STK (synthesis tool kit) support -# http://ccrma.stanford.edu/software/stk - -# where to find the STK header files (e.g. stk.h) -STK_INC=/usr/local/include/stk - -# where to find the STK library (normally libstk.a) -# (comment out STK_LIB if you don't use STK) -#STK_LIB=/usr/local/lib/libstk.a - -############################################################### - -# SndObj support -# http://music.nuim.ie//musictec/SndObj - -# where to find the SndObj header files (e.g. sndobj.h) -SNDOBJ_INC=/usr/local/include/sndobj - -# where to find the SndObj library (normally libsndobj.a) -# (comment out STK_LIB if you don't use SndObj) -#SNDOBJ_LIB=/usr/local/lib/libsndobj.a - -############################################################### - -# user defined compiler flags -# (check if they match your system!) -UFLAGS=-msse -mfpmath=sse -ffast-math - -# user defined optimization flags -# (check if they match your system!) -OFLAGS=-O3 -# optimizations for Pentium 4 -OFLAGS+=-march=pentium4 diff --git a/externals/grill/flext/buildsys/lnx/pd/config-icc.def b/externals/grill/flext/buildsys/lnx/pd/config-icc.def deleted file mode 100644 index 6032cfa2..00000000 --- a/externals/grill/flext/buildsys/lnx/pd/config-icc.def +++ /dev/null @@ -1,56 +0,0 @@ -# where is the PD source package? -# (this should point to the main folder, which has a "src" subfolder) -PDPATH=/usr/local/src/pd - -############################################################### - -# prefix for flext installation -# headers are in $(FLEXTPREFIX)/include/flext -# libraries are in $(FLEXTPREFIX)/lib -# build system is in $(FLEXTPREFIX)/lib/flext - -FLEXTPREFIX=/usr/local - -############################################################### - -# where should the external be built? -OUTPATH=pd-linux - -# where should the external be installed? -INSTPATH=/usr/local/lib/pd/extra - -############################################################### - -# STK (synthesis tool kit) support -# http://ccrma.stanford.edu/software/stk - -# where to find the STK header files (e.g. stk.h) -STK_INC=/usr/local/include/stk - -# where to find the STK library (normally libstk.a) -# (comment out STK_LIB if you don't use STK) -#STK_LIB=/usr/local/lib/libstk.a - -############################################################### - -# SndObj support -# http://music.nuim.ie//musictec/SndObj - -# where to find the SndObj header files (e.g. sndobj.h) -SNDOBJ_INC=/usr/local/include/sndobj - -# where to find the SndObj library (normally libsndobj.a) -# (comment out STK_LIB if you don't use SndObj) -#SNDOBJ_LIB=/usr/local/lib/libsndobj.a - -############################################################### - -# user defined compiler flags -# (check if they match your system!) -UFLAGS= - -# user defined optimization flags -# (check if they match your system!) -OFLAGS=-O3 -Ob2 -ip -# optimizations for Pentium 4 -OFLAGS+=-mcpu=pentium4 -march=pentium4 -xMKW diff --git a/externals/grill/flext/buildsys/lnx/pd/gnumake-gcc-ext.inc b/externals/grill/flext/buildsys/lnx/pd/gnumake-gcc-ext.inc deleted file mode 100644 index 88feb249..00000000 --- a/externals/grill/flext/buildsys/lnx/pd/gnumake-gcc-ext.inc +++ /dev/null @@ -1 +0,0 @@ -EXT=pd_linux diff --git a/externals/grill/flext/buildsys/lnx/pd/gnumake-gcc-flext.inc b/externals/grill/flext/buildsys/lnx/pd/gnumake-gcc-flext.inc deleted file mode 100644 index cecaa37a..00000000 --- a/externals/grill/flext/buildsys/lnx/pd/gnumake-gcc-flext.inc +++ /dev/null @@ -1,6 +0,0 @@ -ifdef SHARED -EXT=so -else -EXT=a -endif - diff --git a/externals/grill/flext/buildsys/lnx/pd/gnumake-gcc.inc b/externals/grill/flext/buildsys/lnx/pd/gnumake-gcc.inc deleted file mode 100644 index 47930b1d..00000000 --- a/externals/grill/flext/buildsys/lnx/pd/gnumake-gcc.inc +++ /dev/null @@ -1,4 +0,0 @@ -DEFS += -DFLEXT_SYS=2 -DPD - -INCPATH += -I$(PDPATH)/src -LIBPATH += -L$(PDPATH)/bin diff --git a/externals/grill/flext/buildsys/lnx/pd/gnumake-icc-ext.inc b/externals/grill/flext/buildsys/lnx/pd/gnumake-icc-ext.inc deleted file mode 100644 index 88feb249..00000000 --- a/externals/grill/flext/buildsys/lnx/pd/gnumake-icc-ext.inc +++ /dev/null @@ -1 +0,0 @@ -EXT=pd_linux diff --git a/externals/grill/flext/buildsys/lnx/pd/gnumake-icc-flext.inc b/externals/grill/flext/buildsys/lnx/pd/gnumake-icc-flext.inc deleted file mode 100644 index cecaa37a..00000000 --- a/externals/grill/flext/buildsys/lnx/pd/gnumake-icc-flext.inc +++ /dev/null @@ -1,6 +0,0 @@ -ifdef SHARED -EXT=so -else -EXT=a -endif - diff --git a/externals/grill/flext/buildsys/lnx/pd/gnumake-icc.inc b/externals/grill/flext/buildsys/lnx/pd/gnumake-icc.inc deleted file mode 100644 index 47930b1d..00000000 --- a/externals/grill/flext/buildsys/lnx/pd/gnumake-icc.inc +++ /dev/null @@ -1,4 +0,0 @@ -DEFS += -DFLEXT_SYS=2 -DPD - -INCPATH += -I$(PDPATH)/src -LIBPATH += -L$(PDPATH)/bin diff --git a/externals/grill/flext/buildsys/mac/gnumake-gcc-ext.inc b/externals/grill/flext/buildsys/mac/gnumake-gcc-ext.inc deleted file mode 100644 index bbcdf4ad..00000000 --- a/externals/grill/flext/buildsys/mac/gnumake-gcc-ext.inc +++ /dev/null @@ -1,37 +0,0 @@ -# build class specific settings - -INCPATH += -I$(FLEXTINC) -LIBPATH += -L$(FLEXTLIB) -LIBS += -l$(FLEXTNAME) - -# common compilation stuff -include $(BUILDPATH)$(PLATFORM)/gnumake-gcc-targets.inc - -##### linking ################### - -$(TARGET) :: $(OBJPATH) $(TARGETPATH) - -$(TARGET) :: $(PRECOMDST) $(COBJS) $(CPPOBJS) - $(CXX) $(LDFLAGS) $(LIBPATH) -o $@ $(COBJS) $(CPPOBJS) $(LIBS) -ifdef DEBUG -else -ifdef PROFILE -else - strip -x $@ -endif -endif - chmod 755 $@ - -ifdef TARGETPOST -$(TARGET) :: $(TARGETPOST) -endif - -################################### - -# Attention: $@ doesn't work for paths with spaces.... -$(INSTPATH): - -mkdir -p $(INSTPATH) - -_install_:: $(INSTPATH) -# copy plain file or whole bundle - cp -R $(INSTTARGET) $(INSTPATH) diff --git a/externals/grill/flext/buildsys/mac/gnumake-gcc-flext.inc b/externals/grill/flext/buildsys/mac/gnumake-gcc-flext.inc deleted file mode 100644 index 916e21cc..00000000 --- a/externals/grill/flext/buildsys/mac/gnumake-gcc-flext.inc +++ /dev/null @@ -1,77 +0,0 @@ -# build class specific settings - -ifdef SHARED -LDFLAGS += -install_name $(FLEXTLIB)/$(TARGETNAME) -LDFLAGS += -current_version $(FLEXTMAJOR).$(FLEXTMINOR).$(FLEXTMICRO) -LDFLAGS += -compatibility_version $(FLEXTMAJOR).$(FLEXTMINOR) -LDFLAGS += -preload -seg1addr 0xd0000000 -endif - -# common compilation stuff -include $(BUILDPATH)$(PLATFORM)/gnumake-gcc-targets.inc - -##### linking ################### - -$(TARGET) :: $(OBJPATH) $(TARGETPATH) - -$(TARGET) :: $(PRECOMDST) $(COBJS) $(CPPOBJS) -ifdef SHARED - $(CXX) $(LDFLAGS) $(LIBPATH) -o $@ $(COBJS) $(CPPOBJS) $(LIBS) -ifdef DEBUG -else -ifdef PROFILE -else - strip -x $@ -endif -endif - chmod 755 $@ -else - libtool -static -o $@ $(COBJS) $(CPPOBJS) -endif - -ifdef TARGETPOST -$(TARGET) :: $(TARGETPOST) -endif - -################################### - -$(FLEXTINC): - -mkdir -p $@ - -$(FLEXTLIB): - -mkdir -p $@ - -_install_: $(FLEXTINC) $(FLEXTLIB) -ifdef FLEXTFRAMEWORK -# --- install as framework --- - mkdir -p $(FLEXTFRAMEWORK)/Versions/$(FLEXTMAJOR).$(FLEXTMINOR)/Headers - ln -sfh ./$(FLEXTMAJOR).$(FLEXTMINOR) $(FLEXTFRAMEWORK)/Versions/Current - ln -sfh ./Versions/Current/Headers $(FLEXTFRAMEWORK)/Headers - install $(TARGET) $(FLEXTFRAMEWORK)/Versions/Current -ifdef SHARED - # make link without lib... and extension - ln -sf ./Versions/Current/$(VERNAME) $(FLEXTFRAMEWORK)/$(patsubst lib%,%,$(basename $(TARGETNAME))) -else - ranlib $(FRAMEWORK)/Versions/Current/$(VERNAME) - ln -sf ./Versions/Current/$(VERNAME) $(FLEXTFRAMEWORK)/$(TARGETNAME) -endif - install $(patsubst %,$(SRCDIR)/%,$(HDRS)) $(FLEXTFRAMEWORK)/Headers -else -# --- install as dynamic library --- - install $(TARGET) $(FLEXTLIB) -ifndef SHARED -# have to rerun ranlib at install dir ?! - ranlib $(FLEXTLIB)/$(VERNAME) -endif -ifdef VERNAME - ln -sf $(VERNAME) $(FLEXTLIB)/$(TARGETNAME) -endif - install $(patsubst %,$(SRCDIR)/%,$(HDRS)) $(FLEXTINC) -endif -# transfer build system -# cp -rf buildsys $(FLEXTSYS) -# install build.sh $(FLEXTSYS) -# chmod -R a+rx $(FLEXTSYS) -# make convenience script -# echo bash $(FLEXTSYS)/build.sh $$\* > $(FLEXTBIN)/flext-build.sh -# chmod a+rx $(FLEXTBIN)/flext-build.sh diff --git a/externals/grill/flext/buildsys/mac/gnumake-gcc-targets.inc b/externals/grill/flext/buildsys/mac/gnumake-gcc-targets.inc deleted file mode 100644 index c8804667..00000000 --- a/externals/grill/flext/buildsys/mac/gnumake-gcc-targets.inc +++ /dev/null @@ -1,70 +0,0 @@ -############################################## - -CSRCS := $(patsubst %.c,$(SRCDIR)/%.c,$(filter %.c,$(SRCS))) -CPPSRCS := $(patsubst %.cpp,$(SRCDIR)/%.cpp,$(filter %.cpp,$(SRCS))) -COBJS := $(patsubst %.c,$(OBJPATH)/%.o,$(filter %.c,$(SRCS))) -CPPOBJS := $(patsubst %.cpp,$(OBJPATH)/%.opp,$(filter %.cpp,$(SRCS))) - -############################################## - -# default target -_build_: $(TARGET) - -$(CSRCS) $(CPPSRCS): $(patsubst %,$(SRCDIR)/%,$(HDRS)) - touch $@ - -# Attention: $@ doesn't work for paths with spaces.... -$(OBJPATH): - -mkdir -p $(OBJPATH) - -# Attention: $@ doesn't work for paths with spaces.... -$(TARGETPATH): - -mkdir -p $(TARGETPATH) - -##### precompiled header file ################### - -ifdef PRECOMPILE -PRECOMSRC := $(SRCDIR)/$(PRECOMPILE) -else -PRECOMSRC := $(FLEXTINC)/flext.h -endif - -ifdef PRECOMSRC -PRECOMDST := $(OBJPATH)/$(notdir $(PRECOMSRC)).gch -PRECOMINC := -I $(OBJPATH) -endif - -$(PRECOMDST) : $(PRECOMSRC) $(patsubst %,$(SRCDIR)/%,$(HDRS)) - -mkdir -p $(dir $@) - $(CXX) -c $(DEFS) $(INCPATH) $(PRECOMSRC) -o $@ - -##### architecture-specific compilation ################### - -define ARCH_COMPILE -$(OBJPATH)/%.opp_$(1) : $(SRCDIR)/%.cpp - -mkdir -p $(dir $$@) - $(CXX) -c $(CFLAGS) -arch $(1) $$(CFLAGS_$(1)) $(DEFS) $(PRECOMINC) $(INCPATH) $$^ -o $$@ - -$(OBJPATH)/%.o_$(1) : $(SRCDIR)/%.c - -mkdir -p $(dir $$@) - $(CC) -c $(CFLAGS) -arch $(1) $$(CFLAGS_$(1)) $(DEFS) $(INCPATH) $$^ -o $$@ -endef - -# implement for all archs in ARCH -$(foreach arch,$(ARCH),$(eval $(call ARCH_COMPILE,$(arch)))) - -##### make fat object file ################### - -$(OBJPATH)/%.opp : $(foreach arch,$(ARCH),$(OBJPATH)/%.opp_$(arch)) - lipo $^ -create -output $@ - -$(OBJPATH)/%.o : $(foreach arch,$(ARCH),$(OBJPATH)/%.o_$(arch)) - lipo $^ -create -output $@ - -############################################## - -_clean_: - -rm -r $(TARGETPATH) - -rm -r $(OBJPATH) - -############################################## diff --git a/externals/grill/flext/buildsys/mac/gnumake-gcc.inc b/externals/grill/flext/buildsys/mac/gnumake-gcc.inc deleted file mode 100644 index 41eac3fd..00000000 --- a/externals/grill/flext/buildsys/mac/gnumake-gcc.inc +++ /dev/null @@ -1,74 +0,0 @@ -############################################## - -ifneq (,$(findstring Frameworks,$(FLEXTPREFIX))) -FLEXTFRAMEWORK := $(FLEXTPREFIX)/flext.framework -endif - -ifdef FLEXTFRAMEWORK -ifndef FLEXTLIB -FLEXTLIB := $(FLEXTFRAMEWORK) -endif -ifndef FLEXTINC -FLEXTINC := $(FLEXTFRAMEWORK)/Headers -endif -ifndef FLEXTSYS -FLEXTSYS := $(FLEXTFRAMEWORK)/Resources -endif -else -ifndef FLEXTLIB -FLEXTLIB := $(FLEXTPREFIX)/lib -endif -ifndef FLEXTINC -FLEXTINC := $(FLEXTPREFIX)/include/flext -endif -ifndef FLEXTSYS -FLEXTSYS := $(FLEXTPREFIX)/lib/flext -endif -endif - -FLEXTBIN := $(FLEXTPREFIX)/bin - -############################################## - -LDFLAGS += -dynamic -framework ApplicationServices -framework vecLib - -############################################## - -ifdef DEBUG -CFLAGS += -g -LDFLAGS += -g -else -ifdef PROFILE -CFLAGS += -g -LDFLAGS += -g -else -LDFLAGS += -Wl,-S -endif -endif - -############################################## - -ifdef STK_INC -INCPATH += -I$(STK_INC) -endif -ifdef STK_LIB -LIBS += $(STK_LIB) -endif - -############################################## - -ifdef SNDOBJ_INC -INCPATH += -I$(SNDOBJ_INC) -endif -ifdef SNDOBJ_LIB -LIBS += $(SNDOBJ_LIB) -endif - -############################################## - -LDFLAGS += $(patsubst %,-arch %,$(ARCH)) - -ifdef OSXSDK -CFLAGS += -isysroot $(OSXSDK) -LDFLAGS += -isysroot $(OSXSDK) -endif diff --git a/externals/grill/flext/buildsys/mac/max/config-gcc.def b/externals/grill/flext/buildsys/mac/max/config-gcc.def deleted file mode 100644 index cec5b624..00000000 --- a/externals/grill/flext/buildsys/mac/max/config-gcc.def +++ /dev/null @@ -1,75 +0,0 @@ -# where are the Max/MSP SDK header files? -# you should have the latest version! -MAXSDKPATH=/Applications/MaxMSP\ 4.6/MaxMSP-SDK/c74support - -############################################################### - -# prefix for flext installation -# headers are in $(FLEXTPREFIX)/include/flext -# libraries are in $(FLEXTPREFIX)/lib -# build system is in $(FLEXTPREFIX)/lib/flext - -FLEXTPREFIX=/usr/local - -############################################################### - -# where should the external be built? -OUTPATH=max-darwin - -# where should the external be installed? -INSTPATH=/Library/Application\ Support/Cycling\ \'74/externals/flext - -# where should the initialization files be installed? -INITPATH=/Library/Application\ Support/Cycling\ \'74/init - -# where should the help files be installed? -HELPPATH=/Applications/MaxMSP\ 4.6/max-help/flext - -############################################################### - -# STK (synthesis tool kit) support -# http://ccrma.stanford.edu/software/stk - -# where to find the STK header files (e.g. stk.h) -STK_INC=/usr/local/include/stk - -# where to find the STK library (normally libstk.a) -# (comment out STK_LIB if you don't use STK) -#STK_LIB=/usr/local/lib/libstk.a - -############################################################### - -# SndObj support -# http://music.nuim.ie//musictec/SndObj - -# where to find the SndObj header files (e.g. sndobj.h) -SNDOBJ_INC=/usr/local/include/sndobj - -# where to find the SndObj library (normally libsndobj.a) -# (comment out STK_LIB if you don't use SndObj) -#SNDOBJ_LIB=/usr/local/lib/libsndobj.a - -############################################################### - -# user defined compiler flags -UFLAGS += -ffast-math - -# user defined optimization flags -OFLAGS += -Os -ftree-vectorize - -# user defined debugging flags -DFLAGS += - -# architecture-specific flags (optional) -UFLAGS_ppc += -maltivec -faltivec -OFLAGS_ppc += -mtune=G4 -DFLAGS_ppc += - -UFLAGS_i386 += -mmmx -msse -msse2 -msse3 -OFLAGS_i386 += -mtune=prescott -DFLAGS_i386 += - -# cross-compilation (optional) -#ARCH=i386 ppc -#OSXSDK=/Developer/SDKs/MacOSX10.4u.sdk - diff --git a/externals/grill/flext/buildsys/mac/max/gnumake-gcc-ext.inc b/externals/grill/flext/buildsys/mac/max/gnumake-gcc-ext.inc deleted file mode 100644 index 5266a698..00000000 --- a/externals/grill/flext/buildsys/mac/max/gnumake-gcc-ext.inc +++ /dev/null @@ -1,23 +0,0 @@ -EXT=mxo - -############################################## - -LDFLAGS += -bundle - -############################################## - -OBJPATH=$(OUTPATH)/$(OUTSUB) - -# bundle name (build site) -INSTTARGET=$(OBJPATH)/$(OUTNAME).$(EXT) -# folder inside bundle (build site) -TARGETPATH=$(INSTTARGET)/Contents/MacOS -# file inside bundle (build site) -TARGET=$(TARGETPATH)/$(OUTNAME) - -# post build target -TARGETPOST=$(INSTTARGET)/Contents/Pkginfo - -$(INSTTARGET)/Contents/Pkginfo: - echo "iLaX????" >> $@ - diff --git a/externals/grill/flext/buildsys/mac/max/gnumake-gcc-flext.inc b/externals/grill/flext/buildsys/mac/max/gnumake-gcc-flext.inc deleted file mode 100644 index 3d526804..00000000 --- a/externals/grill/flext/buildsys/mac/max/gnumake-gcc-flext.inc +++ /dev/null @@ -1,20 +0,0 @@ -ifdef SHARED -EXT=dylib -else -EXT=a -endif - -############################################## - -LDFLAGS += -dynamiclib - -############################################## - -OBJPATH=$(OUTPATH)/$(OUTSUB) -TARGETPATH=$(OBJPATH) - -TARGETNAME=$(OUTNAME).$(EXT) -VERNAME=$(OUTNAME).$(FLEXTMAJOR).$(FLEXTMINOR).$(FLEXTMICRO).$(EXT) -TARGET=$(TARGETPATH)/$(VERNAME) - -INSTTARGET=$(TARGET) diff --git a/externals/grill/flext/buildsys/mac/max/gnumake-gcc.inc b/externals/grill/flext/buildsys/mac/max/gnumake-gcc.inc deleted file mode 100644 index 44313f62..00000000 --- a/externals/grill/flext/buildsys/mac/max/gnumake-gcc.inc +++ /dev/null @@ -1,6 +0,0 @@ -DEFS += -DFLEXT_SYS=1 - -INCPATH += -I$(MAXSDKPATH)/max-includes -I$(MAXSDKPATH)/jit-includes -I$(MAXSDKPATH)/msp-includes - -LDFLAGS += -framework MaxAPI -framework MaxAudioAPI - diff --git a/externals/grill/flext/buildsys/mac/pd/config-gcc.def b/externals/grill/flext/buildsys/mac/pd/config-gcc.def deleted file mode 100644 index a724b2e4..00000000 --- a/externals/grill/flext/buildsys/mac/pd/config-gcc.def +++ /dev/null @@ -1,72 +0,0 @@ -# where is the PD installation including source code? -# (this should point to the main folder, which has a "src" subfolder) -PDPATH=/Applications/Pd-0.40-2.app/Contents/Resources - -# where is the PD executable? -PDBIN=$(PDPATH)/bin/pd - -############################################################### - -# prefix for flext installation -# headers are in $(FLEXTPREFIX)/include/flext -# libraries are in $(FLEXTPREFIX)/lib -# build system is in $(FLEXTPREFIX)/lib/flext - -FLEXTPREFIX=/usr/local - -############################################################### - -# where should the external be built? -OUTPATH=pd-darwin - -# where should the external be installed? -INSTPATH=$(PDPATH)/extra - -############################################################### - -# STK (synthesis tool kit) support -# http://ccrma.stanford.edu/software/stk - -# where to find the STK header files (e.g. stk.h) -STK_INC=/usr/local/include/stk - -# where to find the STK library (normally libstk.a) -# (comment out STK_LIB if you don't use STK) -#STK_LIB=/usr/local/lib/libstk.a - -############################################################### - -# SndObj support -# http://music.nuim.ie//musictec/SndObj - -# where to find the SndObj header files (e.g. sndobj.h) -SNDOBJ_INC=/usr/local/include/sndobj - -# where to find the SndObj library (normally libsndobj.a) -# (comment out STK_LIB if you don't use SndObj) -#SNDOBJ_LIB=/usr/local/lib/libsndobj.a - -############################################################### - -# user defined compiler flags -UFLAGS += -ffast-math - -# user defined optimization flags -OFLAGS += -Os -ftree-vectorize - -# user defined debugging flags -DFLAGS += - -# architecture-specific flags (optional) -UFLAGS_ppc += -maltivec -faltivec -OFLAGS_ppc += -mtune=G4 -DFLAGS_ppc += - -UFLAGS_i386 += -mmmx -msse -msse2 -msse3 -OFLAGS_i386 += -mtune=prescott -DFLAGS_i386 += - -# cross-compilation (optional) -#ARCH=i386 ppc -#OSXSDK=/Developer/SDKs/MacOSX10.4u.sdk - diff --git a/externals/grill/flext/buildsys/mac/pd/gnumake-gcc-ext.inc b/externals/grill/flext/buildsys/mac/pd/gnumake-gcc-ext.inc deleted file mode 100644 index 5eb0a234..00000000 --- a/externals/grill/flext/buildsys/mac/pd/gnumake-gcc-ext.inc +++ /dev/null @@ -1,10 +0,0 @@ -EXT=pd_darwin - -LDFLAGS += -bundle -bundle_loader $(PDBIN) - -# it seems we are having symbol name clashes with the following "new preferred method" -# so we rather stick to the above "deprecated method" -#LDFLAGS += -dynamiclib -undefined dynamic_lookup - -TARGET=$(TARGETPATH)/$(TARGETNAME) -INSTTARGET=$(TARGET) diff --git a/externals/grill/flext/buildsys/mac/pd/gnumake-gcc-flext.inc b/externals/grill/flext/buildsys/mac/pd/gnumake-gcc-flext.inc deleted file mode 100644 index 782606fc..00000000 --- a/externals/grill/flext/buildsys/mac/pd/gnumake-gcc-flext.inc +++ /dev/null @@ -1,11 +0,0 @@ -ifdef SHARED -EXT=dylib -else -EXT=a -endif - -LDFLAGS += -dynamiclib -flat_namespace -undefined suppress - -VERNAME=$(OUTNAME).$(FLEXTMAJOR).$(FLEXTMINOR).$(FLEXTMICRO).$(EXT) -TARGET=$(TARGETPATH)/$(VERNAME) -INSTTARGET=$(TARGET) diff --git a/externals/grill/flext/buildsys/mac/pd/gnumake-gcc.inc b/externals/grill/flext/buildsys/mac/pd/gnumake-gcc.inc deleted file mode 100644 index 9d2fc3f3..00000000 --- a/externals/grill/flext/buildsys/mac/pd/gnumake-gcc.inc +++ /dev/null @@ -1,10 +0,0 @@ -DEFS += -DFLEXT_SYS=2 -DPD - -INCPATH += -I$(PDPATH)/src -LIBPATH += -L$(PDPATH)/bin - -############################################## - -OBJPATH=$(OUTPATH)/$(OUTSUB) -TARGETPATH=$(OBJPATH) -TARGETNAME=$(OUTNAME).$(EXT) diff --git a/externals/grill/flext/buildsys/nmake-ext.inc b/externals/grill/flext/buildsys/nmake-ext.inc deleted file mode 100644 index 1455c83e..00000000 --- a/externals/grill/flext/buildsys/nmake-ext.inc +++ /dev/null @@ -1 +0,0 @@ -OUTNAME=$(NAME) diff --git a/externals/grill/flext/buildsys/nmake-flext.inc b/externals/grill/flext/buildsys/nmake-flext.inc deleted file mode 100644 index 2e7faf0c..00000000 --- a/externals/grill/flext/buildsys/nmake-flext.inc +++ /dev/null @@ -1,3 +0,0 @@ -DEFS=$(DEFS) /DFLEXT_EXPORTS - -OUTNAME=$(FLEXTNAME) diff --git a/externals/grill/flext/buildsys/nmake-shlib.inc b/externals/grill/flext/buildsys/nmake-shlib.inc deleted file mode 100644 index 1455c83e..00000000 --- a/externals/grill/flext/buildsys/nmake-shlib.inc +++ /dev/null @@ -1 +0,0 @@ -OUTNAME=$(NAME) diff --git a/externals/grill/flext/buildsys/nmake-sub.mak b/externals/grill/flext/buildsys/nmake-sub.mak deleted file mode 100644 index c8b78044..00000000 --- a/externals/grill/flext/buildsys/nmake-sub.mak +++ /dev/null @@ -1,44 +0,0 @@ -# include flext version number -!include $(BUILDPATH)version.inc - -# general settings -!include $(BUILDPATH)config-$(PLATFORM)-$(RTSYS)-$(COMPILER).txt - -############################## -# project-specific definitions - -# package info -!if "$(PKGINFO)" != "" -!include $(PKGINFO) -!endif - -# special package settings -!ifdef USRCONFIG -!include $(USRCONFIG) -!endif - -# package specific make stuff -!ifdef USRMAKE -!include $(USRMAKE) -!endif - -############################## -# flext-specific definitions - -!include $(BUILDPATH)nmake.inc - -!include $(BUILDPATH)nmake-$(BUILDCLASS).inc - -############################## -# platform-specific make stuff - -!include $(BUILDPATH)$(PLATFORM)\$(RTSYS)\nmake-$(COMPILER).inc - -!include $(BUILDPATH)$(PLATFORM)\$(RTSYS)\nmake-$(COMPILER)-$(BUILDCLASS).inc - -############################## -# general make stuff - -!include $(BUILDPATH)$(PLATFORM)\nmake-$(COMPILER).inc - -!include $(BUILDPATH)$(PLATFORM)\nmake-$(COMPILER)-$(BUILDCLASS).inc diff --git a/externals/grill/flext/buildsys/nmake.inc b/externals/grill/flext/buildsys/nmake.inc deleted file mode 100644 index fd1bb50d..00000000 --- a/externals/grill/flext/buildsys/nmake.inc +++ /dev/null @@ -1,64 +0,0 @@ -############################################## -# flext defines -############################################## - -CFLAGS=$(CFLAGS) $(UFLAGS) - -!ifdef DEBUG -CFLAGS=$(CFLAGS) /D_DEBUG $(DFLAGS) -!else -CFLAGS=$(CFLAGS) /DNDEBUG $(OFLAGS) -!endif - - -!ifdef SHARED -# --- shared --- -DEFS=$(DEFS) /DFLEXT_SHARED - -!elseifdef THREADED -# --- static multi-threaded --- -DEFS=$(DEFS) /DFLEXT_THREADS - -!else -# --- static single-threaded --- - -!endif - -############################################## -# name of flext library -############################################## - -!ifdef SHARED -TYPEEXT=_ -!else -!ifdef THREADED -TYPEEXT=_t -!else -TYPEEXT=_s -!endif -!endif - -!ifdef DEBUG -MODEEXT=d -!else -!ifdef PROFILE -MODEEXT=p -!else -MODEEXT= -!ifdef SHARED -TYPEEXT= -!endif -!endif -!endif - -FLEXTNAME=flext-$(RTSYS)$(TYPEEXT)$(MODEEXT) - -############################################## -# product name and folder -############################################## - -!ifndef SRCDIR -SRCDIR=. -!endif - -OUTSUB=$(TARGETMODE)-$(TARGETTYPE) diff --git a/externals/grill/flext/buildsys/nmake.mak b/externals/grill/flext/buildsys/nmake.mak deleted file mode 100644 index 3e946de0..00000000 --- a/externals/grill/flext/buildsys/nmake.mak +++ /dev/null @@ -1,110 +0,0 @@ -# required settings: -# -# PLATFORM - win/mac/lnx -# RTSYS - pd/max -# COMPILER - msvc/gcc/mingw/cygwin -# BUILDPATH including trailing \ - -############################################### -# package info - -!ifndef PKGINFO -PKGINFO=package.txt -!endif - -!if "$(PKGINFO)" != "" -!include $(PKGINFO) -!endif - -!ifndef NAME -!error NAME variable must be defined (name of target) -!endif - -!ifndef SRCS -!error SRCS variable must be defined (list of source files) -!endif - -############################################### -# check variables - -!ifndef BUILDCLASS -BUILDCLASS=ext -!endif - -!ifndef BUILDMODE -BUILDMODE=release -!endif - -!ifndef BUILDTYPE -BUILDTYPE=single -!endif - -############################## - -#!ifndef TARGETMODE -#TARGETMODE=$(BUILDMODE) -#!endif - -#!ifndef TARGETTYPE -#TARGETTYPE=$(BUILDTYPE) -#!endif - -############################################### - -SYSCONFIG=$(BUILDPATH)config-$(PLATFORM)-$(RTSYS)-$(COMPILER).txt -SYSDEFAULT=$(BUILDPATH)$(PLATFORM)\$(RTSYS)\config-$(COMPILER).def - -OPTIONS=/NOLOGO /f $(BUILDPATH)nmake-sub.mak \ - PLATFORM=$(PLATFORM) RTSYS=$(RTSYS) COMPILER=$(COMPILER) \ - BUILDPATH=$(BUILDPATH) PKGINFO=$(PKGINFO) BUILDCLASS=$(BUILDCLASS) - -############################################### - -!ifdef BUILDDIR -USRCONFIG=config.txt -USRDEFAULT=$(BUILDDIR)\config-$(PLATFORM).def - -USRMAKE=$(BUILDDIR)\nmake-$(PLATFORM)-$(COMPILER).inc - -OPTIONS=$(OPTIONS) USRCONFIG=$(USRCONFIG) USRMAKE=$(USRMAKE) -!endif - -############################################### -# include file describing default target dependencies - -!include $(BUILDPATH)targets.inc - -!include $(BUILDPATH)targets-$(BUILDCLASS).inc - -############################################### - -.precious: $(SYSCONFIG) $(USRCONFIG) - -$(SYSCONFIG): $(SYSDEFAULT) - @copy $** $@ - @echo ------------------------------------------------------------------------- - @echo A default system configuration file has been created. - @echo Please edit $(SYSCONFIG) - @echo to match your platform and start again. - @echo ------------------------------------------------------------------------- - @exit 1 - -!ifdef BUILDDIR -$(USRCONFIG): $(USRDEFAULT) - @copy $** $@ - @echo ------------------------------------------------------------------------- - @echo A default package configuration file has been created. - @echo Please edit $(USRCONFIG) and start again. - @echo ------------------------------------------------------------------------- - @exit 1 - -$(USRDEFAULT) $(USRMAKE): - @echo ------------------------------------------------------------------------- - @echo Your combination of platform, system and compiler is not supported yet. - @echo Required files: - @echo $(USRDEFAULT) - @echo and - @echo $(USRMAKE) - @echo ------------------------------------------------------------------------- - @exit 1 -!endif diff --git a/externals/grill/flext/buildsys/readme.txt b/externals/grill/flext/buildsys/readme.txt deleted file mode 100644 index 4fa74ad4..00000000 --- a/externals/grill/flext/buildsys/readme.txt +++ /dev/null @@ -1,180 +0,0 @@ -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - ----------------------------------------------------------------------------- - -At the moment this is more like a sketchboard, but i'll promise to bring some -order into it some fine day in the not too distant future. - ----------------------------------------------------------------------------- - -Build scripts -============= - -Depending on platform the build process is run with -build.sh -or -build.bat - - -Arguments: PLATFORM SYSTEM COMPILER {TARGET} {definitions} - -PLATFORM: win / lnx / mac -SYSTEM: pd / max -COMPILER: msvc / gcc / mingw / cygwin / bcc / icc - -TARGET: (default is all) - all, build - build package in default style - install - install package - clean - clean build products - - config - test if configuration needs refreshing - -or - build-MODE-TYPE - install-MODE-TYPE - clean-MODE-TYPE - -with - MODE: default, all, release, debug, profile - TYPE: default, all, single, multi, shared - - -Additional definitions can be passed to the make program -like - "PKGINFO=info.txt" (defines new filename for package information) -or - "PKGINFO=" (package information will be skipped - only for config target) - -For more macro names, see below - - -For each of the supported combinations of PLATFORM, SYSTEM and COMPILER -a MAKE program has been chosen, normally the one that comes with the compiler. - -For gcc it is GNU make (gnumake) -For msvc it is Microsoft make (nmake) -For bcc it is Borland make (bmake) - - - -Package info (package.txt) -========================== - -Package information contains vital information for the build process. -Obligatory are only: - -NAME: resulting filename of the build product -SRCS: list of source files - - -Normally also used are: - -HDRS: used header files, which SRCS files are dependent upon -SRCDIR: source folder (relative to project folder), default is . - - -Other settings: - -PRECOMPILE: prefix header file (in SRCDIR) for all source files, - will be precompiled if supported by the compiler - -BUILDCLASS: can currently be flext or ext, default is ext. - flext will build the flext system - ext will build a flext-based external - -BUILDMODE: release or debug, default is release - if release, optimization flags will be used - if debug, debug information will be generated - if profile, profiling information will be generated (with debug info and optimization) - -BUILDTYPE: single, multi or shared, default is single - if single, it will be linked against the single-threaded static flext library - if multi, it will be linked against the multi-threaded static flext library - if shared, it will be linked against the shared flext library - -BUILDDIR: relative folder with additional build settings - - - -Additional build settings (BUILDDIR) -==================================== - -If BUILDDIR is defined, all PLATFORM-SYSTEM-COMPILER combinations to support -must are mirrored by the respective .def and .inc files in the BUILDDIR. - - -config-PLATFORM.def files (e.g. config-lnx.def) : - - These files can contain additional macro definitions, that are private - to the project. - The definitions should be strictly in the form SETTING=value, without any - make-specific macros etc. - The .def files work as templates that get copied to a user-editable - config.txt file when the build process is first started. - - -MAKE-PLATFORM-COMPILER.inc files -(e.g. gnumake-lnx-gcc.inc or nmake-win-msvc.inc): - - These files (which are no considered to be edited by the user) can contain - specific modifications to compiler flags, include file paths etc. - - For gnumake this would e.g. be - INCPATH += -I/usr/local/include/python2.3 - - for nmake or bmake e.g. - INCPATH = $(INCPATH) -I"c:\program files\Python2.3\include" - - -Structure of build system -========================= - -The build system has several levels of information, which are evaluated in the -following order (see also buildsys/MAKE-sub.mak) - -Project level: -- PKGINFO file (e.g. package.txt) -- USRCONFIG file (e.g. config.txt) -- USRMAKE file (e.g. build/gnumake-lnx-gcc.inc) - -General definitions (in buildsys): - -- MAKE.inc (e.g. buildsys/gnumake.inc) - contains evaluation of flext library name, build directory etc. -- MAKE-BUILDCLASS.inc (e.g. buildsys/gnumake-ext.inc) - contains some more flag settings - -Real-time-system-dependent definitions (in buildsys/PLATFORM/SYSTEM): - -- MAKE-COMPILER.inc (e.g. buildsys/lnx/pd/gnumake-gcc.inc) - contains general real-time-system dependent info (e.g. paths, FLEXT_SYS setting) -- MAKE-COMPILER-BUILDCLASS.inc (e.g. buildsys/lnx/pd/gnumake-gcc-ext.inc) - contains specific real-time-system dependent info (e.g. extension of binary) - -Platform-dependent definitions (in buildsys/PLATFORM): - -- MAKE-COMPILER.inc (e.g. buildsys/lnx/gnumake-gcc.inc) - contains general platform-specific flags -- MAKE-COMPILER-BUILDCLASS.inc (e.g. buildsys/lnx/gnumake-gcc-ext.inc) - contains the actual make targets (_build_,_clean_ and _install_) - - -Macro names -=============== - -PKGINFO - filename for package information (must reside in project folder) - -UFLAGS - user defined compiler flags -OFLAGS - user defined optimization flags (not used in debug builds) - -CFLAGS - compiler flags -LDFLAGS - linker flags - -INCPATH - include file path (must come with e.g. -I ) -LIBPATH - library path (must come with e.g. -L ) - -LIBS - libraries to link in (must come with e.g. -l ) diff --git a/externals/grill/flext/buildsys/targets-ext.inc b/externals/grill/flext/buildsys/targets-ext.inc deleted file mode 100644 index b8031522..00000000 --- a/externals/grill/flext/buildsys/targets-ext.inc +++ /dev/null @@ -1,51 +0,0 @@ -build-default-default: build-$(BUILDMODE)-$(BUILDTYPE) - -build-all-default: build-all-$(BUILDTYPE) - -build-release-default: build-release-$(BUILDTYPE) - -build-debug-default: build-debug-$(BUILDTYPE) - -build-profile-default: build-profile-$(BUILDTYPE) - -build-default-all: build-$(BUILDMODE)-all - -build-default-single: build-$(BUILDMODE)-single - -build-default-multi: build-$(BUILDMODE)-multi - -build-default-shared: build-$(BUILDMODE)-shared - - -install-default-default: install-$(BUILDMODE)-$(BUILDTYPE) - -install-all-default: install-all-$(BUILDTYPE) - -install-release-default: install-release-$(BUILDTYPE) - -install-debug-default: install-debug-$(BUILDTYPE) - -install-default-all: install-$(BUILDMODE)-all - -install-default-single: install-$(BUILDMODE)-single - -install-default-multi: install-$(BUILDMODE)-multi - -install-default-shared: install-$(BUILDMODE)-shared - - -clean-default-default: clean-$(BUILDMODE)-$(BUILDTYPE) - -clean-all-default: clean-all-$(BUILDTYPE) - -clean-release-default: clean-release-$(BUILDTYPE) - -clean-debug-default: clean-debug-$(BUILDTYPE) - -clean-default-all: clean-$(BUILDMODE)-all - -clean-default-single: clean-$(BUILDMODE)-single - -clean-default-multi: clean-$(BUILDMODE)-multi - -clean-default-shared: clean-$(BUILDMODE)-shared diff --git a/externals/grill/flext/buildsys/targets-flext.inc b/externals/grill/flext/buildsys/targets-flext.inc deleted file mode 100644 index e0e984cf..00000000 --- a/externals/grill/flext/buildsys/targets-flext.inc +++ /dev/null @@ -1,52 +0,0 @@ -build-default-default: build-all-all - -build-all-default: build-all-all - -build-release-default: build-release-all - -build-debug-default: build-debug-all - -build-profile-default: build-profile-all - -build-default-all: build-all-all - -build-default-single: build-all-single - -build-default-multi: build-all-multi - -build-default-shared: build-all-shared - - -install-default-default: install-all-all - -install-all-default: install-all-all - -install-release-default: install-release-all - -install-debug-default: install-debug-all - -install-default-all: install-all-all - -install-default-single: install-all-single - -install-default-multi: install-all-multi - -install-default-shared: install-all-shared - - -clean-default-default: clean-all-all - -clean-all-default: clean-all-all - -clean-release-default: clean-release-all - -clean-debug-default: clean-debug-all - -clean-default-all: clean-all-all - -clean-default-single: clean-all-single - -clean-default-multi: clean-all-multi - -clean-default-shared: clean-all-shared - diff --git a/externals/grill/flext/buildsys/targets-shlib.inc b/externals/grill/flext/buildsys/targets-shlib.inc deleted file mode 100644 index b8031522..00000000 --- a/externals/grill/flext/buildsys/targets-shlib.inc +++ /dev/null @@ -1,51 +0,0 @@ -build-default-default: build-$(BUILDMODE)-$(BUILDTYPE) - -build-all-default: build-all-$(BUILDTYPE) - -build-release-default: build-release-$(BUILDTYPE) - -build-debug-default: build-debug-$(BUILDTYPE) - -build-profile-default: build-profile-$(BUILDTYPE) - -build-default-all: build-$(BUILDMODE)-all - -build-default-single: build-$(BUILDMODE)-single - -build-default-multi: build-$(BUILDMODE)-multi - -build-default-shared: build-$(BUILDMODE)-shared - - -install-default-default: install-$(BUILDMODE)-$(BUILDTYPE) - -install-all-default: install-all-$(BUILDTYPE) - -install-release-default: install-release-$(BUILDTYPE) - -install-debug-default: install-debug-$(BUILDTYPE) - -install-default-all: install-$(BUILDMODE)-all - -install-default-single: install-$(BUILDMODE)-single - -install-default-multi: install-$(BUILDMODE)-multi - -install-default-shared: install-$(BUILDMODE)-shared - - -clean-default-default: clean-$(BUILDMODE)-$(BUILDTYPE) - -clean-all-default: clean-all-$(BUILDTYPE) - -clean-release-default: clean-release-$(BUILDTYPE) - -clean-debug-default: clean-debug-$(BUILDTYPE) - -clean-default-all: clean-$(BUILDMODE)-all - -clean-default-single: clean-$(BUILDMODE)-single - -clean-default-multi: clean-$(BUILDMODE)-multi - -clean-default-shared: clean-$(BUILDMODE)-shared diff --git a/externals/grill/flext/buildsys/targets.inc b/externals/grill/flext/buildsys/targets.inc deleted file mode 100644 index 1c901410..00000000 --- a/externals/grill/flext/buildsys/targets.inc +++ /dev/null @@ -1,148 +0,0 @@ -all: build - -build: build-default-default - -profile: build-profile-default - -clean: clean-default-default - -install: install-default-default - -########################################################### - -build-all-all: build-release-all build-debug-all - -build-release-all: build-release-single build-release-multi build-release-shared - -build-debug-all: build-debug-single build-debug-multi build-debug-shared - -build-profile-all: build-profile-single build-profile-multi build-profile-shared - -build-all-single: build-release-single build-debug-single - -build-all-multi: build-release-multi build-debug-multi - -build-all-shared: build-release-shared build-debug-shared - -################################################### - -install-all-all: install-release-all install-debug-all - -install-release-all: install-release-single install-release-multi install-release-shared - -install-debug-all: install-debug-single install-debug-multi install-debug-shared - -install-profile-all: install-profile-single install-profile-multi install-profile-shared - -install-all-single: install-release-single install-debug-single - -install-all-multi: install-release-multi install-debug-multi - -install-all-shared: install-release-shared install-debug-shared - -################################################### - -clean-all-all: clean-release-all clean-debug-all - -clean-release-all: clean-release-single clean-release-multi clean-release-shared - -clean-debug-all: clean-debug-single clean-debug-multi clean-debug-shared - -clean-profile-all: clean-profile-single clean-profile-multi clean-profile-shared - -clean-all-single: clean-release-single clean-debug-single - -clean-all-multi: clean-release-multi clean-debug-multi - -clean-all-shared: clean-release-shared clean-debug-shared - -########################################################### - -build-release-single: config - $(MAKE) $(OPTIONS) TARGETMODE=release TARGETTYPE=single _build_ - -build-debug-single: config - $(MAKE) $(OPTIONS) TARGETMODE=debug TARGETTYPE=single DEBUG=1 _build_ - -build-profile-single: config - $(MAKE) $(OPTIONS) TARGETMODE=profile TARGETTYPE=single PROFILE=1 _build_ - -build-release-multi: config - $(MAKE) $(OPTIONS) TARGETMODE=release TARGETTYPE=multi THREADED=1 _build_ - -build-debug-multi: config - $(MAKE) $(OPTIONS) TARGETMODE=debug TARGETTYPE=multi THREADED=1 DEBUG=1 _build_ - -build-profile-multi: config - $(MAKE) $(OPTIONS) TARGETMODE=profile TARGETTYPE=multi THREADED=1 PROFILE=1 _build_ - -build-release-shared: config - $(MAKE) $(OPTIONS) TARGETMODE=release TARGETTYPE=shared SHARED=1 _build_ - -build-debug-shared: config - $(MAKE) $(OPTIONS) TARGETMODE=debug TARGETTYPE=shared SHARED=1 DEBUG=1 _build_ - -build-profile-shared: config - $(MAKE) $(OPTIONS) TARGETMODE=profile TARGETTYPE=shared SHARED=1 PROFILE=1 _build_ - -########################################################### - -install-release-single: config - $(MAKE) $(OPTIONS) TARGETMODE=release TARGETTYPE=single _install_ - -install-debug-single: config - $(MAKE) $(OPTIONS) TARGETMODE=debug TARGETTYPE=single DEBUG=1 _install_ - -install-profile-single: config - $(MAKE) $(OPTIONS) TARGETMODE=profile TARGETTYPE=single PROFILE=1 _install_ - -install-release-multi: config - $(MAKE) $(OPTIONS) TARGETMODE=release TARGETTYPE=multi THREADED=1 _install_ - -install-debug-multi: config - $(MAKE) $(OPTIONS) TARGETMODE=debug TARGETTYPE=multi THREADED=1 DEBUG=1 _install_ - -install-profile-multi: config - $(MAKE) $(OPTIONS) TARGETMODE=profile TARGETTYPE=multi THREADED=1 PROFILE=1 _install_ - -install-release-shared: config - $(MAKE) $(OPTIONS) TARGETMODE=release TARGETTYPE=shared SHARED=1 _install_ - -install-debug-shared: config - $(MAKE) $(OPTIONS) TARGETMODE=debug TARGETTYPE=shared SHARED=1 DEBUG=1 _install_ - -install-profile-shared: config - $(MAKE) $(OPTIONS) TARGETMODE=profile TARGETTYPE=shared SHARED=1 PROFILE=1 _install_ - -########################################################### - -clean-release-single: config - $(MAKE) $(OPTIONS) TARGETMODE=release TARGETTYPE=single _clean_ - -clean-debug-single: config - $(MAKE) $(OPTIONS) TARGETMODE=debug TARGETTYPE=single DEBUG=1 _clean_ - -clean-profile-single: config - $(MAKE) $(OPTIONS) TARGETMODE=profile TARGETTYPE=single PROFILE=1 _clean_ - -clean-release-multi: config - $(MAKE) $(OPTIONS) TARGETMODE=release TARGETTYPE=multi THREADED=1 _clean_ - -clean-debug-multi: config - $(MAKE) $(OPTIONS) TARGETMODE=debug TARGETTYPE=multi THREADED=1 DEBUG=1 _clean_ - -clean-profile-multi: config - $(MAKE) $(OPTIONS) TARGETMODE=profile TARGETTYPE=multi THREADED=1 PROFILE=1 _clean_ - -clean-release-shared: config - $(MAKE) $(OPTIONS) TARGETMODE=release TARGETTYPE=shared SHARED=1 _clean_ - -clean-debug-shared: config - $(MAKE) $(OPTIONS) TARGETMODE=debug TARGETTYPE=shared SHARED=1 DEBUG=1 _clean_ - -clean-profile-shared: config - $(MAKE) $(OPTIONS) TARGETMODE=profile TARGETTYPE=shared SHARED=1 PROFILE=1 _clean_ - -########################################################### - -config: $(USRMAKE) $(SYSCONFIG) $(USRCONFIG) diff --git a/externals/grill/flext/buildsys/version.inc b/externals/grill/flext/buildsys/version.inc deleted file mode 100644 index c91ea283..00000000 --- a/externals/grill/flext/buildsys/version.inc +++ /dev/null @@ -1,3 +0,0 @@ -FLEXTMAJOR=0 -FLEXTMINOR=5 -FLEXTMICRO=1 diff --git a/externals/grill/flext/buildsys/win/bmake-bcc-ext.inc b/externals/grill/flext/buildsys/win/bmake-bcc-ext.inc deleted file mode 100644 index ff26dc12..00000000 --- a/externals/grill/flext/buildsys/win/bmake-bcc-ext.inc +++ /dev/null @@ -1,53 +0,0 @@ -# build class specific settings - -INCPATH=$(INCPATH) -I$(FLEXTINC) -LIBPATH=$(LIBPATH) -L$(FLEXTLIB) -LIBS=$(LIBS) $(FLEXTNAME).lib - -############################################## - -# default target -_build_: $(TARGET) - -$(OUTPATH): - if not exist $@ mkdir $@ > nul - -$(TARGETPATH): $(OUTPATH) - if not exist $@ mkdir $@ > nul - -SETUPFUNCTION=$(NAME)_setup - -$(TARGETPATH)\$(NAME).def: $(TARGETPATH) - @echo EXPORTS $(SETUPFUNCTION) = _$(SETUPFUNCTION) > $@ -# this next line fixes a strange problem with implib - lacking underscore?! - @echo IMPORTS _rtext_retext=PD.rtext_retext >> $@ - -$(TARGET) :: $(TARGETPATH)\$(NAME).def - -{$(SRCDIR)}.cpp{}.obj: - bcc32 -c $(CFLAGS) $(DEFS) $(INCPATH) -n$(TARGETPATH) $< - -{$(SRCDIR)}.c{}.obj: - bcc32 -c $(CFLAGS) $(DEFS) $(INCPATH) -n$(TARGETPATH) $< - -$(TARGET) :: $(TARGETPATH) - -$(TARGET) :: $(OBJS) - @cd $(TARGETPATH) - ilink32 $(LDFLAGS) $(LIBPATH) -L. $(OBJS) ,$( nul - -rmdir /q $(TARGETPATH) > nul - -############################################## - -$(INSTPATH): - if not exist $@ mkdir $@ > nul - -_install_: $(INSTPATH) - copy $(TARGET) $(INSTPATH) > nul diff --git a/externals/grill/flext/buildsys/win/bmake-bcc-flext.inc b/externals/grill/flext/buildsys/win/bmake-bcc-flext.inc deleted file mode 100644 index 0d82065e..00000000 --- a/externals/grill/flext/buildsys/win/bmake-bcc-flext.inc +++ /dev/null @@ -1,70 +0,0 @@ -# build class specific settings - -############################################## - -# default target -_build_: $(TARGET) - -$(OUTPATH): - if not exist $@ mkdir $@ > nul - -$(TARGETPATH): $(OUTPATH) - if not exist $@ mkdir $@ > nul - -{$(SRCDIR)}.cpp{}.obj: - bcc32 -c $(CFLAGS) $(DEFS) $(INCPATH) -n$(TARGETPATH) $< - -{$(SRCDIR)}.c{}.obj: - bcc32 -c $(CFLAGS) $(DEFS) $(INCPATH) -n$(TARGETPATH) $< - - -$(TARGETPATH)\pd.lib : $(PDPATH)\bin\pd.dll - implib -a $< $** - -$(TARGETPATH)\pthreadVC.lib : $(PDPATH)\bin\pthreadVC.dll - implib -a $< $** - -PDTARGETS=$(TARGETPATH)\pd.lib $(TARGETPATH)\pthreadVC.lib - - -$(TARGET) :: $(TARGETPATH) $(PDTARGETS) - -$(TARGET) :: $(OBJS) - @cd $(TARGETPATH) -!ifdef SHARED - ilink32 $(LDFLAGS) $(LIBPATH) -L. $(OBJS) ,$( nul - -rmdir /q $(TARGETPATH) > nul - -############################################## - -!ifdef SHARED -FLEXTLIBINST=$(FLEXTSHLIB) -!else -FLEXTLIBINST=$(FLEXTLIB) -!endif - -_install_: - @if not exist $(FLEXTINC) mkdir $(FLEXTINC) > nul - @if not exist $(FLEXTLIB) mkdir $(FLEXTLIB) > nul - @if not exist $(FLEXTLIBINST) mkdir $(FLEXTLIBINST) > nul - - copy $(TARGET) $(FLEXTLIBINST) > nul -!ifdef SHARED -# copy import library - copy $(TARGET:.dll=.lib) $(FLEXTLIB) > nul -!endif -# copy headers - for %%i in ($(HDRS)) do @copy $(SRCDIR)\%%i $(FLEXTINC) > nul -# copy import libraries - for %%i in ($(PDTARGETS)) do @copy %%i $(FLEXTLIB) > nul diff --git a/externals/grill/flext/buildsys/win/bmake-bcc.inc b/externals/grill/flext/buildsys/win/bmake-bcc.inc deleted file mode 100644 index 67ce16f0..00000000 --- a/externals/grill/flext/buildsys/win/bmake-bcc.inc +++ /dev/null @@ -1,36 +0,0 @@ -!ifdef BCCPATH -INCPATH=$(INCPATH) -I$(BCCPATH)\include -LIBPATH=$(LIBPATH) -L$(BCCPATH)\lib -!endif - -############################################## - -OBJPATH=$(OUTPATH)\$(OUTSUB) -TARGETPATH=$(OBJPATH) -TARGET=$(TARGETPATH)\$(OUTNAME).$(EXT) - -############################################## -# use precompiled headers - -!ifdef PRECOMPILE -CFLAGS=$(CFLAGS) -Hh=$(PRECOMPILE) -H=$(OBJPATH)\precompiled.pch -!endif - -############################################## - -LIBS=$(LIBS) cw32.lib import32.lib C0D32.OBJ -CFLAGS=$(CFLAGS) -tWD -tWM -w-8004 -w-8027 -w-8057 -LDFLAGS=$(LDFLAGS) /C /Tpd - -############################################## - -!ifdef DEBUG -CFLAGS=$(CFLAGS) -v -LDFLAGS=$(LDFLAGS) /v -!endif - -############################################## -# convert both *.c and *.cpp - -OBJSTMP= $(SRCS:.c=.obj) -OBJS= $(OBJSTMP:.objpp=.obj) diff --git a/externals/grill/flext/buildsys/win/gnumake-cygwin-ext.inc b/externals/grill/flext/buildsys/win/gnumake-cygwin-ext.inc deleted file mode 100644 index 141d5093..00000000 --- a/externals/grill/flext/buildsys/win/gnumake-cygwin-ext.inc +++ /dev/null @@ -1,42 +0,0 @@ -# build class specific settings - -INCPATH += -I$(FLEXTINC) -LIBPATH += -L$(FLEXTLIB) -L$(FLEXTSHLIB) -LIBS += -l$(FLEXTNAME) - -############################################## - -# default target -_build_: $(TARGET) - -$(CSRCS) $(CPPSRCS): $(patsubst %,$(SRCDIR)/%,$(HDRS)) - touch $@ - -$(TARGETPATH): - -mkdir -p $@ - -$(TARGETPATH)/%.opp : $(SRCDIR)/%.cpp - $(CXX) -c $(CFLAGS) $(DEFS) $(INCPATH) $< -o $@ - -$(TARGETPATH)/%.o : $(SRCDIR)/%.c - $(CC) -c $(CFLAGS) $(DEFS) $(INCPATH) $< -o $@ - -$(TARGET) :: $(TARGETPATH) - -$(TARGET) :: $(COBJS) $(CPPOBJS) - $(CXX) $(LDFLAGS) $(LIBPATH) -o $@ $(COBJS) $(CPPOBJS) $(LIBS) $(SYSLIBS) - strip --strip-unneeded $@ - chmod 755 $@ - -############################################## - -_clean_: - rm $(COBJS) $(CPPOBJS) $(TARGET) - -############################################## - -$(INSTPATH): - -mkdir -p $(INSTPATH) - -_install_: $(INSTPATH) - install $(TARGET) $(INSTPATH) diff --git a/externals/grill/flext/buildsys/win/gnumake-cygwin-flext.inc b/externals/grill/flext/buildsys/win/gnumake-cygwin-flext.inc deleted file mode 100644 index e8940a5d..00000000 --- a/externals/grill/flext/buildsys/win/gnumake-cygwin-flext.inc +++ /dev/null @@ -1,52 +0,0 @@ -# build class specific settings - -############################################## - -# default target -_build_: $(TARGET) - -$(CSRCS) $(CPPSRCS): $(patsubst %,$(SRCDIR)/%,$(HDRS)) - touch $@ - -$(TARGETPATH): - -mkdir -p $@ - -$(TARGETPATH)/%.opp : $(SRCDIR)/%.cpp - $(CXX) -c $(CFLAGS) $(DEFS) $(INCPATH) $< -o $@ - -$(TARGETPATH)/%.o : $(SRCDIR)/%.c - $(CC) -c $(CFLAGS) $(DEFS) $(INCPATH) $< -o $@ - -$(TARGET) :: $(TARGETPATH) - -$(TARGET) :: $(COBJS) $(CPPOBJS) -ifdef SHARED - $(CXX) $(LDFLAGS) $(LIBPATH) -o $@ $(COBJS) $(CPPOBJS) $(LIBS) $(SYSLIBS) - chmod 755 $@ - strip --strip-unneeded $@ -else - $(AR) rc $@ $(COBJS) $(CPPOBJS) -endif - -############################################## - -_clean_: - rm $(COBJS) $(CPPOBJS) $(TARGET) - -############################################## - -ifdef SHARED -FLEXTLIBINST=$(FLEXTSHLIB) -else -FLEXTLIBINST=$(FLEXTLIB) -endif - -$(FLEXTINC): - -mkdir -p $(FLEXTINC) - -$(FLEXTLIBINST): - -mkdir -p $(FLEXTLIBINST) - -_install_: $(FLEXTINC) $(FLEXTLIBINST) - install $(TARGET) $(FLEXTLIBINST) - install $(patsubst %,$(SRCDIR)/%,$(HDRS)) $(FLEXTINC) diff --git a/externals/grill/flext/buildsys/win/gnumake-cygwin.inc b/externals/grill/flext/buildsys/win/gnumake-cygwin.inc deleted file mode 100644 index 48155ff1..00000000 --- a/externals/grill/flext/buildsys/win/gnumake-cygwin.inc +++ /dev/null @@ -1,30 +0,0 @@ -############################################## - -OBJPATH=$(OUTPATH)/$(OUTSUB) -TARGETPATH=$(OBJPATH) -TARGET=$(TARGETPATH)/$(OUTNAME).$(EXT) - -############################################## - -CFLAGS += -mno-cygwin -LDFLAGS += -shared -mno-cygwin - -############################################## - -ifdef DEBUG -CFLAGS += -g -else -ifdef PROFILE -CFLAGS += -g -pg -LDFLAGS += -pg -else -LDFLAGS += -Wl,-S -endif -endif - -############################################## - -CSRCS=$(patsubst %.c,$(SRCDIR)/%.c,$(filter %.c,$(SRCS))) -CPPSRCS=$(patsubst %.cpp,$(SRCDIR)/%.cpp,$(filter %.cpp,$(SRCS))) -COBJS=$(patsubst %.c,$(OBJPATH)/%.o,$(filter %.c,$(SRCS))) -CPPOBJS=$(patsubst %.cpp,$(OBJPATH)/%.opp,$(filter %.cpp,$(SRCS))) diff --git a/externals/grill/flext/buildsys/win/gnumake-mingw-ext.inc b/externals/grill/flext/buildsys/win/gnumake-mingw-ext.inc deleted file mode 100644 index 3a998a5d..00000000 --- a/externals/grill/flext/buildsys/win/gnumake-mingw-ext.inc +++ /dev/null @@ -1,48 +0,0 @@ -# build class specific settings - -INCPATH += -I$(FLEXTINC) -LIBPATH += -L$(FLEXTLIB) -L$(FLEXTSHLIB) - -ifdef SHARED -LIBS += $(FLEXTSHLIB)/lib$(FLEXTNAME).dll -else -LIBS += -l$(FLEXTNAME) -endif - -############################################## - -# default target -_build_: $(TARGET) - -#$(CSRCS) $(CPPSRCS): $(patsubst %,$(SRCDIR)/%,$(HDRS)) -# touch $@ - -$(OUTPATH): - -mkdir $(subst /,\,$@) - -$(TARGETPATH): $(OUTPATH) - -mkdir $(subst /,\,$@) - -$(TARGETPATH)/%.opp : $(SRCDIR)/%.cpp - $(CXX) -c $(CFLAGS) $(DEFS) $(subst \,/,$(INCPATH)) $< -o $(subst /,\,$@) - -$(TARGETPATH)/%.o : $(SRCDIR)/%.c - $(CC) -c $(CFLAGS) $(DEFS) $(subst \,/,$(INCPATH)) $< -o $(subst /,\,$@) - -$(TARGET) :: $(TARGETPATH) - -$(TARGET) :: $(COBJS) $(CPPOBJS) - $(CXX) $(LDFLAGS) $(subst \,/,$(LIBPATH)) -o $(subst /,\,$@) $(subst /,\,$(COBJS) $(CPPOBJS) $(LIBS) $(SYSLIBS)) - -strip --strip-unneeded $@ - -############################################## - -_clean_: - -del /q $(subst /,\,$(TARGETPATH)/*.*) > nul - -rmdir /q $(subst /,\,$(TARGETPATH)) > nul - -############################################## - -_install_: - @if not exist $(subst /,\,$(INSTPATH)) -mkdir $(subst /,\,$(INSTPATH)) - copy $(subst /,\,$(TARGET) $(INSTPATH)) diff --git a/externals/grill/flext/buildsys/win/gnumake-mingw-flext.inc b/externals/grill/flext/buildsys/win/gnumake-mingw-flext.inc deleted file mode 100644 index 8cd51720..00000000 --- a/externals/grill/flext/buildsys/win/gnumake-mingw-flext.inc +++ /dev/null @@ -1,52 +0,0 @@ -# build class specific settings - -############################################## - -# default target -_build_: $(TARGET) - -#$(CSRCS) $(CPPSRCS): $(patsubst %,$(SRCDIR)/%,$(HDRS)) -# touch $@ - -$(OUTPATH): - -mkdir $(subst /,\,$@) - -$(TARGETPATH): $(OUTPATH) - -mkdir $(subst /,\,$@) - -$(TARGETPATH)/%.opp : $(SRCDIR)/%.cpp - $(CXX) -c $(CFLAGS) $(DEFS) $(subst \,/,$(INCPATH)) $< -o $(subst /,\,$@) - -$(TARGETPATH)/%.o : $(SRCDIR)/%.c - $(CC) -c $(CFLAGS) $(DEFS) $(subst \,/,$(INCPATH)) $< -o $(subst /,\,$@) - -$(TARGET) :: $(TARGETPATH) - -$(TARGET) :: $(COBJS) $(CPPOBJS) -ifdef SHARED - $(CXX) $(LDFLAGS) $(LIBPATH) -o $(subst /,\,$@) $(subst /,\,$(COBJS) $(CPPOBJS) $(LIBS)) - -strip --strip-unneeded $@ -else - $(AR) rc $@ $(COBJS) $(CPPOBJS) -endif - -############################################## - -_clean_: - -del /q $(subst /,\,$(TARGETPATH)/*.*) > nul - -rmdir /q $(subst /,\,$(TARGETPATH)) > nul - -############################################## - -ifdef SHARED -FLEXTLIBINST=$(FLEXTSHLIB) -else -FLEXTLIBINST=$(FLEXTLIB) -endif - -_install_:: - @if not exist $(subst /,\,$(FLEXTINC)) -mkdir $(subst /,\,$(FLEXTINC)) - @if not exist $(subst /,\,$(FLEXTLIBINST)) -mkdir $(subst /,\,$(FLEXTLIBINST)) - - copy $(subst /,\,$(TARGET) $(FLEXTLIBINST)) - -for %%i in ($(HDRS)) do @copy $(SRCDIR)\%%i $(subst /,\,$(FLEXTINC)) > nul diff --git a/externals/grill/flext/buildsys/win/gnumake-mingw.inc b/externals/grill/flext/buildsys/win/gnumake-mingw.inc deleted file mode 100644 index 82ee4381..00000000 --- a/externals/grill/flext/buildsys/win/gnumake-mingw.inc +++ /dev/null @@ -1,30 +0,0 @@ -############################################## - -OBJPATH=$(OUTPATH)\$(OUTSUB) -TARGETPATH=$(OBJPATH) -TARGET=$(TARGETPATH)\$(OUTNAME).$(EXT) - -############################################## - -CFLAGS += -mms-bitfields -mno-cygwin -LDFLAGS += -shared -mno-cygwin - -############################################## - -ifdef DEBUG -CFLAGS += -g -else -ifdef PROFILE -CFLAGS += -g -pg -LDFLAGS += -pg -else -LDFLAGS += -Wl,-S -endif -endif - -############################################## - -CSRCS=$(patsubst %.c,$(SRCDIR)/%.c,$(filter %.c,$(SRCS))) -CPPSRCS=$(patsubst %.cpp,$(SRCDIR)/%.cpp,$(filter %.cpp,$(SRCS))) -COBJS=$(patsubst %.c,$(OBJPATH)/%.o,$(filter %.c,$(SRCS))) -CPPOBJS=$(patsubst %.cpp,$(OBJPATH)/%.opp,$(filter %.cpp,$(SRCS))) diff --git a/externals/grill/flext/buildsys/win/max/config-cygwin.def b/externals/grill/flext/buildsys/win/max/config-cygwin.def deleted file mode 100644 index a4562a73..00000000 --- a/externals/grill/flext/buildsys/win/max/config-cygwin.def +++ /dev/null @@ -1,51 +0,0 @@ -# where is the Max/MSP application? -MAXAPPPATH=/cygdrive/c/program\ files/MaxMSP\ 4.5 - -# where are the Max/MSP common files? -MAXCOMPATH=/cygdrive/c/program\ files/common\ files/Cycling\ \'74 - - -# where are the Max/MSP SDK header files? -# you should have the latest version! -MAXSDKPATH=$(MAXAPPPATH)/maxmspsdk_win/4.5\ headers/c74support - -############################################################### - -############################################################### - -# where do/should the flext headers reside/be built? -FLEXTINC=$(MAXCOMPATH)/flext - -# where do/should the flext static libraries reside/be built? -FLEXTLIB=$(FLEXTINC) - -# where do/should the flext shared libraries reside/be built? -# (a good place is the MaxMSP program folder) -FLEXTSHLIB=$(MAXAPPPATH) - -############################################################### - -# where should the external be built? -# (path for temporary files) -OUTPATH=max-cygwin - -# where should the external be installed? -INSTPATH=$(MAXCOMPATH)/externals/flext - -# where should the initialization files be installed? -INITPATH=$(MAXCOMPATH)/init - -# where should the help files be installed? -HELPPATH=$(MAXAPPPATH)/max-help/flext - -############################################################### - -# user defined compiler flags -# (check if they match your system!) -UFLAGS=-msse -mfpmath=sse -ffast-math - -# user defined optimization flags -# (check if they match your system!) -OFLAGS=-O3 -# optimizations for Pentium 4 -OFLAGS+=-march=pentium4 diff --git a/externals/grill/flext/buildsys/win/max/config-mingw.def b/externals/grill/flext/buildsys/win/max/config-mingw.def deleted file mode 100644 index 9c9e3d4a..00000000 --- a/externals/grill/flext/buildsys/win/max/config-mingw.def +++ /dev/null @@ -1,42 +0,0 @@ -# where are the Max/MSP SDK header files? -# you should have the latest version! -MAXSDKPATH="%ProgramFiles%\MaxMSP 4.5/maxmspsdk_win/4.5 headers/c74support" - -############################################################### - -# where do/should the flext headers reside/be built? -FLEXTINC="%CommonProgramFiles%/Cycling '74/flext" - -# where do/should the flext static libraries reside/be built? -FLEXTLIB=$(FLEXTINC) - -# where do/should the flext shared libraries reside/be built? -# (a good place is the MaxMSP program folder) -FLEXTSHLIB="%ProgramFiles%\MaxMSP 4.5" - -############################################################### - -# where should the external be built? -# (path for temporary files) -OUTPATH=max-mingw - -# where should the external be installed? -INSTPATH="%CommonProgramFiles%/Cycling '74/externals/flext" - -# where should the initialization files be installed? -INITPATH="%CommonProgramFiles%/Cycling '74/init" - -# where should the help files be installed? -HELPPATH="%ProgramFiles%/MaxMSP 4.5/max-help/flext" - -############################################################### - -# user defined compiler flags -# (check if they match your system!) -UFLAGS=-msse -ffast-math - -# user defined optimization flags -# (check if they match your system!) -OFLAGS=-O3 -# optimizations for Pentium 4 -OFLAGS+=-march=pentium4 diff --git a/externals/grill/flext/buildsys/win/max/config-msvc.def b/externals/grill/flext/buildsys/win/max/config-msvc.def deleted file mode 100644 index f67b6b7f..00000000 --- a/externals/grill/flext/buildsys/win/max/config-msvc.def +++ /dev/null @@ -1,46 +0,0 @@ -# where are the Max/MSP SDK header files? -# you should have the latest version! -MAXSDKPATH="%ProgramFiles%\MaxMSP 4.5\maxmspsdk_win\4.5 headers\c74support" - -# where is MS VC++? -# (not necessary if the build is run with the compiler environment) -# MSVCPATH="%ProgramFiles%\Microsoft Visual Studio .NET 2003\Vc7" - -############################################################### - -# where do/should the flext headers reside/be built? -FLEXTINC="%CommonProgramFiles%\Cycling '74\flext" - -# where do/should the flext static libraries reside/be built? -FLEXTLIB=$(FLEXTINC) - -# where do/should the flext shared libraries reside/be built? -# (a good place is the MaxMSP program folder) -FLEXTSHLIB="%ProgramFiles%\MaxMSP 4.5" - -############################################################### - -# where should the external be built? -# (path for temporary files) -OUTPATH=max-msvc - -# where should the external be installed? -INSTPATH="%CommonProgramFiles%\Cycling '74\externals\flext" - -# where should the initialization files be installed? -INITPATH="%CommonProgramFiles%\Cycling '74\init" - -# where should the help files be installed? -HELPPATH="%ProgramFiles%\MaxMSP 4.5\max-help\flext" - -############################################################### - -# some user-definable flags -# (check if they match your system!) -OFLAGS=/Ox -# optimizations for Pentium 4 -#OFLAGS=$(OFLAGS) /G6 /arch:SSE - -# uncomment to link against dynamic C runtime libraries -# (don't use this if you want to distribute the built product) -#DYNAMIC=1 diff --git a/externals/grill/flext/buildsys/win/max/gnumake-cygwin-ext.inc b/externals/grill/flext/buildsys/win/max/gnumake-cygwin-ext.inc deleted file mode 100644 index 5df7e2f2..00000000 --- a/externals/grill/flext/buildsys/win/max/gnumake-cygwin-ext.inc +++ /dev/null @@ -1 +0,0 @@ -EXT=mxe diff --git a/externals/grill/flext/buildsys/win/max/gnumake-cygwin-flext.inc b/externals/grill/flext/buildsys/win/max/gnumake-cygwin-flext.inc deleted file mode 100644 index 60cd079a..00000000 --- a/externals/grill/flext/buildsys/win/max/gnumake-cygwin-flext.inc +++ /dev/null @@ -1,6 +0,0 @@ -ifdef SHARED -EXT=dll -else -EXT=a -endif - diff --git a/externals/grill/flext/buildsys/win/max/gnumake-cygwin.inc b/externals/grill/flext/buildsys/win/max/gnumake-cygwin.inc deleted file mode 100644 index f0ceced1..00000000 --- a/externals/grill/flext/buildsys/win/max/gnumake-cygwin.inc +++ /dev/null @@ -1,10 +0,0 @@ -DEFS += -DFLEXT_SYS=1 - -# fpack-struct should align to 2 bytes... can't specify that... -CFLAGS += -DWINVER=0x0501 -D_WIN32_WINNT=0x501 - -INCPATH += -I$(MAXSDKPATH)/max-includes -I$(MAXSDKPATH)/jit-includes -I$(MAXSDKPATH)/msp-includes -LIBPATH += -L$(MAXSDKPATH)/max-includes -L$(MAXSDKPATH)/jit-includes -L$(MAXSDKPATH)/msp-includes - -# these are both in MAXSDKPATH -SYSLIBS += -lMaxAPI -lMaxAudio diff --git a/externals/grill/flext/buildsys/win/max/gnumake-mingw-ext.inc b/externals/grill/flext/buildsys/win/max/gnumake-mingw-ext.inc deleted file mode 100644 index 04e59462..00000000 --- a/externals/grill/flext/buildsys/win/max/gnumake-mingw-ext.inc +++ /dev/null @@ -1 +0,0 @@ -EXT=mxe diff --git a/externals/grill/flext/buildsys/win/max/gnumake-mingw-flext.inc b/externals/grill/flext/buildsys/win/max/gnumake-mingw-flext.inc deleted file mode 100644 index 821d6fbc..00000000 --- a/externals/grill/flext/buildsys/win/max/gnumake-mingw-flext.inc +++ /dev/null @@ -1,6 +0,0 @@ -ifdef SHARED -EXT=dll -else -EXT=LIB -endif - diff --git a/externals/grill/flext/buildsys/win/max/gnumake-mingw.inc b/externals/grill/flext/buildsys/win/max/gnumake-mingw.inc deleted file mode 100644 index 1baa82f9..00000000 --- a/externals/grill/flext/buildsys/win/max/gnumake-mingw.inc +++ /dev/null @@ -1,12 +0,0 @@ -DEFS += -DFLEXT_SYS=1 - -# fpack-struct should align to 2 bytes... can't specify that... -CFLAGS += -DWINVER=0x0501 -D_WIN32_WINNT=0x501 -# suppress multiple symbol errors -LDFLAGS += -Wl,--allow-multiple-definition - -INCPATH += -I$(MAXSDKPATH)/max-includes -I$(MAXSDKPATH)/jit-includes -I$(MAXSDKPATH)/msp-includes -LIBPATH += -L$(MAXSDKPATH)/max-includes -L$(MAXSDKPATH)/jit-includes -L$(MAXSDKPATH)/msp-includes - -# these are both in MAXSDKPATH -SYSLIBS += -lMaxAPI -lMaxAudio diff --git a/externals/grill/flext/buildsys/win/max/nmake-msvc-ext.inc b/externals/grill/flext/buildsys/win/max/nmake-msvc-ext.inc deleted file mode 100644 index 04e59462..00000000 --- a/externals/grill/flext/buildsys/win/max/nmake-msvc-ext.inc +++ /dev/null @@ -1 +0,0 @@ -EXT=mxe diff --git a/externals/grill/flext/buildsys/win/max/nmake-msvc-flext.inc b/externals/grill/flext/buildsys/win/max/nmake-msvc-flext.inc deleted file mode 100644 index d30a7144..00000000 --- a/externals/grill/flext/buildsys/win/max/nmake-msvc-flext.inc +++ /dev/null @@ -1,5 +0,0 @@ -!ifdef SHARED -EXT=dll -!else -EXT=lib -!endif diff --git a/externals/grill/flext/buildsys/win/max/nmake-msvc.inc b/externals/grill/flext/buildsys/win/max/nmake-msvc.inc deleted file mode 100644 index 089e5a57..00000000 --- a/externals/grill/flext/buildsys/win/max/nmake-msvc.inc +++ /dev/null @@ -1,8 +0,0 @@ -DEFS=$(DEFS) /DFLEXT_SYS=1 -CFLAGS=$(CFLAGS) /Zp2 /DWINVER=0x0501 /D_WIN32_WINNT=0x501 - -INCPATH=$(INCPATH) /I$(MAXSDKPATH)\max-includes /I$(MAXSDKPATH)\jit-includes /I$(MAXSDKPATH)\msp-includes -LIBPATH=$(LIBPATH) /LIBPATH:$(MAXSDKPATH)\max-includes /LIBPATH:$(MAXSDKPATH)\jit-includes /LIBPATH:$(MAXSDKPATH)\msp-includes - -# these are both in MAXSDKPATH -LIBS=$(LIBS) maxapi.lib maxaudio.lib diff --git a/externals/grill/flext/buildsys/win/nmake-msvc-ext.inc b/externals/grill/flext/buildsys/win/nmake-msvc-ext.inc deleted file mode 100644 index 2a86155a..00000000 --- a/externals/grill/flext/buildsys/win/nmake-msvc-ext.inc +++ /dev/null @@ -1,43 +0,0 @@ -# build class specific settings - -INCPATH=$(INCPATH) /I$(FLEXTINC) -LIBPATH=$(LIBPATH) /LIBPATH:$(FLEXTLIB) -LIBS=$(LIBS) $(FLEXTNAME).lib - -############################################## - -# default target -_build_: $(TARGET) - -$(OUTPATH): - if not exist $@ mkdir $@ > nul - -$(TARGETPATH): $(OUTPATH) - if not exist $@ mkdir $@ > nul - -{$(SRCDIR)}.cpp{}.obj: - cl /c $(CFLAGS) $(DEFS) $(INCPATH) $** /Fo$(TARGETPATH)\$@ - -{$(SRCDIR)}.c{}.obj: - cl /c $(CFLAGS) $(DEFS) $(INCPATH) $** /Fo$(TARGETPATH)\$@ - -$(TARGET):: $(TARGETPATH) - -$(TARGET):: $(OBJS) - @cd $(TARGETPATH) - link /DLL $(LDFLAGS) $(LIBPATH) $(OBJS) $(LIBS) /out:$(@F) - @cd ..\.. - -############################################## -# remove build - -_clean_: - -del /q $(TARGETPATH)\*.* > nul - -rmdir /q $(TARGETPATH) > nul - -############################################## - -_install_: - @if not exist $(INSTPATH) mkdir $(INSTPATH) > nul - - copy $(TARGET) $(INSTPATH) > nul diff --git a/externals/grill/flext/buildsys/win/nmake-msvc-flext.inc b/externals/grill/flext/buildsys/win/nmake-msvc-flext.inc deleted file mode 100644 index 36a72f4d..00000000 --- a/externals/grill/flext/buildsys/win/nmake-msvc-flext.inc +++ /dev/null @@ -1,59 +0,0 @@ -# build class specific settings - -############################################## - -# default target -_build_: $(TARGET) - -$(OUTPATH): - if not exist $@ mkdir $@ > nul - -$(TARGETPATH): $(OUTPATH) - if not exist $@ mkdir $@ > nul - -{$(SRCDIR)}.cpp{}.obj: - cl /c /LD $(CFLAGS) $(DEFS) $(INCPATH) $** /Fo$(TARGETPATH)\$@ - -{$(SRCDIR)}.c{}.obj: - cl /c /LD $(CFLAGS) $(DEFS) $(INCPATH) $** /Fo$(TARGETPATH)\$@ - - -$(TARGET):: $(TARGETPATH) - -$(TARGET):: $(OBJS) - @cd $(TARGETPATH) -!ifdef SHARED - link /DLL $(LDFLAGS) $(LIBPATH) $(OBJS) $(LIBS) /out:$(@F) -!else - lib /OUT:$(@F) $(OBJS) -!endif - @cd ..\.. - -############################################## - -# remove build -_clean_: - -del /q $(TARGETPATH)\*.* > nul - -rmdir /q $(TARGETPATH) > nul - -############################################## - -!ifdef SHARED -FLEXTLIBINST=$(FLEXTSHLIB) -!else -FLEXTLIBINST=$(FLEXTLIB) -!endif - -_install_: -# create folders - @if not exist $(FLEXTINC) mkdir $(FLEXTINC) > nul - @if not exist $(FLEXTLIB) mkdir $(FLEXTLIB) > nul - @if not exist $(FLEXTLIBINST) mkdir $(FLEXTLIBINST) > nul - - copy $(TARGET) $(FLEXTLIBINST) > nul -!ifdef SHARED -# copy import library - copy $(TARGET:.dll=.lib) $(FLEXTLIB) > nul -!endif -# copy headers - for %%i in ($(HDRS)) do @copy $(SRCDIR)\%%i $(FLEXTINC) > nul diff --git a/externals/grill/flext/buildsys/win/nmake-msvc-shlib.inc b/externals/grill/flext/buildsys/win/nmake-msvc-shlib.inc deleted file mode 100644 index 3b436599..00000000 --- a/externals/grill/flext/buildsys/win/nmake-msvc-shlib.inc +++ /dev/null @@ -1,45 +0,0 @@ -# build class specific settings - -INCPATH=$(INCPATH) /I$(FLEXTINC) -LIBPATH=$(LIBPATH) /LIBPATH:$(FLEXTLIB) -LIBS=$(LIBS) $(FLEXTNAME).lib - -############################################## - -# default target -_build_: $(TARGET) - -$(OUTPATH): - if not exist $@ mkdir $@ > nul - -$(TARGETPATH): $(OUTPATH) - if not exist $@ mkdir $@ > nul - -{$(SRCDIR)}.cpp{}.obj: - cl /c $(CFLAGS) $(DEFS) $(INCPATH) $** /Fo$(TARGETPATH)\$@ - -{$(SRCDIR)}.c{}.obj: - cl /c $(CFLAGS) $(DEFS) $(INCPATH) $** /Fo$(TARGETPATH)\$@ - -$(TARGET):: $(TARGETPATH) - -$(TARGET):: $(OBJS) - @cd $(TARGETPATH) - link /DLL $(LDFLAGS) $(LIBPATH) $(OBJS) $(LIBS) /OUT:$(@F) - @cd ..\.. - -############################################## -# remove build - -_clean_: - -del /q $(TARGETPATH)\*.* > nul - -rmdir /q $(TARGETPATH) > nul - -############################################## - -_install_: - @if not exist $(FLEXTSHLIB) mkdir $(FLEXTSHLIB) > nul - - copy $(TARGET) $(FLEXTSHLIB) > nul -# copy import library - copy $(TARGET:.dll=.lib) $(FLEXTSHLIB) > nul diff --git a/externals/grill/flext/buildsys/win/nmake-msvc.inc b/externals/grill/flext/buildsys/win/nmake-msvc.inc deleted file mode 100644 index d19fd44e..00000000 --- a/externals/grill/flext/buildsys/win/nmake-msvc.inc +++ /dev/null @@ -1,59 +0,0 @@ -!ifdef MSVCPATH -INCPATH=$(INCPATH) /I$(MSVCPATH)\include -LIBPATH=$(LIBPATH) /LIBPATH:$(MSVCPATH)\lib -!endif - -############################################## - -OBJPATH=$(OUTPATH)\$(OUTSUB) -TARGETPATH=$(OBJPATH) -TARGET=$(TARGETPATH)\$(OUTNAME).$(EXT) - -############################################## -# use precompiled headers (automatic mode) - -!ifdef PRECOMPILE -CFLAGS=$(CFLAGS) /YX$(PRECOMPILE) /Fp$(OBJPATH)\precompiled.pch -!endif - -############################################## - -# create code for DLL -CFLAGS=$(CFLAGS) /LD - -# enable exception handling and RTTI -CFLAGS=$(CFLAGS) /EHsc /GR - -# no banner -CFLAGS=$(CFLAGS) /nologo -LDFLAGS=$(LDFLAGS) /nologo - -############################################## - -!ifdef DEBUG - -!ifdef DYNAMIC -CFLAGS=$(CFLAGS) /MDd -!else -CFLAGS=$(CFLAGS) /MTd -!endif - -LDFLAGS=$(LDFLAGS) /DEBUG - -!else - -!ifdef DYNAMIC -CFLAGS=$(CFLAGS) /MD -!else -CFLAGS=$(CFLAGS) /MT -!endif - -LDFLAGS=$(LDFLAGS) /INCREMENTAL:NO - -!endif - -############################################## -# convert both *.c and *.cpp - -OBJSTMP= $(SRCS:.c=.obj) -OBJS= $(OBJSTMP:.objpp=.obj) diff --git a/externals/grill/flext/buildsys/win/pd/bmake-bcc-ext.inc b/externals/grill/flext/buildsys/win/pd/bmake-bcc-ext.inc deleted file mode 100644 index 26bcf06e..00000000 --- a/externals/grill/flext/buildsys/win/pd/bmake-bcc-ext.inc +++ /dev/null @@ -1 +0,0 @@ -EXT=dll diff --git a/externals/grill/flext/buildsys/win/pd/bmake-bcc-flext.inc b/externals/grill/flext/buildsys/win/pd/bmake-bcc-flext.inc deleted file mode 100644 index d30a7144..00000000 --- a/externals/grill/flext/buildsys/win/pd/bmake-bcc-flext.inc +++ /dev/null @@ -1,5 +0,0 @@ -!ifdef SHARED -EXT=dll -!else -EXT=lib -!endif diff --git a/externals/grill/flext/buildsys/win/pd/bmake-bcc-shlib.inc b/externals/grill/flext/buildsys/win/pd/bmake-bcc-shlib.inc deleted file mode 100644 index b2234c5b..00000000 --- a/externals/grill/flext/buildsys/win/pd/bmake-bcc-shlib.inc +++ /dev/null @@ -1 +0,0 @@ -EXT=dll diff --git a/externals/grill/flext/buildsys/win/pd/bmake-bcc.inc b/externals/grill/flext/buildsys/win/pd/bmake-bcc.inc deleted file mode 100644 index a15a75e6..00000000 --- a/externals/grill/flext/buildsys/win/pd/bmake-bcc.inc +++ /dev/null @@ -1,12 +0,0 @@ -DEFS=$(DEFS) /DFLEXT_SYS=2 /DPD - -!ifdef WINNT -DEFS=$(DEFS) /D_WIN32_WINNT=0x500 -!endif - -############################################## - -INCPATH=$(INCPATH) -I$(PDPATH)\src - -# these are both in FLEXTPATH -LIBS=$(LIBS) pd.lib pthreadVC.lib diff --git a/externals/grill/flext/buildsys/win/pd/config-bcc.def b/externals/grill/flext/buildsys/win/pd/config-bcc.def deleted file mode 100644 index 54e8397d..00000000 --- a/externals/grill/flext/buildsys/win/pd/config-bcc.def +++ /dev/null @@ -1,38 +0,0 @@ -# where is the PD installation? -# (this should point to the main folder, which has a "src" subfolder) -PDPATH="c:\program files\pd" - -# where is BorlandC++? -BCCPATH="c:\program files\bcc55" - -############################################################### - -# where do/should the flext headers reside/be built? -FLEXTINC=$(PDPATH)\flext - -# where do/should the flext static libraries reside/be built? -FLEXTLIB=$(FLEXTINC) - -# where do/should the flext shared libraries reside/be built? -FLEXTSHLIB=$(PDPATH)\bin - -############################################################### - -# where should the external be built? -OUTPATH=pd-bcc - -# where should the external be installed? -INSTPATH=$(PDPATH)\extra - -############################################################### - -# user defined compiler flags -# (check if they match your system!) -UFLAGS= - -# user defined optimization flags -# (check if they match your system!) -OFLAGS=-6 -O2 -OS -ff -d - -# comment if you want to compile for Windows 95/98/ME -WINNT=1 diff --git a/externals/grill/flext/buildsys/win/pd/config-cygwin.def b/externals/grill/flext/buildsys/win/pd/config-cygwin.def deleted file mode 100644 index 6c35151a..00000000 --- a/externals/grill/flext/buildsys/win/pd/config-cygwin.def +++ /dev/null @@ -1,34 +0,0 @@ -# where is the PD installation? -# (this should point to the main folder, which has a "src" subfolder) -PDPATH=/cygdrive/c/program files/pd - -############################################################### - -# where do/should the flext headers reside/be built? -FLEXTINC=$(PDPATH)/flext - -# where do/should the flext static libraries reside/be built? -FLEXTLIB=$(FLEXTINC) - -# where do/should the flext shared libraries reside/be built? -FLEXTSHLIB=$(PDPATH)/bin - -############################################################### - -# where should the external be built? -OUTPATH=pd-cygwin - -# where should the external be installed? -INSTPATH=$(PDPATH)/extra - -############################################################### - -# user defined compiler flags -# (check if they match your system!) -UFLAGS=-msse -mfpmath=sse -ffast-math - -# user defined optimization flags -# (check if they match your system!) -OFLAGS=-O3 -# optimizations for Pentium 4 -OFLAGS+=-march=pentium4 diff --git a/externals/grill/flext/buildsys/win/pd/config-mingw.def b/externals/grill/flext/buildsys/win/pd/config-mingw.def deleted file mode 100644 index bed53e35..00000000 --- a/externals/grill/flext/buildsys/win/pd/config-mingw.def +++ /dev/null @@ -1,37 +0,0 @@ -# where is the PD installation? -# (this should point to the main folder, which has a "src" subfolder) -PDPATH="%ProgramFiles%\pd" - -############################################################### - -# where do/should the flext headers reside/be built? -FLEXTINC=$(PDPATH)\flext - -# where do/should the flext static libraries reside/be built? -FLEXTLIB=$(FLEXTINC) - -# where do/should the flext shared libraries reside/be built? -FLEXTSHLIB=$(PDPATH)\bin - -############################################################### - -# where should the external be built? -OUTPATH=pd-mingw - -# where should the external be installed? -INSTPATH=$(PDPATH)\extra - -############################################################### - -# user defined compiler flags -# (check if they match your system!) -UFLAGS=-msse -mfpmath=sse -ffast-math - -# user defined optimization flags -# (check if they match your system!) -OFLAGS=-O3 -# optimizations for Pentium 4 -OFLAGS+=-march=pentium4 - -# comment if you want to compile for Windows 95/98/ME -WINNT=1 diff --git a/externals/grill/flext/buildsys/win/pd/config-msvc.def b/externals/grill/flext/buildsys/win/pd/config-msvc.def deleted file mode 100644 index 49137ef5..00000000 --- a/externals/grill/flext/buildsys/win/pd/config-msvc.def +++ /dev/null @@ -1,46 +0,0 @@ -# where is the PD installation? -# (this should point to the main folder, which has a "src" subfolder) -PDPATH="%ProgramFiles%\pd" - -# where is MS VC++? -# (not necessary if the build is run with the compiler environment) -# MSVCPATH="%ProgramFiles%\Microsoft Visual Studio .NET 2003\Vc7" - -############################################################### - -# where do/should the flext headers reside/be built? -FLEXTINC=$(PDPATH)\flext - -# where do/should the flext static libraries reside/be built? -FLEXTLIB=$(FLEXTINC) - -# where do/should the flext shared libraries reside/be built? -FLEXTSHLIB=$(PDPATH)\bin - -############################################################### - -# where should the external be built? -# (relative one-level subpath to project folder) -OUTPATH=pd-msvc - -# where should externals be installed? -INSTPATH=$(PDPATH)\extra - -############################################################### - -# user defined compiler flags -# (check if they match your system!) -UFLAGS= - -# user defined optimization flags -# (check if they match your system!) -OFLAGS=/Ox -# optimizations for Pentium 4 -OFLAGS=$(OFLAGS) /G6 /arch:SSE - -# comment if you want to compile for Windows 95/98/ME -WINNT=1 - -# uncomment to link against dynamic C runtime libraries -# (don't use this if you want to distribute the built product) -#DYNAMIC=1 diff --git a/externals/grill/flext/buildsys/win/pd/gnumake-cygwin-ext.inc b/externals/grill/flext/buildsys/win/pd/gnumake-cygwin-ext.inc deleted file mode 100644 index 26bcf06e..00000000 --- a/externals/grill/flext/buildsys/win/pd/gnumake-cygwin-ext.inc +++ /dev/null @@ -1 +0,0 @@ -EXT=dll diff --git a/externals/grill/flext/buildsys/win/pd/gnumake-cygwin-flext.inc b/externals/grill/flext/buildsys/win/pd/gnumake-cygwin-flext.inc deleted file mode 100644 index e64eb6c5..00000000 --- a/externals/grill/flext/buildsys/win/pd/gnumake-cygwin-flext.inc +++ /dev/null @@ -1,5 +0,0 @@ -ifdef SHARED -EXT=dll -else -EXT=a -endif diff --git a/externals/grill/flext/buildsys/win/pd/gnumake-cygwin-shlib.inc b/externals/grill/flext/buildsys/win/pd/gnumake-cygwin-shlib.inc deleted file mode 100644 index b2234c5b..00000000 --- a/externals/grill/flext/buildsys/win/pd/gnumake-cygwin-shlib.inc +++ /dev/null @@ -1 +0,0 @@ -EXT=dll diff --git a/externals/grill/flext/buildsys/win/pd/gnumake-cygwin.inc b/externals/grill/flext/buildsys/win/pd/gnumake-cygwin.inc deleted file mode 100644 index dca95023..00000000 --- a/externals/grill/flext/buildsys/win/pd/gnumake-cygwin.inc +++ /dev/null @@ -1,6 +0,0 @@ -DEFS += -DFLEXT_SYS=2 -DPD - -INCPATH += -I$(PDPATH)/src - -LIBS += $(PDPATH)/bin/pthreadVC.dll -SYSLIBS += $(PDPATH)/bin/pd.dll diff --git a/externals/grill/flext/buildsys/win/pd/gnumake-mingw-ext.inc b/externals/grill/flext/buildsys/win/pd/gnumake-mingw-ext.inc deleted file mode 100644 index 26bcf06e..00000000 --- a/externals/grill/flext/buildsys/win/pd/gnumake-mingw-ext.inc +++ /dev/null @@ -1 +0,0 @@ -EXT=dll diff --git a/externals/grill/flext/buildsys/win/pd/gnumake-mingw-flext.inc b/externals/grill/flext/buildsys/win/pd/gnumake-mingw-flext.inc deleted file mode 100644 index e64eb6c5..00000000 --- a/externals/grill/flext/buildsys/win/pd/gnumake-mingw-flext.inc +++ /dev/null @@ -1,5 +0,0 @@ -ifdef SHARED -EXT=dll -else -EXT=a -endif diff --git a/externals/grill/flext/buildsys/win/pd/gnumake-mingw-shlib.inc b/externals/grill/flext/buildsys/win/pd/gnumake-mingw-shlib.inc deleted file mode 100644 index b2234c5b..00000000 --- a/externals/grill/flext/buildsys/win/pd/gnumake-mingw-shlib.inc +++ /dev/null @@ -1 +0,0 @@ -EXT=dll diff --git a/externals/grill/flext/buildsys/win/pd/gnumake-mingw.inc b/externals/grill/flext/buildsys/win/pd/gnumake-mingw.inc deleted file mode 100644 index d3b6cedb..00000000 --- a/externals/grill/flext/buildsys/win/pd/gnumake-mingw.inc +++ /dev/null @@ -1,13 +0,0 @@ -DEFS += -DFLEXT_SYS=2 -DPD - -ifdef WINNT -CFLAGS += -D_WIN32_WINNT=0x500 -endif - -############################################## - -INCPATH += -I$(PDPATH)/src -LIBPATH += -L$(PDPATH)/bin - -# these are both in PDPATH -LIBS += -lpd -lpthreadVC diff --git a/externals/grill/flext/buildsys/win/pd/nmake-msvc-ext.inc b/externals/grill/flext/buildsys/win/pd/nmake-msvc-ext.inc deleted file mode 100644 index 26bcf06e..00000000 --- a/externals/grill/flext/buildsys/win/pd/nmake-msvc-ext.inc +++ /dev/null @@ -1 +0,0 @@ -EXT=dll diff --git a/externals/grill/flext/buildsys/win/pd/nmake-msvc-flext.inc b/externals/grill/flext/buildsys/win/pd/nmake-msvc-flext.inc deleted file mode 100644 index d30a7144..00000000 --- a/externals/grill/flext/buildsys/win/pd/nmake-msvc-flext.inc +++ /dev/null @@ -1,5 +0,0 @@ -!ifdef SHARED -EXT=dll -!else -EXT=lib -!endif diff --git a/externals/grill/flext/buildsys/win/pd/nmake-msvc-shlib.inc b/externals/grill/flext/buildsys/win/pd/nmake-msvc-shlib.inc deleted file mode 100644 index b2234c5b..00000000 --- a/externals/grill/flext/buildsys/win/pd/nmake-msvc-shlib.inc +++ /dev/null @@ -1 +0,0 @@ -EXT=dll diff --git a/externals/grill/flext/buildsys/win/pd/nmake-msvc.inc b/externals/grill/flext/buildsys/win/pd/nmake-msvc.inc deleted file mode 100644 index 89fba829..00000000 --- a/externals/grill/flext/buildsys/win/pd/nmake-msvc.inc +++ /dev/null @@ -1,13 +0,0 @@ -DEFS=$(DEFS) /DFLEXT_SYS=2 /DPD - -!ifdef WINNT -DEFS=$(DEFS) /D_WIN32_WINNT=0x500 -!endif - -############################################## - -INCPATH=$(INCPATH) /I$(PDPATH)\src -LIBPATH=$(LIBPATH) /LIBPATH:$(PDPATH)\bin - -# these are both in PDPATH -LIBS=$(LIBS) pd.lib pthreadVC.lib diff --git a/externals/grill/flext/changes.txt b/externals/grill/flext/changes.txt deleted file mode 100644 index fef5d86c..00000000 --- a/externals/grill/flext/changes.txt +++ /dev/null @@ -1,355 +0,0 @@ -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2007 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - ----------------------------------------------------------------------------- - -Version history: - -0.5.1: -- optimizations for message handling and memory footprint -- enhanced build system for cygwin -- added GetCanvasDir to retrieve folder in which the patcher resides -- better handling of click callback -- more compatible handling of attributes in patcher (hiding is now an option - define FLEXT_ATTRHIDE) -- added header file flfeatures.h for compile-time detection of version-specific features -- typed flext::NewAligned allocator -- fixed severe Altivec bug (load unaligned)... thanks to Ian Ollmann -- restructured initialization and finalization (esp. Max DSP stuff) -- real class names now also reflect debug mode (like in flext_base_shared_d) -- cleaned up internals (like Max/MSP typedefs) -- fixed coexistence of message and signal objects in Max/MSP object libraries -- fixes for pthreads version 2 -- deprecated FLEXT_NOGLOBALNEW in favor of FLEXT_USE_CMEM (either global new/delete operators or C library memory allocation) -- fixing uninitialized pointer (first inlet pointer) -- added message bundle functionality (to send more messages over the thread boundary to arrive at the same logical time) -- fixed dangerous spot (also memory leak) with message queuing -- fixed buggy freeing of memory for AtomListStatic -- optimizations around method registration -- preprocessor symbol FLEXT_COMPATIBLE - if defined don't implement specialities of either PD or Max/MSP -- Max: fixed reported bug (#67), where list elements are distributed over inlets -- added thisParent type, which refers to the class from which the current flext class is derived (as given in FLEXT_HEADER) -- bang method can also by added with FLEXT_(C)ADDMETHOD (FLEXT_(C)ADDBANG is still an alias) -- attribute generation is now determined exclusively by each object class setup (not library is before) -- more robust pack setting for Max/MSP @ Windows -- should work with Mac/Intel (still untested!) -- added new FLEXT_HEADER macros to enable class templates -- more ToOut/Sys* methods -- fixed help name definition at class setup -- added gcc branch hinting -- PD: possibility to create DSP classes without main DSP inlet (use e.g. FLEXT_DSP0_NEW) -- fixed atom sorting (symbols were sorted by pointer, not by content) -- updated build system to handle UB on OSX (including architecture-specific compiler flags) - -0.5.0: -- fixes for 64 bit builds (size_t is integer type of pointer size) -- finally added a autoconf system (many many thanks to Tim Blechmann) -- more character escapes for attribute editor -- fixed the attribute editor for 0.38, stopped redundant transfer of script code -- show saveable attributes on object select -- fix for long attribute dialogs -- dropped support for Max UI objects -- added global system locking -- added general atom outlet functions To{Sys,Out,Queue}Atom -- new build system for flext and flext-based externals -- flags for object construction and destruction phase (Initing() and Exiting()) -- reconsidered flext::buffer::Update -- enhanced buffer handling -- support for buffer locking (flext::buffer::Lock() and Unlock()) - it's a must for Max/MSP at least -- use new PD idle callback for queues messages (currently in devel_0_38) -- fixed bug with unregistering for bound symbols -- removed virtual m_assist function (which was only useful for Max)... stick to static assist strings -- removed virtual flext_dsp::m_enable function (which wasn't present for Max/MSP) -- added m_click method which gets called on alt-click (PD) resp. double clicks (Max) onto the object box -- in ToOut check if we are inside dsp (and use ToQueue then...) -- some restructuring and use symbols (rather than char *) natively for AddMethod* and AddAttrib* functions -- added some more SIMD functionality -- fixes to flext::Timer::At method -- eliminated misleading flext_dsp::ChannelsIn and ChannelsOut -- added lock-free Lifo and Fifo structures and used it with message queueing and thread management -- eliminated default "help" (m_help) method... should be implemented in the flext-based object -- changed virtual callback names m_loadbang, m_method_, m_dsp, m_signal, m_click to CbLoadbang, CbMethodResort, CbDsp, CbSignal, CbClick -- replaced memory-intensive STL maps by custom-made vector/map-monster (should be fast!) -- fixed bug for symbol messages into non-left inlets -- better timers for Windows -- slimmed down object data structures and changed initialization code accordingly -- digest one-element float/int/symbol/pointer list messages as single atoms -- simplified message analysis -- made flext::Forward thread safe - -0.4.7: -- added flext::GetBool (just because flext::GetInt has been there for a while) -- added bool to usable types for creation arguments -- protection for SIMD routines with count=0 -- support exceptions for setup functions, object creation and destruction, method handling -- small fixes for MSVC6 incompatibilites -- fixes for Max 4.5 headers -- removed Mach-O/CFM glue stuff again and added makefiles for Max/MachO -- in flext::StopThread don't wait for thread to have stopped! -- support PD tooltips (only in devel branch at the moment) -- attribute editor: added individual apply buttons -- attribute editor: added escaping for , and ; -- attribute editor: zoomed editor accepts , as newline separator -- attribute editor: close editor window on object destruction -- fixed $0-arguments in attribute saving -- introducing ring buffer for message queue (thanks to Tom Schouten) -- printing of atoms into buffer with better error checking - -0.4.6: -- added a text edit window for list attributes -- finally use global allocator operators (MFC doesn't like it but who cares) -- fixed entry of local variables with attribute editor -- help window for attribute editor -- appended lacking ~ for tilde object help patches -- uniform STL container for all kinds of attribute, method, class handling -- support for MinGW -- added flext_obj::CanvasArgs -- fixed small problem with buffer->Valid() on startup -- fixed buffer overrun problems with flext::post, flext::error... (but still to improve) -- improved handling of patcher arguments -- also initialize flext::sym_int as MakeSymbol("int") for PD (since the variable is there anyhow) -- fixed bug with attribute dumping -- default arguments for object construction (types float0,int0,t_symtype0 for FLEXT_NEW*) -- added flext::sym__ for empty symbol "" - -0.4.5: -- added some more SIMD functions -- PD attributes: added a TCL/TK editor dialog ("properties") and save attributes to patcher -- fixed wrong returned result of flext::buffer::set function -- fix for linux static exported function name-clash (individual linker namings for exported flext base classes) -- made message queue stuff global (static) for all flext objects -- added flext_base::DumpAttrib to send an attribute value to the attribute outlet -- added "getmethods" message (for attribute-enabled externals) to list methods for a specified inlet (default = 0) -- "getattributes" or "getmethods" output lists are now alphabethically sorted -- flext::StopThread function to terminate running threads (started with LaunchThread) -- added flext::CmpAtom and AtomList::operator < methods ... useful for using lists as keys for STL -- make use of new PD thread locking (PD functions sys_lock() and sys_unlock()), queue messages only if necessary -- better FLEXT_OSAPI resolution -- ListAttributes (or the getattributes message) now lists attributes in the order they were created (first class, then object scope) -- enforcing usage of STL -- explicit boolean attributes (great for attribute editor layout!) -- flext_dsp reported wrong inlet/outlet count (CntInSig, CntOutSig functions) -- added support for patcher arguments for attributes (use # instead of $ to save them with a patch) -- moved memory functions and console output from flext to super-base-class flext_root and derived all helper classes from that -- changed FLEXT_THREAD_X: wrappers doesn't delete the passed data pointer anymore -> the called method is responsible for that (and it knows the type....) -- enabled binding of more than one function to a symbol and added flext_base::GetBoundMethod -- native support for Windows threading model - -0.4.4: -- fixed deadly bug for Max/MSP method-to-symbol-binding proxies -- some fixes for CodeWarrior Mach-O compilation -- fixed destruction bug for hashed "item arrays" -- added flext_base::ToSelf* methods for queued (deferred) self messaging -- deleted flext::buffer console outputs for undefined arrays/buffer~s: should be done by externals -- a few changes for the flext shared library -- tiny update for PD 0.37 header file usage -- fixed a bug associated to attribute argument lists -- added functions for version number and string (flext::Version and flext::VerStr, mainly for usage of a shared flext library) -- flext_base::UnbindMethod returns user data -- fixed compilation problem with t_symbol-type attributes -- added methods for sending boolean values (ToOutBool, ToQueueBool, ToSelfBool) - -0.4.3: -- added forgotten flext_base::ToQueueString method -- added timer functions and flext::Timer class -- added functions for SIMD support -- fixed race condition when using LaunchThread in a setup function (now waiting for thread helper to initialize) -- added flext::Forward function to send messages to bound symbols -- added "zero" flag to flext::buffer resize operation -- fixed bug for Max/MSP buffer resize with preservation of contents -- fixed bug with thread initialization (caused PD@OSX to crash on startup) -- flext::setup is only run once now -- fixed creation bug with objects that have attributes but no outlets -- added FLEXT_BINDMETHOD,FLEXT_UNBINDMETHOD to bind a method to a symbol -- fixed bug with hard thread termination (of incooperative threads) - -0.4.2: -- started port for jMax -- moved CLASS_MAINSIGNALIN to class scope (fixed "float method overwritten" warning) -- unix makefiles: CXX should be commented out if standard (to enable environmental settings) -- introduced default returns for the different flext::GetA* functions -- pragma for Metrowerks compilers: enumsalwaysint on, bool on -- MaxMSP: added assist string for attribute outlets -- added new POSIX for ThrCond::TimedWait (but still have to find out when to enable it....) -- added CopySamples and ZeroSamples -- fixed bug for DSP object with zero signal inlets in PD -- added validity check for sample buffers - -0.4.1: -- full port for Max@OSX -- completely redesigned message and attribute handling: now hashed and much more efficient -- greatly enhanced object creation and destruction (esp. for library objects) -- class setup functions now take t_classid type arg... this is BACKWARDS-INCOMPATIBLE for Max/MSP -- added some prerequisites for usage of flext as a shared library -- completed Max/MSPs inlet/outlet assist description functionality -- Max/MSP signal objects: fixed bug of reporting wrong number of inlets -- put overloaded new/delete into flext support class -- introduced "Finalize" virtual method, called after all "Init" methods -- fixed crash issue in flext_dsp when there are NO signal inlets or outlets defined - (this is possibly only a problem for the signal2 tutorial example) -- added flext::GetType(t_atom &), flext::ZeroMem -- put the clock_delay for the message queue inside the thread-locked area - Ok for the actual object, but PD has to be thread-safe here as well -- BACKWARDS-INCOMPATIBLE CHANGE: flext_base::m_methodmain and flext_base::m_method_ have got - const modifiers.... these virtual methods are used rarely (except for example in py/pyext) -- now MUCH cleaner platform identification... FLEXT_SYS,FLEXT_OS,FLEXT_CPU definitions -- also FLEXT_DEBUG for debug build -- SndObjs: virtual FreeObject routine is now called at destruction (by parent class), derived class doesn't need to call it! -- SndObjs: fixed typo (numbers of output slots was wrong) and init bug -- STK: added support for STK object classes (flstk.{h,cpp}) -- introduced a helper thread for launching flext threads in the background -- threads are now handled on class (as opposed to object) level -- threads can now be terminated separately -- put more flext functions into flext static class -- replaced ChangePriority by RefPriority -- fixed setting of priorities... problems were caused by a compiler bug (MSVC 6) -- made a portable threading interface with support for threading libraries other than pthreads (FLEXT_THREADS defined as FLEXT_THR_*) -- implemented threading support with the MacOS MP thread library -- stripped the ThrMutex and ThrCond classes of non-portable (and irrelevant) functionality -- simplified "ToQueue*" and threaded "ToOut*" message queue mechanism for Max/MSP -- deprecated FLEXT_ADDMETHOD_V and FLEXT_ADDMETHOD_A definitions which only lead to confusion -- BACKWARDS-INCOMPATIBLE CHANGE: flext_sndobj::NewObjs must return a boolean!! - -0.4.0: -- the use of the const keyword is enforced (e.g. the preferred type for symbols is now "const t_symbol *") - - there _might_ be some problems with sensitive compilers -- introduced Max/Jitter-like attribute functionality ("@value" command line, "getvalue" get and "value" set functions) -- introduced a flext static class for general flext functions (to clean up the flext_base class) -- creation argument handling is now done by flext - no more weird PD re-ordering of arguments -- no more support for the Apple MPW compiler - MacOS9 is dying anyway... -- calling SetupInOut() has become obsolete - - flext creates all inlets/outlets by itself after the constructor has finished - - this implies that CntIn(),CntOut() and the outlet pointers are not valid in the constructor - - there is a virtual bool Init() function that may be used for such initialization -- completely redesigned FLEXT_NEW macros, usage of dynamic classes (in fllib.cpp) -- added ToQueue* functions - like ToOut* but messages or not directly sent (well suited for deadlock situations) -- introduced additional per-class methods and attributes (just like it ever was in Max and PD) -- fixed potentially dangerous typo in flext.cpp - (was: FLEXT_THREAD instead of FLEXT_THREADS) -- added OSX/darwin support (originally done by Adam T. Lindsay) -- SndObj interface now also available for cygwin and BCC -- added prepend and append functions to AtomList class -- added IsNothing, SetNothing, CanbeBool and GetABool functions -- eliminated the remaining Get*Flint and Set*Flint functions -- added/completed Is/Canbe/Get/Set for pointer atoms -- added print/scan functions for atoms -- fixed anything outlets for Max/MSP... for some strange reason this severe bug has not had severe consequences.... - -0.3.3: -- PD: fixed bug for DSP objects having no signal inlets - this also enables floats into a non-signal leftmost inlet -- revisited priority stuff for detached threads -- Bind/unbind functions for flext classes (in MaxMSP only one object can be bound) -- made "t_symtype" another synonym for "t_symbol *" -- added forgotten dsp_free function for MaxMSP -- fixed forgotten __class__ member for MaxMSP libraries -- changed basic MaxMSP object to t_pxbox (ok, a bit more memory is used....) -- MaxMSP library can now be loaded from startup folder (but can't use aliases) -- if no handler is found for pure anything (just symbol, no args...) try list handler -- added interface for SndObj (http://www.may.ie/academic/music/musictec/SndObj/ ) - -0.3.2: -- Doxygen generated inline documentation / functional reference -- added some more functionality to the AtomAnything class -- bugfix for threaded methods with var list or anything arguments -- added threaded method for arbitrary (void *) data structs -- ThrMutex: added lock count functions Push() and Pop() -- eliminated potentially dangerous SetThing,GetThing and introduced DoBind,DoUnbind,GetBound instead -- fixed severe bug with the current threads list -- add path specification possibility for help symbols (in FLEXT_NEW*) -- use pthread_attr and DETACHED flag - -0.3.1: -- added some more functionality to the AtomList class -- fixed forgotten Sleep implementation in pd@unix -- reorganized file structure and config/make procedures - -0.3.0: -- added CYGWIN support - -- added threaded methods along with a message queue for ToOut* functions (very unstable for MaxMSP!) - to use threads compile flext with FLEXT_THREADS definition -- check/update function for buffer change (resize etc.) -- description text for inlets/outlets (e.g. for MaxMSPs assist function) - not fully implemented -- added buffer resize functions flext_base::buffer::Frames(int,bool) -- added some utility functions: Sleep, CopyAtom, CopyList -- added List manipulation classes: AtomList, AtomAnything -- Alias object names (simply specify with FLEXT_NEW*, separated by whitespace) -- float messages - int method is called if there is no float method -- MaxMSP: int messages - float method is called if there is no int method -- fixed type warning for class constructors with int arguments in PD -- fixed severe bug concerning symbol methods -- MaxMSP: use critical sections for message output (for more safety in overdrive mode) -- PD: default/manual definition of help file by flext_base::DefineHelp -- added GetThing/SetThing to access t_symbol's s_thing data member - -- introduced FLEXT_NEW_DSP* and FLEXT_LIB_DSP* for FLEXT_NEW_TILDE* and FLEXT_LIB_TILDE* (the latter become deprecated) -- all variable argument defs (aka gimme) now have a V instead of G (e.g. FLEXT_NEW_V) - -0.2.3: -- restructured files and started usable inline documentation -- found that there was no method to output a bang?! Ugh! -> corrected -- finally eliminated awful t_flint type and all other schizophrenic flint functions (float and int exist now equally) -- now (finally) using type t_sample for sample values (should just be identical to float) -- added AddInBang/AddOutBang (same as Add*Symbol - unchecked) -- buffer class: added "bool Ok()" check function -- switched on error posting for unhandled messages -- added XletCode and AddInlets/AddOutlets for multiple Inlet/Outlet addition (max. 9 inlets/outlets) -- if float or int message is not handled explicitly then [list float/int( is tried - -0.2.2: -- added xgimme argument type (supplies method handlers with symbol+gimme) -- more information on DSP system with flext_dsp object (block size,number of audio inputs and outputs) -- cleaner gcc makefile -- made NewAligned/FreeAligned static functions -- introduced FLEXT(_TILDE)_SETUP for class setup in a library setup function -- introduced external libraries for MaxMSP, changed library setup behavior (now via FLEXT_LIB_SETUP) -- included MaxMsp's inofficial buffer.h with consent by David Zicarelli -- changed dynamic casts in callback functions to static as gcc 3.0.4 has obvious bugs - -0.2.1: -- fixed bug in message parsing code (anything messages were not correctly mapped to inlets) -- changed t_symtype to t_symptr (= t_symbol *), needed for method argument lists -- eliminated flint type (t_flint remains) - -0.2.0: -- internal proxy objects for any non-leftmost inlets -- Max/MSP: all signal inlets can receive messages -- method/argument parsing is done by flext - float/int are not distinguished, the first handler wins -- integrated more system functions into flext_base & eliminated superfluous #defines -- distribute list (into inlet 0) elements over inlets (right to left) -- added outlets for anythings -- defines for callback-to-method functions and method setup (FLEXT_CALLBACK*, FLEXT_ADD*) -- uses PD's or Max's memory allocation functions (for safety in Max's overdrive) -- no support for default arguments (A_DEFFLOAT and A_DEFSYMBOL).. use GIMME instead! -- better graphics update behavior for PD -- improved behavior for invalid/undefined buffers/arrays -- use MaxMSP internal z_disabled flag with flext_dsp for pausing/resuming dsp processing -- included CHECK_TILDE, a test whether a tilde object (defined as FLEXT_TILDE_*) has a trailing ~. (debug mode only) -- changed notation of flext functions from to_out_float like to ToOutFloat like -- eliminated trivial shortcuts (F,I,V,...) for built-in types -- MaxMSP is only capable of 3 creation arguments... that should be sufficient - otherwise use GIMME -- Methods for aligned memory (NewAligned, FreeAligned) - -0.1.1: -- documentation for flext.h -- more emancipation from GEM code -- virtually everything renamed -- abstraction for dsp processing -- makefile for BCC -- manual call of extern_setup or main unnecessary for single objects - only in pd libraries -- delayed buffer init (only name is set beforehand) -- loadbang also in PD -- introduced "compatibility mode" which denies platform-specific features -- fixed severe dsp bug (symptom: "float method overwritten" warning in pd) -- fixed bug: wrong return code from buffer::Set - -0.1.0: -- max-pd 0.2 becomes flext 0.1.0 -- heavy usage of unchanged GEM code - - - - diff --git a/externals/grill/flext/configure.ac b/externals/grill/flext/configure.ac deleted file mode 100755 index 83c6e309..00000000 --- a/externals/grill/flext/configure.ac +++ /dev/null @@ -1,160 +0,0 @@ -dnl -dnl autoconf template -dnl added by tim blechmann -dnl - -dnl flext API version (current:release:age) -API_VERSION=0:0:0 - -AC_INIT([flext],[0.5.0],[gr@grrrr.org],[flext]) -AM_INIT_AUTOMAKE(1.6) - - -dnl configure options -AC_ARG_ENABLE(system, [ --enable-system flext system (default: pd)], - [ - case $enableval in - max) AC_DEFINE(FLEXT_SYS,1) - TARGETDIR=maxmsp;; - *) AC_DEFINE(FLEXT_SYS,2) - TARGETDIR=pd;; - esac - system = $enableval - ], - AC_DEFINE(FLEXT_SYS,2) - TARGETDIR=pd -) - -AC_ARG_WITH(sysdir, - [ --with-sysdir path to pd or max headers], - [ - sysdir=$withval - INCLUDEDIR="-I$withval $INCLUDEDIR" - ], - [echo "path to system headers required "$enableval && exit 1]) - -dnl check for g_canvas.h in pd folder -AC_CHECK_FILE("$sysdir/g_canvas.h",,[echo "$sysdir/g_canvas.h not found" && exit 1]) - -AC_ARG_WITH(stkdir, - [ --with-stkdir path to stk headers], - [ - AC_CHECK_FILE("$withval/Stk.h",,[echo "$withval/Stk.h not found" && exit 1]) - stkdir=$withval - INCLUDEDIR="-I$withval $INCLUDEDIR" - ]) - -AM_CONDITIONAL([STK],[test "$stkdir"]) - -AC_ARG_WITH(sndobjdir, - [ --with-sndobjdir path to SndObj headers], - [ - AC_CHECK_FILE("$withval/SndObj.h",,[echo "$withval/SndObj.h not found" && exit 1]) - sndobjdir=$withval - INCLUDEDIR="-I$withval $INCLUDEDIR" - ]) - -AM_CONDITIONAL([SNDOBJ],[test "$sndobjdir"]) - -AC_ARG_ENABLE(optimize, [ --enable-optimize enables optimized builds for: pentium4, pentium3, G4, G5], - [ - case $enableval in - pentium3 | pentium3m) - OPT_FLAGS = "-mtune=$enableval -march=$enableval -mmmx -msse -mfpmath=sse"; - AC_DEFINE(FLEXT_USE_SIMD);; - pentium2 | athlon | pentium-mmx) - OPT_FLAGS="-mtune=$enableval -march=$enableval -mmmx";; - pentium) - OPT_FLAGS="-mtune=$enableval -march=$enableval";; - pentium4 | pentium4m | pentium-m | prescott | nocona | athlon-xp | athlon-mp | athlon64 | opteron) - OPT_FLAGS="-mtune=$enableval -march=$enableval -mmmx -msse -msse2 -mfpmath=sse"; - AC_DEFINE(FLEXT_USE_SIMD);; - G5 | G4) - OPT_FLAGS="-mtune=$enableval --maltivec -faltivec -malign-natural"; - AC_DEFINE(FLEXT_USE_SIMD);; - G3) - OPT_FLAGS="-mtune=$enableval --malign-natural";; - *) - ;; - esac - ]) - -dnl Checks for programs. -AC_PROG_CC -AC_PROG_CXX -AC_PROG_INSTALL -AC_PROG_MAKE_SET -AC_PROG_RANLIB - -dnl Checks for libraries. - -dnl Checks for header files. - -dnl Checks for typedefs, structures, and compiler characteristics. -AC_C_CONST -AC_C_INLINE -AC_TYPE_SIZE_T -AC_STRUCT_TM - -dnl Checks for library functions. - -dnl system specific - -if test `uname -s` == Linux; then - DYNAMIC_LDFLAGS="-Wl,-Bdynamic -shared" - EXTENSION=pd_linux - SOEXT=so -fi - -if test `uname -s` == Darwin; then -# DYNAMIC_LDFLAGS="-version-info $API_VERSION -release $AC_PACKAGE_VERSION -dynamiclib -dynamic -flat_namespace -undefined suppress" - - DYNAMIC_LDFLAGS="-dynamiclib -dynamic -flat_namespace -undefined suppress" - if test $system == max; then - EXTENSION=mxo - else - EXTENSION=pd_darwin - fi - - SOEXT=dylib - FRAMEWORKS="ApplicationServices vecLib" -fi - -dnl todo: mingw / cygwin - -AC_SUBST(INCLUDEDIR) -AC_SUBST(OPT_FLAGS) -AC_SUBST(DYNAMIC_LDFLAGS) -AC_SUBST(stkdir) -AC_SUBST(sndobjdir) -AC_SUBST(EXTENSION) -AC_SUBST(SOEXT) -AC_SUBST(TARGETDIR) -AC_SUBST(FRAMEWORKS) dnl for osx -AC_OUTPUT([ - Makefile - tutorial/Makefile - tutorial/adv1/Makefile - tutorial/adv2/Makefile - tutorial/adv3/Makefile - tutorial/attr1/Makefile - tutorial/attr2/Makefile - tutorial/attr3/Makefile - tutorial/bind1/Makefile - tutorial/buffer1/Makefile - tutorial/lib1/Makefile - tutorial/signal1/Makefile - tutorial/signal2/Makefile - tutorial/simple1/Makefile - tutorial/simple2/Makefile - tutorial/simple3/Makefile - tutorial/sndobj1/Makefile - tutorial/stk1/Makefile - tutorial/stk2/Makefile - tutorial/thread1/Makefile - tutorial/thread2/Makefile - tutorial/timer1/Makefile - tutorial/pd/Makefile - tutorial/maxmsp/Makefile - source/Makefile]) - diff --git a/externals/grill/flext/examples/examples.dsw b/externals/grill/flext/examples/examples.dsw deleted file mode 100644 index 6f52bde2..00000000 --- a/externals/grill/flext/examples/examples.dsw +++ /dev/null @@ -1,33 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELÖSCHT WERDEN! - -############################################################################### - -Project: "henon"=.\source\henon.dsp - Package Owner=<4> - -Package=<5> -{{{ - begin source code control - max/flext/examples/source - .\source - end source code control -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/externals/grill/flext/examples/pd/ex-henon.pd b/externals/grill/flext/examples/pd/ex-henon.pd deleted file mode 100644 index a70ec540..00000000 --- a/externals/grill/flext/examples/pd/ex-henon.pd +++ /dev/null @@ -1,87 +0,0 @@ -#N canvas 412 48 465 467 12; -#X obj 18 43 bng 25 250 50 0 empty empty reset 0 -10 0 14 -261689 -1 --1; -#X obj 99 44 bng 25 250 50 0 empty empty trigger 0 -10 0 14 -261689 --1 -1; -#X obj 206 43 nbx 4 18 0 1 0 1 empty empty pre-alpha 0 -10 0 14 -225271 --1 -1 0.75 256; -#X obj 322 44 nbx 4 18 0 1 0 1 empty empty pre-beta 0 -10 0 14 -225271 --1 -1 0.41 256; -#X obj 60 264 nbx 5 18 -1e+037 1e+037 0 0 empty empty result 0 -10 -0 14 -228992 -1 -1 0 256; -#N canvas 0 0 458 522 henon 0; -#X text 115 130 x; -#X text 190 129 y; -#X obj 157 166 *; -#X obj 47 158 t f f; -#X obj 48 189 *; -#X obj 77 215 *; -#X obj 130 248 +; -#X obj 113 281 + 1; -#X obj 85 131 f 0; -#X obj 158 130 f 0; -#X obj 33 23 inlet; -#X obj 263 27 inlet; -#X obj 368 28 inlet; -#X text 264 7 alpha; -#X text 373 7 beta; -#X text 28 5 commands; -#X obj 31 50 route reset bang; -#X obj 112 445 outlet; -#X obj 100 86 t b b; -#X obj 31 76 t 0; -#X obj 241 55 * 1.5; -#X obj 241 80 - 2.5; -#X obj 361 55 - 0.5; -#X obj 114 342 + 1; -#X obj 114 369 / 2; -#X obj 113 394 max 0; -#X obj 113 418 min 1; -#X connect 2 0 6 1; -#X connect 3 0 4 0; -#X connect 3 1 4 1; -#X connect 4 0 5 0; -#X connect 5 0 6 0; -#X connect 6 0 7 0; -#X connect 7 0 8 1; -#X connect 7 0 23 0; -#X connect 8 0 3 0; -#X connect 8 0 9 1; -#X connect 9 0 2 0; -#X connect 10 0 16 0; -#X connect 11 0 20 0; -#X connect 12 0 22 0; -#X connect 16 0 19 0; -#X connect 16 1 18 0; -#X connect 18 0 8 0; -#X connect 18 1 9 0; -#X connect 19 0 8 1; -#X connect 19 0 9 1; -#X connect 20 0 21 0; -#X connect 21 0 5 1; -#X connect 22 0 2 1; -#X connect 23 0 24 0; -#X connect 24 0 25 0; -#X connect 25 0 26 0; -#X connect 26 0 17 0; -#X restore 60 208 pd henon; -#X msg 18 77 reset; -#X obj 294 201 henon; -#X obj 292 259 nbx 5 18 -1e+037 1e+037 0 0 empty empty result 0 -10 -0 14 -228992 -1 -1 0 256; -#X text 17 331 alpha and beta can also be initialized; -#X text 18 350 at creation time; -#X obj 45 426 henon @alpha 0.7 @beta 0.2; -#X text 15 403 or \, using attributes; -#X obj 45 377 henon 0.7 0.2; -#X connect 0 0 6 0; -#X connect 1 0 5 0; -#X connect 1 0 7 0; -#X connect 2 0 7 1; -#X connect 2 0 5 1; -#X connect 3 0 7 2; -#X connect 3 0 5 2; -#X connect 5 0 4 0; -#X connect 6 0 5 0; -#X connect 6 0 7 0; -#X connect 7 0 8 0; diff --git a/externals/grill/flext/examples/source/henon.cpp b/externals/grill/flext/examples/source/henon.cpp deleted file mode 100644 index e48b9555..00000000 --- a/externals/grill/flext/examples/source/henon.cpp +++ /dev/null @@ -1,122 +0,0 @@ -/* -flext examples - henon - -Copyright (c) 2003 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -------------------------------------------------------------------------- - -This is a simple external featuring the chaotic Henon attractor. - -See also http://improv.sapp.org/doc/examples/synthImprov/henontune/henontune.html -Thanks to David Casal for the pointer! - -*/ - -// IMPORTANT: enable attribute processing (specify before inclusion of flext headers!) -// For clarity, this is done here, but you'd better specify it as a compiler definition -// FLEXT_ATTRIBUTES must be 0 or 1, -#define FLEXT_ATTRIBUTES 1 - - -// include flext header -#include - -// check for appropriate flext version -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 401) -#error You need at least flext version 0.4.1 -#endif - - -class henon: - public flext_base -{ - FLEXT_HEADER_S(henon,flext_base,Setup) - -public: - // constructor - henon(int argc,const t_atom *argv); - -protected: - void m_bang(); - void m_reset() { x = y = 0; } - - void m_alpha(float a) { alpha = a; } - void m_beta(float b) { beta = b; } - - float alpha,beta; - float x,y; - -private: - static void Setup(t_classid c); - - // method callbacks - FLEXT_CALLBACK(m_reset) - FLEXT_CALLBACK(m_bang) - FLEXT_CALLBACK_F(m_alpha) - FLEXT_CALLBACK_F(m_beta) - - // define attribute callbacks for variables alpha and beta (with GET and SET properties) - FLEXT_ATTRVAR_F(alpha) - FLEXT_ATTRVAR_F(beta) -}; - -// instantiate the class -FLEXT_NEW_V("henon",henon) - - -henon::henon(int argc,const t_atom *argv): - alpha(0),beta(0),x(0),y(0) // initializations -{ - // define inlets - AddInAnything("reset,bang,..."); - AddInFloat("alpha"); - AddInFloat("beta"); - - // define outlets - AddOutFloat(); - - // processing command line - if(argc == 2 && CanbeFloat(argv[0]) && CanbeFloat(argv[1])) { - // two float args - alpha = GetAFloat(argv[0]); - beta = GetAFloat(argv[1]); - } -} - -void henon::Setup(t_classid c) -{ - // register methods - FLEXT_CADDBANG(c,0,m_bang); - FLEXT_CADDMETHOD_(c,0,"reset",m_reset); - - // methods for non-left inlets - FLEXT_CADDMETHOD(c,1,m_alpha); - FLEXT_CADDMETHOD(c,2,m_beta); - - // register attributes - FLEXT_CADDATTR_VAR1(c,"alpha",alpha); // register attribute "alpha" - FLEXT_CADDATTR_VAR1(c,"beta",beta); // register attribute "beta" -} - -// Trigger output -void henon::m_bang() -{ - float _alpha_ = alpha*1.5f-2.5f; - float _beta_ = beta-0.5f; - - float newx = 1 + _alpha_ * x * x + _beta_ * y; - float newy = x; - x = newx; - y = newy; - - float output = (x + 1.0f)/2.0f; - if(output < 0) - output = 0; - else if(output > 1) - output = 1; - - // output value to outlet - ToOutFloat(0,output); // (0 stands for the outlet index 0) -} diff --git a/externals/grill/flext/examples/source/henon.cw b/externals/grill/flext/examples/source/henon.cw deleted file mode 100644 index cf880938..00000000 Binary files a/externals/grill/flext/examples/source/henon.cw and /dev/null differ diff --git a/externals/grill/flext/examples/source/henon.dsp b/externals/grill/flext/examples/source/henon.dsp deleted file mode 100644 index 24cbdfcf..00000000 --- a/externals/grill/flext/examples/source/henon.dsp +++ /dev/null @@ -1,95 +0,0 @@ -# Microsoft Developer Studio Project File - Name="henon" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** NICHT BEARBEITEN ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=henon - Win32 Debug -!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE -!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl -!MESSAGE -!MESSAGE NMAKE /f "henon.mak". -!MESSAGE -!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben -!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: -!MESSAGE -!MESSAGE NMAKE /f "henon.mak" CFG="henon - Win32 Debug" -!MESSAGE -!MESSAGE Für die Konfiguration stehen zur Auswahl: -!MESSAGE -!MESSAGE "henon - Win32 Release" (basierend auf "Win32 (x86) Dynamic-Link Library") -!MESSAGE "henon - Win32 Debug" (basierend auf "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "henon" -# PROP Scc_LocalPath "." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "henon - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "msvc" -# PROP Intermediate_Dir "msvc" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /YX /FD /c -# ADD CPP /nologo /W3 /O2 /I "..\..\source" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PD" /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0xc07 /d "NDEBUG" -# ADD RSC /l 0xc07 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib /nologo /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib pd.lib flext-pdwin.lib /nologo /dll /machine:I386 /out:"../pd-msvc/henon.dll" /libpath:"..\..\pd-msvc" - -!ELSEIF "$(CFG)" == "henon - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "msvc-debug" -# PROP Intermediate_Dir "msvc-debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /ZI /Od /I "..\..\source" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PD" /FR /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0xc07 /d "_DEBUG" -# ADD RSC /l 0xc07 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib pd.lib flext_d-pdwin.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"..\..\pd-msvc" - -!ENDIF - -# Begin Target - -# Name "henon - Win32 Release" -# Name "henon - Win32 Debug" -# Begin Source File - -SOURCE=.\henon.cpp -# End Source File -# End Target -# End Project diff --git a/externals/grill/flext/flext.mcp b/externals/grill/flext/flext.mcp deleted file mode 100644 index 595fe11e..00000000 Binary files a/externals/grill/flext/flext.mcp and /dev/null differ diff --git a/externals/grill/flext/flext.vcproj b/externals/grill/flext/flext.vcproj deleted file mode 100644 index 685b2db7..00000000 --- a/externals/grill/flext/flext.vcproj +++ /dev/null @@ -1,4333 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/flext/flext.xcode/project.pbxproj b/externals/grill/flext/flext.xcode/project.pbxproj deleted file mode 100755 index d8b23073..00000000 --- a/externals/grill/flext/flext.xcode/project.pbxproj +++ /dev/null @@ -1,3066 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 39; - objects = { - 034768DDFF38A45A11DB9C8B = { - children = ( - E99747CD0770545100206F68, - E997483F0770570800206F68, - E9974886077058C100206F68, - E99749BE07705CC400206F68, - E9974BC407705F1400206F68, - E9974BFA07705F4F00206F68, - ); - isa = PBXGroup; - name = Products; - refType = 4; - sourceTree = ""; - }; -//030 -//031 -//032 -//033 -//034 -//080 -//081 -//082 -//083 -//084 - 0867D690FE84028FC02AAC07 = { - buildSettings = { - }; - buildStyles = ( - F5128F2503864E5501A80AC9, - F5128F2603864E5501A80AC9, - ); - hasScannedForEncodings = 1; - isa = PBXProject; - mainGroup = 0867D691FE84028FC02AAC07; - productRefGroup = 034768DDFF38A45A11DB9C8B; - projectDirPath = ""; - targets = ( - E99747CC0770545100206F68, - E997480D0770570800206F68, - E9974885077058C100206F68, - E997498C07705CC400206F68, - E9974B9207705F1400206F68, - E9974BC507705F4F00206F68, - ); - }; - 0867D691FE84028FC02AAC07 = { - children = ( - F55CEDB50383E50D01A80AC9, - 08FB77ACFE841707C02AAC07, - 089C1665FE841158C02AAC07, - 0867D69AFE84028FC02AAC07, - 034768DDFF38A45A11DB9C8B, - ); - isa = PBXGroup; - name = "flext-PB"; - refType = 4; - sourceTree = ""; - }; - 0867D69AFE84028FC02AAC07 = { - children = ( - E9974E140770780D00206F68, - E9974E150770780D00206F68, - E99748D007705BAF00206F68, - E9974802077054CD00206F68, - ); - isa = PBXGroup; - name = "External Frameworks and Libraries"; - refType = 4; - sourceTree = ""; - }; - 089C1665FE841158C02AAC07 = { - children = ( - 089C1666FE841158C02AAC07, - ); - isa = PBXGroup; - name = Resources; - refType = 4; - sourceTree = ""; - }; - 089C1666FE841158C02AAC07 = { - children = ( - 089C1667FE841158C02AAC07, - ); - isa = PBXVariantGroup; - name = InfoPlist.strings; - refType = 4; - sourceTree = ""; - }; - 089C1667FE841158C02AAC07 = { - fileEncoding = 10; - isa = PBXFileReference; - lastKnownFileType = file; - name = English; - path = English.lproj/InfoPlist.strings; - refType = 4; - sourceTree = ""; - }; - 08FB77ACFE841707C02AAC07 = { - children = ( - F55CED7B0383E50201A80AC9, - F55CED7C0383E50201A80AC9, - F55CED7D0383E50201A80AC9, - F55CED7E0383E50201A80AC9, - F55CED800383E50201A80AC9, - F55CED880383E50201A80AC9, - F55CED8A0383E50201A80AC9, - F55CED8D0383E50201A80AC9, - F55CED8F0383E50201A80AC9, - F55CED900383E50201A80AC9, - F55CED930383E50201A80AC9, - F55CED950383E50201A80AC9, - F55CED960383E50201A80AC9, - F55CED970383E50201A80AC9, - F504A66B03CE39F501A80AC9, - F504A66C03CE39F501A80AC9, - F504A66D03CE39F501A80AC9, - F504A66E03CE39F501A80AC9, - F504A66F03CE39F501A80AC9, - F504A67103CE39F501A80AC9, - F504A67203CE39F501A80AC9, - F504A67303CE39F501A80AC9, - F5B1FAC8041191190179CFEF, - F598D263044CC4A001A80AC9, - F598D264044CC4A001A80AC9, - E9BDCC4104F4D7C1008929A0, - ); - isa = PBXGroup; - name = Source; - path = ""; - refType = 2; - sourceTree = SOURCE_ROOT; - }; -//080 -//081 -//082 -//083 -//084 -//E90 -//E91 -//E92 -//E93 -//E94 - E99747C90770545100206F68 = { - buildActionMask = 2147483647; - files = ( - E99747FA0770548F00206F68, - E99747E80770548F00206F68, - E99747E90770548F00206F68, - E99747F50770548F00206F68, - E99747F60770548F00206F68, - E99747F70770548F00206F68, - E99747F80770548F00206F68, - E99747F90770548F00206F68, - E99747FC0770548F00206F68, - E99747FE0770548F00206F68, - E99747EA0770548F00206F68, - E99747EB0770548F00206F68, - E99747EC0770548F00206F68, - E99747ED0770548F00206F68, - E99747EE0770548F00206F68, - E99747EF0770548F00206F68, - E99747F00770548F00206F68, - E99747F10770548F00206F68, - E99747F20770548F00206F68, - E99747F30770548F00206F68, - E99747F40770548F00206F68, - ); - isa = PBXHeadersBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E99747CA0770545100206F68 = { - buildActionMask = 2147483647; - files = ( - E99747CE0770548700206F68, - E99747CF0770548700206F68, - E99747D00770548700206F68, - E99747D10770548700206F68, - E99747D20770548700206F68, - E99747D30770548700206F68, - E99747D40770548700206F68, - E99747D50770548700206F68, - E99747D60770548700206F68, - E99747D70770548700206F68, - E99747D80770548700206F68, - E99747D90770548700206F68, - E99747DA0770548700206F68, - E99747DB0770548700206F68, - E99747DC0770548700206F68, - E99747DD0770548700206F68, - E99747DE0770548700206F68, - E99747DF0770548700206F68, - E99747E00770548700206F68, - E99747E30770548700206F68, - E99747E40770548700206F68, - E99747E50770548700206F68, - E99747E60770548700206F68, - E99747E70770548700206F68, - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E99747CB0770545100206F68 = { - buildActionMask = 2147483647; - files = ( - E9974803077054CD00206F68, - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E99747CC0770545100206F68 = { - buildPhases = ( - E99747C90770545100206F68, - E99747CA0770545100206F68, - E99747CB0770545100206F68, - ); - buildRules = ( - ); - buildSettings = { - GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=2"; - HEADER_SEARCH_PATHS = "$(PD)/src"; - INSTALL_PATH = /usr/local/lib; - LIBRARY_STYLE = STATIC; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = flext_s; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; - }; - dependencies = ( - ); - isa = PBXNativeTarget; - name = "PD static single"; - productName = "PD static single"; - productReference = E99747CD0770545100206F68; - productType = "com.apple.product-type.library.static"; - }; - E99747CD0770545100206F68 = { - explicitFileType = archive.ar; - includeInIndex = 0; - isa = PBXFileReference; - path = libflext_s.a; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; - E99747CE0770548700206F68 = { - fileRef = F55CED7C0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747CF0770548700206F68 = { - fileRef = F504A66B03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747D00770548700206F68 = { - fileRef = F504A66C03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747D10770548700206F68 = { - fileRef = F55CED7B0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747D20770548700206F68 = { - fileRef = F55CED7D0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747D30770548700206F68 = { - fileRef = E9BDCC4104F4D7C1008929A0; - isa = PBXBuildFile; - settings = { - }; - }; - E99747D40770548700206F68 = { - fileRef = F55CED7E0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747D50770548700206F68 = { - fileRef = F598D263044CC4A001A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747D60770548700206F68 = { - fileRef = F55CED800383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747D70770548700206F68 = { - fileRef = F55CED880383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747D80770548700206F68 = { - fileRef = F55CED8A0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747D90770548700206F68 = { - fileRef = F504A66D03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747DA0770548700206F68 = { - fileRef = F55CED8D0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747DB0770548700206F68 = { - fileRef = F504A66E03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747DC0770548700206F68 = { - fileRef = F504A66F03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747DD0770548700206F68 = { - fileRef = F55CED8F0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747DE0770548700206F68 = { - fileRef = F504A67103CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747DF0770548700206F68 = { - fileRef = F504A67203CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747E00770548700206F68 = { - fileRef = F598D264044CC4A001A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747E30770548700206F68 = { - fileRef = F55CED930383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747E40770548700206F68 = { - fileRef = F55CED950383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747E50770548700206F68 = { - fileRef = F5B1FAC8041191190179CFEF; - isa = PBXBuildFile; - settings = { - }; - }; - E99747E60770548700206F68 = { - fileRef = F55CED960383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747E70770548700206F68 = { - fileRef = F55CED970383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747E80770548F00206F68 = { - fileRef = F55CED7F0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747E90770548F00206F68 = { - fileRef = F55CED810383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747EA0770548F00206F68 = { - fileRef = F55CED860383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747EB0770548F00206F68 = { - fileRef = F5CBC5B804757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99747EC0770548F00206F68 = { - fileRef = F5CBC5B904757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99747ED0770548F00206F68 = { - fileRef = F5CBC5BA04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99747EE0770548F00206F68 = { - fileRef = F5CBC5BB04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99747EF0770548F00206F68 = { - fileRef = F5CBC5BC04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99747F00770548F00206F68 = { - fileRef = F5CBC5BD04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99747F10770548F00206F68 = { - fileRef = F5CBC5BE04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99747F20770548F00206F68 = { - fileRef = F5CBC5BF04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99747F30770548F00206F68 = { - fileRef = F5CBC5C004757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99747F40770548F00206F68 = { - fileRef = F5CBC5C104757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99747F50770548F00206F68 = { - fileRef = F55CED870383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747F60770548F00206F68 = { - fileRef = F55CED890383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747F70770548F00206F68 = { - fileRef = F55CED8B0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747F80770548F00206F68 = { - fileRef = F55CED8C0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747F90770548F00206F68 = { - fileRef = F55CED8E0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747FA0770548F00206F68 = { - fileRef = F504A67003CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747FC0770548F00206F68 = { - fileRef = F55CED920383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99747FE0770548F00206F68 = { - fileRef = F55CED940383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974802077054CD00206F68 = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = vecLib.framework; - path = /System/Library/Frameworks/vecLib.framework; - refType = 0; - sourceTree = ""; - }; - E9974803077054CD00206F68 = { - fileRef = E9974802077054CD00206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E997480D0770570800206F68 = { - buildPhases = ( - E997480E0770570800206F68, - E99748240770570800206F68, - E997483D0770570800206F68, - ); - buildRules = ( - ); - buildSettings = { - GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=2 FLEXT_THREADS"; - HEADER_SEARCH_PATHS = "$(PD)/src"; - INSTALL_PATH = /usr/local/lib; - LIBRARY_STYLE = STATIC; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = flext_t; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; - }; - dependencies = ( - ); - isa = PBXNativeTarget; - name = "PD static multi"; - productName = "PD static single"; - productReference = E997483F0770570800206F68; - productType = "com.apple.product-type.library.static"; - }; - E997480E0770570800206F68 = { - buildActionMask = 2147483647; - files = ( - E997480F0770570800206F68, - E99748100770570800206F68, - E99748110770570800206F68, - E99748120770570800206F68, - E99748130770570800206F68, - E99748140770570800206F68, - E99748150770570800206F68, - E99748160770570800206F68, - E99748170770570800206F68, - E99748180770570800206F68, - E99748190770570800206F68, - E997481A0770570800206F68, - E997481B0770570800206F68, - E997481C0770570800206F68, - E997481D0770570800206F68, - E997481E0770570800206F68, - E997481F0770570800206F68, - E99748200770570800206F68, - E99748210770570800206F68, - E99748220770570800206F68, - E99748230770570800206F68, - ); - isa = PBXHeadersBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E997480F0770570800206F68 = { - fileRef = F504A67003CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748100770570800206F68 = { - fileRef = F55CED7F0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748110770570800206F68 = { - fileRef = F55CED810383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748120770570800206F68 = { - fileRef = F55CED870383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748130770570800206F68 = { - fileRef = F55CED890383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748140770570800206F68 = { - fileRef = F55CED8B0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748150770570800206F68 = { - fileRef = F55CED8C0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748160770570800206F68 = { - fileRef = F55CED8E0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748170770570800206F68 = { - fileRef = F55CED920383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748180770570800206F68 = { - fileRef = F55CED940383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748190770570800206F68 = { - fileRef = F55CED860383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997481A0770570800206F68 = { - fileRef = F5CBC5B804757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E997481B0770570800206F68 = { - fileRef = F5CBC5B904757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E997481C0770570800206F68 = { - fileRef = F5CBC5BA04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E997481D0770570800206F68 = { - fileRef = F5CBC5BB04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E997481E0770570800206F68 = { - fileRef = F5CBC5BC04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E997481F0770570800206F68 = { - fileRef = F5CBC5BD04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99748200770570800206F68 = { - fileRef = F5CBC5BE04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99748210770570800206F68 = { - fileRef = F5CBC5BF04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99748220770570800206F68 = { - fileRef = F5CBC5C004757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99748230770570800206F68 = { - fileRef = F5CBC5C104757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99748240770570800206F68 = { - buildActionMask = 2147483647; - files = ( - E99748250770570800206F68, - E99748260770570800206F68, - E99748270770570800206F68, - E99748280770570800206F68, - E99748290770570800206F68, - E997482A0770570800206F68, - E997482B0770570800206F68, - E997482C0770570800206F68, - E997482D0770570800206F68, - E997482E0770570800206F68, - E997482F0770570800206F68, - E99748300770570800206F68, - E99748310770570800206F68, - E99748320770570800206F68, - E99748330770570800206F68, - E99748340770570800206F68, - E99748350770570800206F68, - E99748360770570800206F68, - E99748370770570800206F68, - E99748380770570800206F68, - E99748390770570800206F68, - E997483A0770570800206F68, - E997483B0770570800206F68, - E997483C0770570800206F68, - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E99748250770570800206F68 = { - fileRef = F55CED7C0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748260770570800206F68 = { - fileRef = F504A66B03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748270770570800206F68 = { - fileRef = F504A66C03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748280770570800206F68 = { - fileRef = F55CED7B0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748290770570800206F68 = { - fileRef = F55CED7D0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997482A0770570800206F68 = { - fileRef = E9BDCC4104F4D7C1008929A0; - isa = PBXBuildFile; - settings = { - }; - }; - E997482B0770570800206F68 = { - fileRef = F55CED7E0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997482C0770570800206F68 = { - fileRef = F598D263044CC4A001A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997482D0770570800206F68 = { - fileRef = F55CED800383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997482E0770570800206F68 = { - fileRef = F55CED880383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997482F0770570800206F68 = { - fileRef = F55CED8A0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748300770570800206F68 = { - fileRef = F504A66D03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748310770570800206F68 = { - fileRef = F55CED8D0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748320770570800206F68 = { - fileRef = F504A66E03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748330770570800206F68 = { - fileRef = F504A66F03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748340770570800206F68 = { - fileRef = F55CED8F0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748350770570800206F68 = { - fileRef = F504A67103CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748360770570800206F68 = { - fileRef = F504A67203CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748370770570800206F68 = { - fileRef = F598D264044CC4A001A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748380770570800206F68 = { - fileRef = F55CED930383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748390770570800206F68 = { - fileRef = F55CED950383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997483A0770570800206F68 = { - fileRef = F5B1FAC8041191190179CFEF; - isa = PBXBuildFile; - settings = { - }; - }; - E997483B0770570800206F68 = { - fileRef = F55CED960383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997483C0770570800206F68 = { - fileRef = F55CED970383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997483D0770570800206F68 = { - buildActionMask = 2147483647; - files = ( - E997483E0770570800206F68, - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E997483E0770570800206F68 = { - fileRef = E9974802077054CD00206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E997483F0770570800206F68 = { - explicitFileType = archive.ar; - includeInIndex = 0; - isa = PBXFileReference; - path = libflext_t.a; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; - E9974882077058C100206F68 = { - buildActionMask = 2147483647; - files = ( - E99748B00770595E00206F68, - E99748B10770595E00206F68, - E99748B20770595E00206F68, - E99748B30770595E00206F68, - E99748B40770595E00206F68, - E99748B50770595E00206F68, - E99748B60770595E00206F68, - E99748B70770595E00206F68, - E99748B80770595E00206F68, - E99748B90770595E00206F68, - E99748BA0770595E00206F68, - E99748A40770595500206F68, - E99748A50770595500206F68, - E99748A60770595500206F68, - E99748A70770595500206F68, - E99748A80770595500206F68, - E99748A90770595600206F68, - E99748AA0770595600206F68, - E99748AB0770595600206F68, - E99748AC0770595600206F68, - E99748AD0770595600206F68, - E99748AE0770595600206F68, - E99748AF0770595600206F68, - ); - isa = PBXHeadersBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E9974883077058C100206F68 = { - buildActionMask = 2147483647; - files = ( - E997488C0770593C00206F68, - E997488D0770593C00206F68, - E997488E0770593C00206F68, - E997488F0770593C00206F68, - E99748900770593C00206F68, - E99748910770593C00206F68, - E99748920770593C00206F68, - E99748930770593C00206F68, - E99748940770593C00206F68, - E99748950770593C00206F68, - E99748960770593C00206F68, - E99748970770593C00206F68, - E99748980770593C00206F68, - E99748990770593C00206F68, - E997489A0770593C00206F68, - E997489B0770593C00206F68, - E997489C0770593C00206F68, - E997489D0770593C00206F68, - E997489E0770593C00206F68, - E997489F0770593C00206F68, - E99748A00770593C00206F68, - E99748A10770593C00206F68, - E99748A20770593C00206F68, - E99748A30770593C00206F68, - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E9974884077058C100206F68 = { - buildActionMask = 2147483647; - files = ( - E99749BF07705D5200206F68, - E99748D107705BAF00206F68, - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E9974885077058C100206F68 = { - buildPhases = ( - E9974882077058C100206F68, - E9974883077058C100206F68, - E9974884077058C100206F68, - ); - buildRules = ( - ); - buildSettings = { - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=2 FLEXT_SHARED"; - HEADER_SEARCH_PATHS = "$(PD)/src"; - INSTALL_PATH = /usr/local/lib; - LIBRARY_STYLE = BUNDLE; - OTHER_CFLAGS = ""; - OTHER_LDFLAGS = "-bundle_loader $(PD)/bin/pd"; - OTHER_REZFLAGS = ""; - PREBINDING = YES; - PRODUCT_NAME = flext; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; - }; - dependencies = ( - ); - isa = PBXNativeTarget; - name = "PD shared"; - productName = "PD shared"; - productReference = E9974886077058C100206F68; - productType = "com.apple.product-type.library.dynamic"; - }; - E9974886077058C100206F68 = { - explicitFileType = "compiled.mach-o.dylib"; - includeInIndex = 0; - isa = PBXFileReference; - path = flext.dylib; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; - E997488C0770593C00206F68 = { - fileRef = F55CED7C0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997488D0770593C00206F68 = { - fileRef = F504A66B03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997488E0770593C00206F68 = { - fileRef = F504A66C03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997488F0770593C00206F68 = { - fileRef = F55CED7B0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748900770593C00206F68 = { - fileRef = F55CED7D0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748910770593C00206F68 = { - fileRef = E9BDCC4104F4D7C1008929A0; - isa = PBXBuildFile; - settings = { - }; - }; - E99748920770593C00206F68 = { - fileRef = F55CED7E0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748930770593C00206F68 = { - fileRef = F598D263044CC4A001A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748940770593C00206F68 = { - fileRef = F55CED800383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748950770593C00206F68 = { - fileRef = F55CED880383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748960770593C00206F68 = { - fileRef = F55CED8A0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748970770593C00206F68 = { - fileRef = F504A66D03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748980770593C00206F68 = { - fileRef = F55CED8D0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748990770593C00206F68 = { - fileRef = F504A66E03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997489A0770593C00206F68 = { - fileRef = F504A66F03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997489B0770593C00206F68 = { - fileRef = F55CED8F0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997489C0770593C00206F68 = { - fileRef = F504A67103CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997489D0770593C00206F68 = { - fileRef = F504A67203CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997489E0770593C00206F68 = { - fileRef = F598D264044CC4A001A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997489F0770593C00206F68 = { - fileRef = F55CED930383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748A00770593C00206F68 = { - fileRef = F55CED950383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748A10770593C00206F68 = { - fileRef = F5B1FAC8041191190179CFEF; - isa = PBXBuildFile; - settings = { - }; - }; - E99748A20770593C00206F68 = { - fileRef = F55CED960383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748A30770593C00206F68 = { - fileRef = F55CED970383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748A40770595500206F68 = { - fileRef = F504A67003CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748A50770595500206F68 = { - fileRef = F55CED7F0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748A60770595500206F68 = { - fileRef = F55CED810383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748A70770595500206F68 = { - fileRef = F55CED870383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748A80770595500206F68 = { - fileRef = F55CED890383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748A90770595600206F68 = { - fileRef = F55CED8B0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748AA0770595600206F68 = { - fileRef = F55CED8C0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748AB0770595600206F68 = { - fileRef = F55CED8E0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748AC0770595600206F68 = { - fileRef = F55CED910383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748AD0770595600206F68 = { - fileRef = F55CED920383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748AE0770595600206F68 = { - fileRef = F55CED940383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748AF0770595600206F68 = { - fileRef = F504A67403CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748B00770595E00206F68 = { - fileRef = F55CED860383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99748B10770595E00206F68 = { - fileRef = F5CBC5B804757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99748B20770595E00206F68 = { - fileRef = F5CBC5B904757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99748B30770595E00206F68 = { - fileRef = F5CBC5BA04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99748B40770595E00206F68 = { - fileRef = F5CBC5BB04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99748B50770595E00206F68 = { - fileRef = F5CBC5BC04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99748B60770595E00206F68 = { - fileRef = F5CBC5BD04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99748B70770595E00206F68 = { - fileRef = F5CBC5BE04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99748B80770595E00206F68 = { - fileRef = F5CBC5BF04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99748B90770595E00206F68 = { - fileRef = F5CBC5C004757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99748BA0770595E00206F68 = { - fileRef = F5CBC5C104757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99748D007705BAF00206F68 = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = ApplicationServices.framework; - path = /System/Library/Frameworks/ApplicationServices.framework; - refType = 0; - sourceTree = ""; - }; - E99748D107705BAF00206F68 = { - fileRef = E99748D007705BAF00206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E997498C07705CC400206F68 = { - buildPhases = ( - E997498D07705CC400206F68, - E99749A307705CC400206F68, - E99749BC07705CC400206F68, - ); - buildRules = ( - ); - buildSettings = { - GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=1"; - HEADER_SEARCH_PATHS = "$(Max SDK)/max-includes $(Max SDK)/msp-includes"; - INSTALL_PATH = /usr/local/lib; - LIBRARY_STYLE = STATIC; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = "flext-max_s"; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; - }; - dependencies = ( - ); - isa = PBXNativeTarget; - name = "Max static single"; - productName = "PD static single"; - productReference = E99749BE07705CC400206F68; - productType = "com.apple.product-type.library.static"; - }; - E997498D07705CC400206F68 = { - buildActionMask = 2147483647; - files = ( - E997498E07705CC400206F68, - E997498F07705CC400206F68, - E997499007705CC400206F68, - E997499107705CC400206F68, - E997499207705CC400206F68, - E997499307705CC400206F68, - E997499407705CC400206F68, - E997499507705CC400206F68, - E997499607705CC400206F68, - E997499707705CC400206F68, - E997499807705CC400206F68, - E997499907705CC400206F68, - E997499A07705CC400206F68, - E997499B07705CC400206F68, - E997499C07705CC400206F68, - E997499D07705CC400206F68, - E997499E07705CC400206F68, - E997499F07705CC400206F68, - E99749A007705CC400206F68, - E99749A107705CC400206F68, - E99749A207705CC400206F68, - ); - isa = PBXHeadersBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E997498E07705CC400206F68 = { - fileRef = F504A67003CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997498F07705CC400206F68 = { - fileRef = F55CED7F0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997499007705CC400206F68 = { - fileRef = F55CED810383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997499107705CC400206F68 = { - fileRef = F55CED870383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997499207705CC400206F68 = { - fileRef = F55CED890383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997499307705CC400206F68 = { - fileRef = F55CED8B0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997499407705CC400206F68 = { - fileRef = F55CED8C0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997499507705CC400206F68 = { - fileRef = F55CED8E0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997499607705CC400206F68 = { - fileRef = F55CED920383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997499707705CC400206F68 = { - fileRef = F55CED940383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997499807705CC400206F68 = { - fileRef = F55CED860383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E997499907705CC400206F68 = { - fileRef = F5CBC5B804757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E997499A07705CC400206F68 = { - fileRef = F5CBC5B904757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E997499B07705CC400206F68 = { - fileRef = F5CBC5BA04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E997499C07705CC400206F68 = { - fileRef = F5CBC5BB04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E997499D07705CC400206F68 = { - fileRef = F5CBC5BC04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E997499E07705CC400206F68 = { - fileRef = F5CBC5BD04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E997499F07705CC400206F68 = { - fileRef = F5CBC5BE04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99749A007705CC400206F68 = { - fileRef = F5CBC5BF04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99749A107705CC400206F68 = { - fileRef = F5CBC5C004757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99749A207705CC400206F68 = { - fileRef = F5CBC5C104757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E99749A307705CC400206F68 = { - buildActionMask = 2147483647; - files = ( - E99749A407705CC400206F68, - E99749A507705CC400206F68, - E99749A607705CC400206F68, - E99749A707705CC400206F68, - E99749A807705CC400206F68, - E99749A907705CC400206F68, - E99749AA07705CC400206F68, - E99749AB07705CC400206F68, - E99749AC07705CC400206F68, - E99749AD07705CC400206F68, - E99749AE07705CC400206F68, - E99749AF07705CC400206F68, - E99749B007705CC400206F68, - E99749B107705CC400206F68, - E99749B207705CC400206F68, - E99749B307705CC400206F68, - E99749B407705CC400206F68, - E99749B507705CC400206F68, - E99749B607705CC400206F68, - E99749B707705CC400206F68, - E99749B807705CC400206F68, - E99749B907705CC400206F68, - E99749BA07705CC400206F68, - E99749BB07705CC400206F68, - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E99749A407705CC400206F68 = { - fileRef = F55CED7C0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99749A507705CC400206F68 = { - fileRef = F504A66B03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99749A607705CC400206F68 = { - fileRef = F504A66C03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99749A707705CC400206F68 = { - fileRef = F55CED7B0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99749A807705CC400206F68 = { - fileRef = F55CED7D0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99749A907705CC400206F68 = { - fileRef = E9BDCC4104F4D7C1008929A0; - isa = PBXBuildFile; - settings = { - }; - }; - E99749AA07705CC400206F68 = { - fileRef = F55CED7E0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99749AB07705CC400206F68 = { - fileRef = F598D263044CC4A001A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99749AC07705CC400206F68 = { - fileRef = F55CED800383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99749AD07705CC400206F68 = { - fileRef = F55CED880383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99749AE07705CC400206F68 = { - fileRef = F55CED8A0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99749AF07705CC400206F68 = { - fileRef = F504A66D03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99749B007705CC400206F68 = { - fileRef = F55CED8D0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99749B107705CC400206F68 = { - fileRef = F504A66E03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99749B207705CC400206F68 = { - fileRef = F504A66F03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99749B307705CC400206F68 = { - fileRef = F55CED8F0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99749B407705CC400206F68 = { - fileRef = F504A67103CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99749B507705CC400206F68 = { - fileRef = F504A67203CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99749B607705CC400206F68 = { - fileRef = F598D264044CC4A001A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99749B707705CC400206F68 = { - fileRef = F55CED930383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99749B807705CC400206F68 = { - fileRef = F55CED950383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99749B907705CC400206F68 = { - fileRef = F5B1FAC8041191190179CFEF; - isa = PBXBuildFile; - settings = { - }; - }; - E99749BA07705CC400206F68 = { - fileRef = F55CED960383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99749BB07705CC400206F68 = { - fileRef = F55CED970383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E99749BC07705CC400206F68 = { - buildActionMask = 2147483647; - files = ( - E99749BD07705CC400206F68, - E9974E160770780D00206F68, - E9974E170770780D00206F68, - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E99749BD07705CC400206F68 = { - fileRef = E9974802077054CD00206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E99749BE07705CC400206F68 = { - explicitFileType = archive.ar; - includeInIndex = 0; - isa = PBXFileReference; - path = "libflext-max_s.a"; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; - E99749BF07705D5200206F68 = { - fileRef = E9974802077054CD00206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974B9207705F1400206F68 = { - buildPhases = ( - E9974B9307705F1400206F68, - E9974BA907705F1400206F68, - E9974BC207705F1400206F68, - ); - buildRules = ( - ); - buildSettings = { - GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=1 FLEXT_THREADS"; - HEADER_SEARCH_PATHS = "$(Max SDK)/max-includes $(Max SDK)/msp-includes"; - INSTALL_PATH = /usr/local/lib; - LIBRARY_STYLE = STATIC; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = "flext-max_t"; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; - }; - dependencies = ( - ); - isa = PBXNativeTarget; - name = "Max static multi"; - productName = "PD static single"; - productReference = E9974BC407705F1400206F68; - productType = "com.apple.product-type.library.static"; - }; - E9974B9307705F1400206F68 = { - buildActionMask = 2147483647; - files = ( - E9974B9407705F1400206F68, - E9974B9507705F1400206F68, - E9974B9607705F1400206F68, - E9974B9707705F1400206F68, - E9974B9807705F1400206F68, - E9974B9907705F1400206F68, - E9974B9A07705F1400206F68, - E9974B9B07705F1400206F68, - E9974B9C07705F1400206F68, - E9974B9D07705F1400206F68, - E9974B9E07705F1400206F68, - E9974B9F07705F1400206F68, - E9974BA007705F1400206F68, - E9974BA107705F1400206F68, - E9974BA207705F1400206F68, - E9974BA307705F1400206F68, - E9974BA407705F1400206F68, - E9974BA507705F1400206F68, - E9974BA607705F1400206F68, - E9974BA707705F1400206F68, - E9974BA807705F1400206F68, - ); - isa = PBXHeadersBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E9974B9407705F1400206F68 = { - fileRef = F504A67003CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974B9507705F1400206F68 = { - fileRef = F55CED7F0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974B9607705F1400206F68 = { - fileRef = F55CED810383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974B9707705F1400206F68 = { - fileRef = F55CED870383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974B9807705F1400206F68 = { - fileRef = F55CED890383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974B9907705F1400206F68 = { - fileRef = F55CED8B0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974B9A07705F1400206F68 = { - fileRef = F55CED8C0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974B9B07705F1400206F68 = { - fileRef = F55CED8E0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974B9C07705F1400206F68 = { - fileRef = F55CED920383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974B9D07705F1400206F68 = { - fileRef = F55CED940383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974B9E07705F1400206F68 = { - fileRef = F55CED860383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974B9F07705F1400206F68 = { - fileRef = F5CBC5B804757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BA007705F1400206F68 = { - fileRef = F5CBC5B904757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BA107705F1400206F68 = { - fileRef = F5CBC5BA04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BA207705F1400206F68 = { - fileRef = F5CBC5BB04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BA307705F1400206F68 = { - fileRef = F5CBC5BC04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BA407705F1400206F68 = { - fileRef = F5CBC5BD04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BA507705F1400206F68 = { - fileRef = F5CBC5BE04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BA607705F1400206F68 = { - fileRef = F5CBC5BF04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BA707705F1400206F68 = { - fileRef = F5CBC5C004757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BA807705F1400206F68 = { - fileRef = F5CBC5C104757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BA907705F1400206F68 = { - buildActionMask = 2147483647; - files = ( - E9974BAA07705F1400206F68, - E9974BAB07705F1400206F68, - E9974BAC07705F1400206F68, - E9974BAD07705F1400206F68, - E9974BAE07705F1400206F68, - E9974BAF07705F1400206F68, - E9974BB007705F1400206F68, - E9974BB107705F1400206F68, - E9974BB207705F1400206F68, - E9974BB307705F1400206F68, - E9974BB407705F1400206F68, - E9974BB507705F1400206F68, - E9974BB607705F1400206F68, - E9974BB707705F1400206F68, - E9974BB807705F1400206F68, - E9974BB907705F1400206F68, - E9974BBA07705F1400206F68, - E9974BBB07705F1400206F68, - E9974BBC07705F1400206F68, - E9974BBD07705F1400206F68, - E9974BBE07705F1400206F68, - E9974BBF07705F1400206F68, - E9974BC007705F1400206F68, - E9974BC107705F1400206F68, - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E9974BAA07705F1400206F68 = { - fileRef = F55CED7C0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BAB07705F1400206F68 = { - fileRef = F504A66B03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BAC07705F1400206F68 = { - fileRef = F504A66C03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BAD07705F1400206F68 = { - fileRef = F55CED7B0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BAE07705F1400206F68 = { - fileRef = F55CED7D0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BAF07705F1400206F68 = { - fileRef = E9BDCC4104F4D7C1008929A0; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BB007705F1400206F68 = { - fileRef = F55CED7E0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BB107705F1400206F68 = { - fileRef = F598D263044CC4A001A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BB207705F1400206F68 = { - fileRef = F55CED800383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BB307705F1400206F68 = { - fileRef = F55CED880383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BB407705F1400206F68 = { - fileRef = F55CED8A0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BB507705F1400206F68 = { - fileRef = F504A66D03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BB607705F1400206F68 = { - fileRef = F55CED8D0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BB707705F1400206F68 = { - fileRef = F504A66E03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BB807705F1400206F68 = { - fileRef = F504A66F03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BB907705F1400206F68 = { - fileRef = F55CED8F0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BBA07705F1400206F68 = { - fileRef = F504A67103CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BBB07705F1400206F68 = { - fileRef = F504A67203CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BBC07705F1400206F68 = { - fileRef = F598D264044CC4A001A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BBD07705F1400206F68 = { - fileRef = F55CED930383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BBE07705F1400206F68 = { - fileRef = F55CED950383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BBF07705F1400206F68 = { - fileRef = F5B1FAC8041191190179CFEF; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BC007705F1400206F68 = { - fileRef = F55CED960383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BC107705F1400206F68 = { - fileRef = F55CED970383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BC207705F1400206F68 = { - buildActionMask = 2147483647; - files = ( - E9974BC307705F1400206F68, - E9974E180770780D00206F68, - E9974E190770780D00206F68, - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E9974BC307705F1400206F68 = { - fileRef = E9974802077054CD00206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BC407705F1400206F68 = { - explicitFileType = archive.ar; - includeInIndex = 0; - isa = PBXFileReference; - path = "libflext-max_t.a"; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; - E9974BC507705F4F00206F68 = { - buildPhases = ( - E9974BC607705F4F00206F68, - E9974BDE07705F4F00206F68, - E9974BF707705F4F00206F68, - ); - buildRules = ( - ); - buildSettings = { - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(Max SDK)/max-includes/ext_carbon_prefix.h"; - GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=1 FLEXT_SHARED"; - HEADER_SEARCH_PATHS = "$(Max SDK)/max-includes $(Max SDK)/msp-includes"; - INSTALL_PATH = /usr/local/lib; - LIBRARY_SEARCH_PATHS = "$(Max SDK)/msp-includes $(Max SDK)/msp-includes"; - LIBRARY_STYLE = DYNAMIC; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PREBINDING = YES; - PRODUCT_NAME = "flext-max"; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; - }; - dependencies = ( - ); - isa = PBXNativeTarget; - name = "Max shared"; - productName = "PD shared"; - productReference = E9974BFA07705F4F00206F68; - productType = "com.apple.product-type.library.dynamic"; - }; - E9974BC607705F4F00206F68 = { - buildActionMask = 2147483647; - files = ( - E9974BC707705F4F00206F68, - E9974BC807705F4F00206F68, - E9974BC907705F4F00206F68, - E9974BCA07705F4F00206F68, - E9974BCB07705F4F00206F68, - E9974BCC07705F4F00206F68, - E9974BCD07705F4F00206F68, - E9974BCE07705F4F00206F68, - E9974BCF07705F4F00206F68, - E9974BD007705F4F00206F68, - E9974BD107705F4F00206F68, - E9974BD207705F4F00206F68, - E9974BD307705F4F00206F68, - E9974BD407705F4F00206F68, - E9974BD507705F4F00206F68, - E9974BD607705F4F00206F68, - E9974BD707705F4F00206F68, - E9974BD807705F4F00206F68, - E9974BD907705F4F00206F68, - E9974BDA07705F4F00206F68, - E9974BDB07705F4F00206F68, - E9974BDC07705F4F00206F68, - E9974BDD07705F4F00206F68, - ); - isa = PBXHeadersBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E9974BC707705F4F00206F68 = { - fileRef = F55CED860383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BC807705F4F00206F68 = { - fileRef = F5CBC5B804757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BC907705F4F00206F68 = { - fileRef = F5CBC5B904757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BCA07705F4F00206F68 = { - fileRef = F5CBC5BA04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BCB07705F4F00206F68 = { - fileRef = F5CBC5BB04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BCC07705F4F00206F68 = { - fileRef = F5CBC5BC04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BCD07705F4F00206F68 = { - fileRef = F5CBC5BD04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BCE07705F4F00206F68 = { - fileRef = F5CBC5BE04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BCF07705F4F00206F68 = { - fileRef = F5CBC5BF04757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BD007705F4F00206F68 = { - fileRef = F5CBC5C004757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BD107705F4F00206F68 = { - fileRef = F5CBC5C104757BC801A0C81C; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BD207705F4F00206F68 = { - fileRef = F504A67003CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BD307705F4F00206F68 = { - fileRef = F55CED7F0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BD407705F4F00206F68 = { - fileRef = F55CED810383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BD507705F4F00206F68 = { - fileRef = F55CED870383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BD607705F4F00206F68 = { - fileRef = F55CED890383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BD707705F4F00206F68 = { - fileRef = F55CED8B0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BD807705F4F00206F68 = { - fileRef = F55CED8C0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BD907705F4F00206F68 = { - fileRef = F55CED8E0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BDA07705F4F00206F68 = { - fileRef = F55CED910383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BDB07705F4F00206F68 = { - fileRef = F55CED920383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BDC07705F4F00206F68 = { - fileRef = F55CED940383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BDD07705F4F00206F68 = { - fileRef = F504A67403CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BDE07705F4F00206F68 = { - buildActionMask = 2147483647; - files = ( - E9974BDF07705F4F00206F68, - E9974BE007705F4F00206F68, - E9974BE107705F4F00206F68, - E9974BE207705F4F00206F68, - E9974BE307705F4F00206F68, - E9974BE407705F4F00206F68, - E9974BE507705F4F00206F68, - E9974BE607705F4F00206F68, - E9974BE707705F4F00206F68, - E9974BE807705F4F00206F68, - E9974BE907705F4F00206F68, - E9974BEA07705F4F00206F68, - E9974BEB07705F4F00206F68, - E9974BEC07705F4F00206F68, - E9974BED07705F4F00206F68, - E9974BEE07705F4F00206F68, - E9974BEF07705F4F00206F68, - E9974BF007705F4F00206F68, - E9974BF107705F4F00206F68, - E9974BF207705F4F00206F68, - E9974BF307705F4F00206F68, - E9974BF407705F4F00206F68, - E9974BF507705F4F00206F68, - E9974BF607705F4F00206F68, - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E9974BDF07705F4F00206F68 = { - fileRef = F55CED7C0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BE007705F4F00206F68 = { - fileRef = F504A66B03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BE107705F4F00206F68 = { - fileRef = F504A66C03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BE207705F4F00206F68 = { - fileRef = F55CED7B0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BE307705F4F00206F68 = { - fileRef = F55CED7D0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BE407705F4F00206F68 = { - fileRef = E9BDCC4104F4D7C1008929A0; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BE507705F4F00206F68 = { - fileRef = F55CED7E0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BE607705F4F00206F68 = { - fileRef = F598D263044CC4A001A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BE707705F4F00206F68 = { - fileRef = F55CED800383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BE807705F4F00206F68 = { - fileRef = F55CED880383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BE907705F4F00206F68 = { - fileRef = F55CED8A0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BEA07705F4F00206F68 = { - fileRef = F504A66D03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BEB07705F4F00206F68 = { - fileRef = F55CED8D0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BEC07705F4F00206F68 = { - fileRef = F504A66E03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BED07705F4F00206F68 = { - fileRef = F504A66F03CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BEE07705F4F00206F68 = { - fileRef = F55CED8F0383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BEF07705F4F00206F68 = { - fileRef = F504A67103CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BF007705F4F00206F68 = { - fileRef = F504A67203CE39F501A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BF107705F4F00206F68 = { - fileRef = F598D264044CC4A001A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BF207705F4F00206F68 = { - fileRef = F55CED930383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BF307705F4F00206F68 = { - fileRef = F55CED950383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BF407705F4F00206F68 = { - fileRef = F5B1FAC8041191190179CFEF; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BF507705F4F00206F68 = { - fileRef = F55CED960383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BF607705F4F00206F68 = { - fileRef = F55CED970383E50201A80AC9; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BF707705F4F00206F68 = { - buildActionMask = 2147483647; - files = ( - E9974BF807705F4F00206F68, - E9974BF907705F4F00206F68, - E9974E1A0770780D00206F68, - E9974E1B0770780D00206F68, - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E9974BF807705F4F00206F68 = { - fileRef = E9974802077054CD00206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BF907705F4F00206F68 = { - fileRef = E99748D007705BAF00206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974BFA07705F4F00206F68 = { - explicitFileType = "compiled.mach-o.dylib"; - includeInIndex = 0; - isa = PBXFileReference; - path = "flext-max.dylib"; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; - E9974E140770780D00206F68 = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = MaxAPI.framework; - path = /Library/Frameworks/MaxAPI.framework; - refType = 0; - sourceTree = ""; - }; - E9974E150770780D00206F68 = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = MaxAudioAPI.framework; - path = /Library/Frameworks/MaxAudioAPI.framework; - refType = 0; - sourceTree = ""; - }; - E9974E160770780D00206F68 = { - fileRef = E9974E140770780D00206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974E170770780D00206F68 = { - fileRef = E9974E150770780D00206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974E180770780D00206F68 = { - fileRef = E9974E140770780D00206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974E190770780D00206F68 = { - fileRef = E9974E150770780D00206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974E1A0770780D00206F68 = { - fileRef = E9974E140770780D00206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9974E1B0770780D00206F68 = { - fileRef = E9974E150770780D00206F68; - isa = PBXBuildFile; - settings = { - }; - }; - E9BDCC4104F4D7C1008929A0 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = flattr_ed.cpp; - path = source/flattr_ed.cpp; - refType = 4; - sourceTree = ""; - }; -//E90 -//E91 -//E92 -//E93 -//E94 -//F50 -//F51 -//F52 -//F53 -//F54 - F504A66B03CE39F501A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = flatom_app.cpp; - path = source/flatom_app.cpp; - refType = 4; - sourceTree = ""; - }; - F504A66C03CE39F501A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = flatom_part.cpp; - path = source/flatom_part.cpp; - refType = 4; - sourceTree = ""; - }; - F504A66D03CE39F501A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = flitem.cpp; - path = source/flitem.cpp; - refType = 4; - sourceTree = ""; - }; - F504A66E03CE39F501A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = flmeth.cpp; - path = source/flmeth.cpp; - refType = 4; - sourceTree = ""; - }; - F504A66F03CE39F501A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = flmsg.cpp; - path = source/flmsg.cpp; - refType = 4; - sourceTree = ""; - }; - F504A67003CE39F501A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = flprefix.h; - path = source/flprefix.h; - refType = 4; - sourceTree = ""; - }; - F504A67103CE39F501A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = flproxy.cpp; - path = source/flproxy.cpp; - refType = 4; - sourceTree = ""; - }; - F504A67203CE39F501A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = flqueue.cpp; - path = source/flqueue.cpp; - refType = 4; - sourceTree = ""; - }; - F504A67303CE39F501A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = flstk.cpp; - path = source/flstk.cpp; - refType = 4; - sourceTree = ""; - }; - F504A67403CE39F501A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = flstk.h; - path = source/flstk.h; - refType = 4; - sourceTree = ""; - }; - F5128F2503864E5501A80AC9 = { - buildSettings = { - COPY_PHASE_STRIP = NO; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/flext.h; - GCC_PREPROCESSOR_DEFINITIONS = "$(GCC_PREPROCESSOR_DEFINITIONS) FLEXT_DEBUG"; - ZERO_LINK = YES; - }; - isa = PBXBuildStyle; - name = Development; - }; - F5128F2603864E5501A80AC9 = { - buildSettings = { - COPY_PHASE_STRIP = YES; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/flext.h; - ZERO_LINK = NO; - }; - isa = PBXBuildStyle; - name = Deployment; - }; - F55CED7B0383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = flatom_pr.cpp; - path = source/flatom_pr.cpp; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CED7C0383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = flatom.cpp; - path = source/flatom.cpp; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CED7D0383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = flattr.cpp; - path = source/flattr.cpp; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CED7E0383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = flbase.cpp; - path = source/flbase.cpp; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CED7F0383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = flbase.h; - path = source/flbase.h; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CED800383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = flbuf.cpp; - path = source/flbuf.cpp; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CED810383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = flclass.h; - path = source/flclass.h; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CED860383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = fldefs.h; - path = source/fldefs.h; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CED870383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = fldoxygen.h; - path = source/fldoxygen.h; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CED880383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = fldsp.cpp; - path = source/fldsp.cpp; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CED890383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = fldsp.h; - path = source/fldsp.h; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CED8A0383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = flext.cpp; - path = source/flext.cpp; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CED8B0383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = flext.h; - path = source/flext.h; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CED8C0383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = flinternal.h; - path = source/flinternal.h; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CED8D0383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = fllib.cpp; - path = source/fllib.cpp; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CED8E0383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = flmspbuffer.h; - path = source/flmspbuffer.h; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CED8F0383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = flout.cpp; - path = source/flout.cpp; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CED900383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = flsndobj.cpp; - path = source/flsndobj.cpp; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CED910383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = flsndobj.h; - path = source/flsndobj.h; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CED920383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = flstdc.h; - path = source/flstdc.h; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CED930383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = flsupport.cpp; - path = source/flsupport.cpp; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CED940383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = flsupport.h; - path = source/flsupport.h; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CED950383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = flthr.cpp; - path = source/flthr.cpp; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CED960383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = flutil.cpp; - path = source/flutil.cpp; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CED970383E50201A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = flxlet.cpp; - path = source/flxlet.cpp; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F55CEDB50383E50D01A80AC9 = { - children = ( - F5CBC61C04757BDA01A0C81C, - F504A67003CE39F501A80AC9, - F55CED7F0383E50201A80AC9, - F55CED810383E50201A80AC9, - F55CED870383E50201A80AC9, - F55CED890383E50201A80AC9, - F55CED8B0383E50201A80AC9, - F55CED8C0383E50201A80AC9, - F55CED8E0383E50201A80AC9, - F55CED910383E50201A80AC9, - F55CED920383E50201A80AC9, - F55CED940383E50201A80AC9, - F504A67403CE39F501A80AC9, - ); - isa = PBXGroup; - name = Headers; - path = ""; - refType = 2; - sourceTree = SOURCE_ROOT; - }; - F598D263044CC4A001A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = flbind.cpp; - path = source/flbind.cpp; - refType = 4; - sourceTree = ""; - }; - F598D264044CC4A001A80AC9 = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = flsimd.cpp; - path = source/flsimd.cpp; - refType = 4; - sourceTree = ""; - }; - F5B1FAC8041191190179CFEF = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = fltimer.cpp; - path = source/fltimer.cpp; - refType = 4; - sourceTree = ""; - }; - F5CBC5B804757BC801A0C81C = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = fldefs_attradd.h; - path = source/fldefs_attradd.h; - refType = 4; - sourceTree = ""; - }; - F5CBC5B904757BC801A0C81C = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = fldefs_attrcb.h; - path = source/fldefs_attrcb.h; - refType = 4; - sourceTree = ""; - }; - F5CBC5BA04757BC801A0C81C = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = fldefs_attrvar.h; - path = source/fldefs_attrvar.h; - refType = 4; - sourceTree = ""; - }; - F5CBC5BB04757BC801A0C81C = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = fldefs_hdr.h; - path = source/fldefs_hdr.h; - refType = 4; - sourceTree = ""; - }; - F5CBC5BC04757BC801A0C81C = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = fldefs_methadd.h; - path = source/fldefs_methadd.h; - refType = 4; - sourceTree = ""; - }; - F5CBC5BD04757BC801A0C81C = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = fldefs_methbind.h; - path = source/fldefs_methbind.h; - refType = 4; - sourceTree = ""; - }; - F5CBC5BE04757BC801A0C81C = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = fldefs_methcall.h; - path = source/fldefs_methcall.h; - refType = 4; - sourceTree = ""; - }; - F5CBC5BF04757BC801A0C81C = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = fldefs_methcb.h; - path = source/fldefs_methcb.h; - refType = 4; - sourceTree = ""; - }; - F5CBC5C004757BC801A0C81C = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = fldefs_meththr.h; - path = source/fldefs_meththr.h; - refType = 4; - sourceTree = ""; - }; - F5CBC5C104757BC801A0C81C = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = fldefs_setup.h; - path = source/fldefs_setup.h; - refType = 4; - sourceTree = ""; - }; - F5CBC61C04757BDA01A0C81C = { - children = ( - F55CED860383E50201A80AC9, - F5CBC5B804757BC801A0C81C, - F5CBC5B904757BC801A0C81C, - F5CBC5BA04757BC801A0C81C, - F5CBC5BB04757BC801A0C81C, - F5CBC5BC04757BC801A0C81C, - F5CBC5BD04757BC801A0C81C, - F5CBC5BE04757BC801A0C81C, - F5CBC5BF04757BC801A0C81C, - F5CBC5C004757BC801A0C81C, - F5CBC5C104757BC801A0C81C, - ); - isa = PBXGroup; - name = Defs; - refType = 4; - sourceTree = ""; - }; - }; - rootObject = 0867D690FE84028FC02AAC07; -} diff --git a/externals/grill/flext/flext.xcodeproj/project.pbxproj b/externals/grill/flext/flext.xcodeproj/project.pbxproj deleted file mode 100755 index 977beca5..00000000 --- a/externals/grill/flext/flext.xcodeproj/project.pbxproj +++ /dev/null @@ -1,1697 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 42; - objects = { - -/* Begin PBXBuildFile section */ - E99747CE0770548700206F68 /* flatom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7C0383E50201A80AC9 /* flatom.cpp */; }; - E99747D00770548700206F68 /* flatom_part.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66C03CE39F501A80AC9 /* flatom_part.cpp */; }; - E99747D10770548700206F68 /* flatom_pr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7B0383E50201A80AC9 /* flatom_pr.cpp */; }; - E99747D20770548700206F68 /* flattr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7D0383E50201A80AC9 /* flattr.cpp */; }; - E99747D30770548700206F68 /* flattr_ed.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9BDCC4104F4D7C1008929A0 /* flattr_ed.cpp */; }; - E99747D40770548700206F68 /* flbase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7E0383E50201A80AC9 /* flbase.cpp */; }; - E99747D50770548700206F68 /* flbind.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F598D263044CC4A001A80AC9 /* flbind.cpp */; }; - E99747D60770548700206F68 /* flbuf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED800383E50201A80AC9 /* flbuf.cpp */; }; - E99747D70770548700206F68 /* fldsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED880383E50201A80AC9 /* fldsp.cpp */; }; - E99747D80770548700206F68 /* flext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8A0383E50201A80AC9 /* flext.cpp */; }; - E99747D90770548700206F68 /* flitem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66D03CE39F501A80AC9 /* flitem.cpp */; }; - E99747DA0770548700206F68 /* fllib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8D0383E50201A80AC9 /* fllib.cpp */; }; - E99747DB0770548700206F68 /* flmeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66E03CE39F501A80AC9 /* flmeth.cpp */; }; - E99747DC0770548700206F68 /* flmsg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66F03CE39F501A80AC9 /* flmsg.cpp */; }; - E99747DD0770548700206F68 /* flout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8F0383E50201A80AC9 /* flout.cpp */; }; - E99747DE0770548700206F68 /* flproxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A67103CE39F501A80AC9 /* flproxy.cpp */; }; - E99747DF0770548700206F68 /* flqueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A67203CE39F501A80AC9 /* flqueue.cpp */; }; - E99747E00770548700206F68 /* flsimd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F598D264044CC4A001A80AC9 /* flsimd.cpp */; }; - E99747E30770548700206F68 /* flsupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED930383E50201A80AC9 /* flsupport.cpp */; }; - E99747E40770548700206F68 /* flthr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED950383E50201A80AC9 /* flthr.cpp */; }; - E99747E50770548700206F68 /* fltimer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5B1FAC8041191190179CFEF /* fltimer.cpp */; }; - E99747E60770548700206F68 /* flutil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED960383E50201A80AC9 /* flutil.cpp */; }; - E99747E70770548700206F68 /* flxlet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED970383E50201A80AC9 /* flxlet.cpp */; }; - E99747E80770548F00206F68 /* flbase.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED7F0383E50201A80AC9 /* flbase.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E99747E90770548F00206F68 /* flclass.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED810383E50201A80AC9 /* flclass.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E99747EA0770548F00206F68 /* fldefs.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED860383E50201A80AC9 /* fldefs.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E99747EB0770548F00206F68 /* fldefs_attradd.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5B804757BC801A0C81C /* fldefs_attradd.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E99747EC0770548F00206F68 /* fldefs_attrcb.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5B904757BC801A0C81C /* fldefs_attrcb.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E99747ED0770548F00206F68 /* fldefs_attrvar.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BA04757BC801A0C81C /* fldefs_attrvar.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E99747EE0770548F00206F68 /* fldefs_hdr.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BB04757BC801A0C81C /* fldefs_hdr.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E99747EF0770548F00206F68 /* fldefs_methadd.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BC04757BC801A0C81C /* fldefs_methadd.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E99747F00770548F00206F68 /* fldefs_methbind.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BD04757BC801A0C81C /* fldefs_methbind.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E99747F10770548F00206F68 /* fldefs_methcall.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BE04757BC801A0C81C /* fldefs_methcall.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E99747F20770548F00206F68 /* fldefs_methcb.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BF04757BC801A0C81C /* fldefs_methcb.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E99747F30770548F00206F68 /* fldefs_meththr.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5C004757BC801A0C81C /* fldefs_meththr.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E99747F40770548F00206F68 /* fldefs_setup.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5C104757BC801A0C81C /* fldefs_setup.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E99747F50770548F00206F68 /* fldoxygen.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED870383E50201A80AC9 /* fldoxygen.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E99747F60770548F00206F68 /* fldsp.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED890383E50201A80AC9 /* fldsp.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E99747F70770548F00206F68 /* flext.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8B0383E50201A80AC9 /* flext.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E99747F80770548F00206F68 /* flinternal.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8C0383E50201A80AC9 /* flinternal.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E99747F90770548F00206F68 /* flmspbuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8E0383E50201A80AC9 /* flmspbuffer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E99747FA0770548F00206F68 /* flprefix.h in Headers */ = {isa = PBXBuildFile; fileRef = F504A67003CE39F501A80AC9 /* flprefix.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E99747FC0770548F00206F68 /* flstdc.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED920383E50201A80AC9 /* flstdc.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E99747FE0770548F00206F68 /* flsupport.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED940383E50201A80AC9 /* flsupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E9974803077054CD00206F68 /* vecLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974802077054CD00206F68 /* vecLib.framework */; }; - E997480F0770570800206F68 /* flprefix.h in Headers */ = {isa = PBXBuildFile; fileRef = F504A67003CE39F501A80AC9 /* flprefix.h */; }; - E99748100770570800206F68 /* flbase.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED7F0383E50201A80AC9 /* flbase.h */; }; - E99748110770570800206F68 /* flclass.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED810383E50201A80AC9 /* flclass.h */; }; - E99748120770570800206F68 /* fldoxygen.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED870383E50201A80AC9 /* fldoxygen.h */; }; - E99748130770570800206F68 /* fldsp.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED890383E50201A80AC9 /* fldsp.h */; }; - E99748140770570800206F68 /* flext.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8B0383E50201A80AC9 /* flext.h */; }; - E99748150770570800206F68 /* flinternal.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8C0383E50201A80AC9 /* flinternal.h */; }; - E99748160770570800206F68 /* flmspbuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8E0383E50201A80AC9 /* flmspbuffer.h */; }; - E99748170770570800206F68 /* flstdc.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED920383E50201A80AC9 /* flstdc.h */; }; - E99748180770570800206F68 /* flsupport.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED940383E50201A80AC9 /* flsupport.h */; }; - E99748190770570800206F68 /* fldefs.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED860383E50201A80AC9 /* fldefs.h */; }; - E997481A0770570800206F68 /* fldefs_attradd.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5B804757BC801A0C81C /* fldefs_attradd.h */; }; - E997481B0770570800206F68 /* fldefs_attrcb.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5B904757BC801A0C81C /* fldefs_attrcb.h */; }; - E997481C0770570800206F68 /* fldefs_attrvar.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BA04757BC801A0C81C /* fldefs_attrvar.h */; }; - E997481D0770570800206F68 /* fldefs_hdr.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BB04757BC801A0C81C /* fldefs_hdr.h */; }; - E997481E0770570800206F68 /* fldefs_methadd.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BC04757BC801A0C81C /* fldefs_methadd.h */; }; - E997481F0770570800206F68 /* fldefs_methbind.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BD04757BC801A0C81C /* fldefs_methbind.h */; }; - E99748200770570800206F68 /* fldefs_methcall.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BE04757BC801A0C81C /* fldefs_methcall.h */; }; - E99748210770570800206F68 /* fldefs_methcb.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BF04757BC801A0C81C /* fldefs_methcb.h */; }; - E99748220770570800206F68 /* fldefs_meththr.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5C004757BC801A0C81C /* fldefs_meththr.h */; }; - E99748230770570800206F68 /* fldefs_setup.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5C104757BC801A0C81C /* fldefs_setup.h */; }; - E99748250770570800206F68 /* flatom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7C0383E50201A80AC9 /* flatom.cpp */; }; - E99748270770570800206F68 /* flatom_part.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66C03CE39F501A80AC9 /* flatom_part.cpp */; }; - E99748280770570800206F68 /* flatom_pr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7B0383E50201A80AC9 /* flatom_pr.cpp */; }; - E99748290770570800206F68 /* flattr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7D0383E50201A80AC9 /* flattr.cpp */; }; - E997482A0770570800206F68 /* flattr_ed.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9BDCC4104F4D7C1008929A0 /* flattr_ed.cpp */; }; - E997482B0770570800206F68 /* flbase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7E0383E50201A80AC9 /* flbase.cpp */; }; - E997482C0770570800206F68 /* flbind.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F598D263044CC4A001A80AC9 /* flbind.cpp */; }; - E997482D0770570800206F68 /* flbuf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED800383E50201A80AC9 /* flbuf.cpp */; }; - E997482E0770570800206F68 /* fldsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED880383E50201A80AC9 /* fldsp.cpp */; }; - E997482F0770570800206F68 /* flext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8A0383E50201A80AC9 /* flext.cpp */; }; - E99748300770570800206F68 /* flitem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66D03CE39F501A80AC9 /* flitem.cpp */; }; - E99748310770570800206F68 /* fllib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8D0383E50201A80AC9 /* fllib.cpp */; }; - E99748320770570800206F68 /* flmeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66E03CE39F501A80AC9 /* flmeth.cpp */; }; - E99748330770570800206F68 /* flmsg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66F03CE39F501A80AC9 /* flmsg.cpp */; }; - E99748340770570800206F68 /* flout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8F0383E50201A80AC9 /* flout.cpp */; }; - E99748350770570800206F68 /* flproxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A67103CE39F501A80AC9 /* flproxy.cpp */; }; - E99748360770570800206F68 /* flqueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A67203CE39F501A80AC9 /* flqueue.cpp */; }; - E99748370770570800206F68 /* flsimd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F598D264044CC4A001A80AC9 /* flsimd.cpp */; }; - E99748380770570800206F68 /* flsupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED930383E50201A80AC9 /* flsupport.cpp */; }; - E99748390770570800206F68 /* flthr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED950383E50201A80AC9 /* flthr.cpp */; }; - E997483A0770570800206F68 /* fltimer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5B1FAC8041191190179CFEF /* fltimer.cpp */; }; - E997483B0770570800206F68 /* flutil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED960383E50201A80AC9 /* flutil.cpp */; }; - E997483C0770570800206F68 /* flxlet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED970383E50201A80AC9 /* flxlet.cpp */; }; - E997483E0770570800206F68 /* vecLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974802077054CD00206F68 /* vecLib.framework */; }; - E997488C0770593C00206F68 /* flatom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7C0383E50201A80AC9 /* flatom.cpp */; }; - E997488E0770593C00206F68 /* flatom_part.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66C03CE39F501A80AC9 /* flatom_part.cpp */; }; - E997488F0770593C00206F68 /* flatom_pr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7B0383E50201A80AC9 /* flatom_pr.cpp */; }; - E99748900770593C00206F68 /* flattr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7D0383E50201A80AC9 /* flattr.cpp */; }; - E99748910770593C00206F68 /* flattr_ed.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9BDCC4104F4D7C1008929A0 /* flattr_ed.cpp */; }; - E99748920770593C00206F68 /* flbase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7E0383E50201A80AC9 /* flbase.cpp */; }; - E99748930770593C00206F68 /* flbind.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F598D263044CC4A001A80AC9 /* flbind.cpp */; }; - E99748940770593C00206F68 /* flbuf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED800383E50201A80AC9 /* flbuf.cpp */; }; - E99748950770593C00206F68 /* fldsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED880383E50201A80AC9 /* fldsp.cpp */; }; - E99748960770593C00206F68 /* flext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8A0383E50201A80AC9 /* flext.cpp */; }; - E99748970770593C00206F68 /* flitem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66D03CE39F501A80AC9 /* flitem.cpp */; }; - E99748980770593C00206F68 /* fllib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8D0383E50201A80AC9 /* fllib.cpp */; }; - E99748990770593C00206F68 /* flmeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66E03CE39F501A80AC9 /* flmeth.cpp */; }; - E997489A0770593C00206F68 /* flmsg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66F03CE39F501A80AC9 /* flmsg.cpp */; }; - E997489B0770593C00206F68 /* flout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8F0383E50201A80AC9 /* flout.cpp */; }; - E997489C0770593C00206F68 /* flproxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A67103CE39F501A80AC9 /* flproxy.cpp */; }; - E997489D0770593C00206F68 /* flqueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A67203CE39F501A80AC9 /* flqueue.cpp */; }; - E997489E0770593C00206F68 /* flsimd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F598D264044CC4A001A80AC9 /* flsimd.cpp */; }; - E997489F0770593C00206F68 /* flsupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED930383E50201A80AC9 /* flsupport.cpp */; }; - E99748A00770593C00206F68 /* flthr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED950383E50201A80AC9 /* flthr.cpp */; }; - E99748A10770593C00206F68 /* fltimer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5B1FAC8041191190179CFEF /* fltimer.cpp */; }; - E99748A20770593C00206F68 /* flutil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED960383E50201A80AC9 /* flutil.cpp */; }; - E99748A30770593C00206F68 /* flxlet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED970383E50201A80AC9 /* flxlet.cpp */; }; - E99748A40770595500206F68 /* flprefix.h in Headers */ = {isa = PBXBuildFile; fileRef = F504A67003CE39F501A80AC9 /* flprefix.h */; }; - E99748A50770595500206F68 /* flbase.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED7F0383E50201A80AC9 /* flbase.h */; }; - E99748A60770595500206F68 /* flclass.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED810383E50201A80AC9 /* flclass.h */; }; - E99748A70770595500206F68 /* fldoxygen.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED870383E50201A80AC9 /* fldoxygen.h */; }; - E99748A80770595500206F68 /* fldsp.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED890383E50201A80AC9 /* fldsp.h */; }; - E99748A90770595600206F68 /* flext.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8B0383E50201A80AC9 /* flext.h */; }; - E99748AA0770595600206F68 /* flinternal.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8C0383E50201A80AC9 /* flinternal.h */; }; - E99748AB0770595600206F68 /* flmspbuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8E0383E50201A80AC9 /* flmspbuffer.h */; }; - E99748AC0770595600206F68 /* flsndobj.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED910383E50201A80AC9 /* flsndobj.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E99748AD0770595600206F68 /* flstdc.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED920383E50201A80AC9 /* flstdc.h */; }; - E99748AE0770595600206F68 /* flsupport.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED940383E50201A80AC9 /* flsupport.h */; }; - E99748AF0770595600206F68 /* flstk.h in Headers */ = {isa = PBXBuildFile; fileRef = F504A67403CE39F501A80AC9 /* flstk.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E99748B00770595E00206F68 /* fldefs.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED860383E50201A80AC9 /* fldefs.h */; }; - E99748B10770595E00206F68 /* fldefs_attradd.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5B804757BC801A0C81C /* fldefs_attradd.h */; }; - E99748B20770595E00206F68 /* fldefs_attrcb.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5B904757BC801A0C81C /* fldefs_attrcb.h */; }; - E99748B30770595E00206F68 /* fldefs_attrvar.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BA04757BC801A0C81C /* fldefs_attrvar.h */; }; - E99748B40770595E00206F68 /* fldefs_hdr.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BB04757BC801A0C81C /* fldefs_hdr.h */; }; - E99748B50770595E00206F68 /* fldefs_methadd.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BC04757BC801A0C81C /* fldefs_methadd.h */; }; - E99748B60770595E00206F68 /* fldefs_methbind.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BD04757BC801A0C81C /* fldefs_methbind.h */; }; - E99748B70770595E00206F68 /* fldefs_methcall.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BE04757BC801A0C81C /* fldefs_methcall.h */; }; - E99748B80770595E00206F68 /* fldefs_methcb.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BF04757BC801A0C81C /* fldefs_methcb.h */; }; - E99748B90770595E00206F68 /* fldefs_meththr.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5C004757BC801A0C81C /* fldefs_meththr.h */; }; - E99748BA0770595E00206F68 /* fldefs_setup.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5C104757BC801A0C81C /* fldefs_setup.h */; }; - E99748D107705BAF00206F68 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E99748D007705BAF00206F68 /* ApplicationServices.framework */; }; - E997498E07705CC400206F68 /* flprefix.h in Headers */ = {isa = PBXBuildFile; fileRef = F504A67003CE39F501A80AC9 /* flprefix.h */; }; - E997498F07705CC400206F68 /* flbase.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED7F0383E50201A80AC9 /* flbase.h */; }; - E997499007705CC400206F68 /* flclass.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED810383E50201A80AC9 /* flclass.h */; }; - E997499107705CC400206F68 /* fldoxygen.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED870383E50201A80AC9 /* fldoxygen.h */; }; - E997499207705CC400206F68 /* fldsp.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED890383E50201A80AC9 /* fldsp.h */; }; - E997499307705CC400206F68 /* flext.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8B0383E50201A80AC9 /* flext.h */; }; - E997499407705CC400206F68 /* flinternal.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8C0383E50201A80AC9 /* flinternal.h */; }; - E997499507705CC400206F68 /* flmspbuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8E0383E50201A80AC9 /* flmspbuffer.h */; }; - E997499607705CC400206F68 /* flstdc.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED920383E50201A80AC9 /* flstdc.h */; }; - E997499707705CC400206F68 /* flsupport.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED940383E50201A80AC9 /* flsupport.h */; }; - E997499807705CC400206F68 /* fldefs.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED860383E50201A80AC9 /* fldefs.h */; }; - E997499907705CC400206F68 /* fldefs_attradd.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5B804757BC801A0C81C /* fldefs_attradd.h */; }; - E997499A07705CC400206F68 /* fldefs_attrcb.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5B904757BC801A0C81C /* fldefs_attrcb.h */; }; - E997499B07705CC400206F68 /* fldefs_attrvar.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BA04757BC801A0C81C /* fldefs_attrvar.h */; }; - E997499C07705CC400206F68 /* fldefs_hdr.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BB04757BC801A0C81C /* fldefs_hdr.h */; }; - E997499D07705CC400206F68 /* fldefs_methadd.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BC04757BC801A0C81C /* fldefs_methadd.h */; }; - E997499E07705CC400206F68 /* fldefs_methbind.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BD04757BC801A0C81C /* fldefs_methbind.h */; }; - E997499F07705CC400206F68 /* fldefs_methcall.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BE04757BC801A0C81C /* fldefs_methcall.h */; }; - E99749A007705CC400206F68 /* fldefs_methcb.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BF04757BC801A0C81C /* fldefs_methcb.h */; }; - E99749A107705CC400206F68 /* fldefs_meththr.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5C004757BC801A0C81C /* fldefs_meththr.h */; }; - E99749A207705CC400206F68 /* fldefs_setup.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5C104757BC801A0C81C /* fldefs_setup.h */; }; - E99749A407705CC400206F68 /* flatom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7C0383E50201A80AC9 /* flatom.cpp */; }; - E99749A607705CC400206F68 /* flatom_part.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66C03CE39F501A80AC9 /* flatom_part.cpp */; }; - E99749A707705CC400206F68 /* flatom_pr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7B0383E50201A80AC9 /* flatom_pr.cpp */; }; - E99749A807705CC400206F68 /* flattr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7D0383E50201A80AC9 /* flattr.cpp */; }; - E99749A907705CC400206F68 /* flattr_ed.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9BDCC4104F4D7C1008929A0 /* flattr_ed.cpp */; }; - E99749AA07705CC400206F68 /* flbase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7E0383E50201A80AC9 /* flbase.cpp */; }; - E99749AB07705CC400206F68 /* flbind.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F598D263044CC4A001A80AC9 /* flbind.cpp */; }; - E99749AC07705CC400206F68 /* flbuf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED800383E50201A80AC9 /* flbuf.cpp */; }; - E99749AD07705CC400206F68 /* fldsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED880383E50201A80AC9 /* fldsp.cpp */; }; - E99749AE07705CC400206F68 /* flext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8A0383E50201A80AC9 /* flext.cpp */; }; - E99749AF07705CC400206F68 /* flitem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66D03CE39F501A80AC9 /* flitem.cpp */; }; - E99749B007705CC400206F68 /* fllib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8D0383E50201A80AC9 /* fllib.cpp */; }; - E99749B107705CC400206F68 /* flmeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66E03CE39F501A80AC9 /* flmeth.cpp */; }; - E99749B207705CC400206F68 /* flmsg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66F03CE39F501A80AC9 /* flmsg.cpp */; }; - E99749B307705CC400206F68 /* flout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8F0383E50201A80AC9 /* flout.cpp */; }; - E99749B407705CC400206F68 /* flproxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A67103CE39F501A80AC9 /* flproxy.cpp */; }; - E99749B507705CC400206F68 /* flqueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A67203CE39F501A80AC9 /* flqueue.cpp */; }; - E99749B607705CC400206F68 /* flsimd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F598D264044CC4A001A80AC9 /* flsimd.cpp */; }; - E99749B707705CC400206F68 /* flsupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED930383E50201A80AC9 /* flsupport.cpp */; }; - E99749B807705CC400206F68 /* flthr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED950383E50201A80AC9 /* flthr.cpp */; }; - E99749B907705CC400206F68 /* fltimer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5B1FAC8041191190179CFEF /* fltimer.cpp */; }; - E99749BA07705CC400206F68 /* flutil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED960383E50201A80AC9 /* flutil.cpp */; }; - E99749BB07705CC400206F68 /* flxlet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED970383E50201A80AC9 /* flxlet.cpp */; }; - E99749BD07705CC400206F68 /* vecLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974802077054CD00206F68 /* vecLib.framework */; }; - E99749BF07705D5200206F68 /* vecLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974802077054CD00206F68 /* vecLib.framework */; }; - E9974B9407705F1400206F68 /* flprefix.h in Headers */ = {isa = PBXBuildFile; fileRef = F504A67003CE39F501A80AC9 /* flprefix.h */; }; - E9974B9507705F1400206F68 /* flbase.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED7F0383E50201A80AC9 /* flbase.h */; }; - E9974B9607705F1400206F68 /* flclass.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED810383E50201A80AC9 /* flclass.h */; }; - E9974B9707705F1400206F68 /* fldoxygen.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED870383E50201A80AC9 /* fldoxygen.h */; }; - E9974B9807705F1400206F68 /* fldsp.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED890383E50201A80AC9 /* fldsp.h */; }; - E9974B9907705F1400206F68 /* flext.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8B0383E50201A80AC9 /* flext.h */; }; - E9974B9A07705F1400206F68 /* flinternal.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8C0383E50201A80AC9 /* flinternal.h */; }; - E9974B9B07705F1400206F68 /* flmspbuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8E0383E50201A80AC9 /* flmspbuffer.h */; }; - E9974B9C07705F1400206F68 /* flstdc.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED920383E50201A80AC9 /* flstdc.h */; }; - E9974B9D07705F1400206F68 /* flsupport.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED940383E50201A80AC9 /* flsupport.h */; }; - E9974B9E07705F1400206F68 /* fldefs.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED860383E50201A80AC9 /* fldefs.h */; }; - E9974B9F07705F1400206F68 /* fldefs_attradd.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5B804757BC801A0C81C /* fldefs_attradd.h */; }; - E9974BA007705F1400206F68 /* fldefs_attrcb.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5B904757BC801A0C81C /* fldefs_attrcb.h */; }; - E9974BA107705F1400206F68 /* fldefs_attrvar.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BA04757BC801A0C81C /* fldefs_attrvar.h */; }; - E9974BA207705F1400206F68 /* fldefs_hdr.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BB04757BC801A0C81C /* fldefs_hdr.h */; }; - E9974BA307705F1400206F68 /* fldefs_methadd.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BC04757BC801A0C81C /* fldefs_methadd.h */; }; - E9974BA407705F1400206F68 /* fldefs_methbind.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BD04757BC801A0C81C /* fldefs_methbind.h */; }; - E9974BA507705F1400206F68 /* fldefs_methcall.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BE04757BC801A0C81C /* fldefs_methcall.h */; }; - E9974BA607705F1400206F68 /* fldefs_methcb.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BF04757BC801A0C81C /* fldefs_methcb.h */; }; - E9974BA707705F1400206F68 /* fldefs_meththr.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5C004757BC801A0C81C /* fldefs_meththr.h */; }; - E9974BA807705F1400206F68 /* fldefs_setup.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5C104757BC801A0C81C /* fldefs_setup.h */; }; - E9974BAA07705F1400206F68 /* flatom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7C0383E50201A80AC9 /* flatom.cpp */; }; - E9974BAC07705F1400206F68 /* flatom_part.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66C03CE39F501A80AC9 /* flatom_part.cpp */; }; - E9974BAD07705F1400206F68 /* flatom_pr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7B0383E50201A80AC9 /* flatom_pr.cpp */; }; - E9974BAE07705F1400206F68 /* flattr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7D0383E50201A80AC9 /* flattr.cpp */; }; - E9974BAF07705F1400206F68 /* flattr_ed.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9BDCC4104F4D7C1008929A0 /* flattr_ed.cpp */; }; - E9974BB007705F1400206F68 /* flbase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7E0383E50201A80AC9 /* flbase.cpp */; }; - E9974BB107705F1400206F68 /* flbind.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F598D263044CC4A001A80AC9 /* flbind.cpp */; }; - E9974BB207705F1400206F68 /* flbuf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED800383E50201A80AC9 /* flbuf.cpp */; }; - E9974BB307705F1400206F68 /* fldsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED880383E50201A80AC9 /* fldsp.cpp */; }; - E9974BB407705F1400206F68 /* flext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8A0383E50201A80AC9 /* flext.cpp */; }; - E9974BB507705F1400206F68 /* flitem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66D03CE39F501A80AC9 /* flitem.cpp */; }; - E9974BB607705F1400206F68 /* fllib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8D0383E50201A80AC9 /* fllib.cpp */; }; - E9974BB707705F1400206F68 /* flmeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66E03CE39F501A80AC9 /* flmeth.cpp */; }; - E9974BB807705F1400206F68 /* flmsg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66F03CE39F501A80AC9 /* flmsg.cpp */; }; - E9974BB907705F1400206F68 /* flout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8F0383E50201A80AC9 /* flout.cpp */; }; - E9974BBA07705F1400206F68 /* flproxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A67103CE39F501A80AC9 /* flproxy.cpp */; }; - E9974BBB07705F1400206F68 /* flqueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A67203CE39F501A80AC9 /* flqueue.cpp */; }; - E9974BBC07705F1400206F68 /* flsimd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F598D264044CC4A001A80AC9 /* flsimd.cpp */; }; - E9974BBD07705F1400206F68 /* flsupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED930383E50201A80AC9 /* flsupport.cpp */; }; - E9974BBE07705F1400206F68 /* flthr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED950383E50201A80AC9 /* flthr.cpp */; }; - E9974BBF07705F1400206F68 /* fltimer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5B1FAC8041191190179CFEF /* fltimer.cpp */; }; - E9974BC007705F1400206F68 /* flutil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED960383E50201A80AC9 /* flutil.cpp */; }; - E9974BC107705F1400206F68 /* flxlet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED970383E50201A80AC9 /* flxlet.cpp */; }; - E9974BC307705F1400206F68 /* vecLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974802077054CD00206F68 /* vecLib.framework */; }; - E9974BC707705F4F00206F68 /* fldefs.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED860383E50201A80AC9 /* fldefs.h */; }; - E9974BC807705F4F00206F68 /* fldefs_attradd.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5B804757BC801A0C81C /* fldefs_attradd.h */; }; - E9974BC907705F4F00206F68 /* fldefs_attrcb.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5B904757BC801A0C81C /* fldefs_attrcb.h */; }; - E9974BCA07705F4F00206F68 /* fldefs_attrvar.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BA04757BC801A0C81C /* fldefs_attrvar.h */; }; - E9974BCB07705F4F00206F68 /* fldefs_hdr.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BB04757BC801A0C81C /* fldefs_hdr.h */; }; - E9974BCC07705F4F00206F68 /* fldefs_methadd.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BC04757BC801A0C81C /* fldefs_methadd.h */; }; - E9974BCD07705F4F00206F68 /* fldefs_methbind.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BD04757BC801A0C81C /* fldefs_methbind.h */; }; - E9974BCE07705F4F00206F68 /* fldefs_methcall.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BE04757BC801A0C81C /* fldefs_methcall.h */; }; - E9974BCF07705F4F00206F68 /* fldefs_methcb.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5BF04757BC801A0C81C /* fldefs_methcb.h */; }; - E9974BD007705F4F00206F68 /* fldefs_meththr.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5C004757BC801A0C81C /* fldefs_meththr.h */; }; - E9974BD107705F4F00206F68 /* fldefs_setup.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CBC5C104757BC801A0C81C /* fldefs_setup.h */; }; - E9974BD207705F4F00206F68 /* flprefix.h in Headers */ = {isa = PBXBuildFile; fileRef = F504A67003CE39F501A80AC9 /* flprefix.h */; }; - E9974BD307705F4F00206F68 /* flbase.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED7F0383E50201A80AC9 /* flbase.h */; }; - E9974BD407705F4F00206F68 /* flclass.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED810383E50201A80AC9 /* flclass.h */; }; - E9974BD507705F4F00206F68 /* fldoxygen.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED870383E50201A80AC9 /* fldoxygen.h */; }; - E9974BD607705F4F00206F68 /* fldsp.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED890383E50201A80AC9 /* fldsp.h */; }; - E9974BD707705F4F00206F68 /* flext.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8B0383E50201A80AC9 /* flext.h */; }; - E9974BD807705F4F00206F68 /* flinternal.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8C0383E50201A80AC9 /* flinternal.h */; }; - E9974BD907705F4F00206F68 /* flmspbuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED8E0383E50201A80AC9 /* flmspbuffer.h */; }; - E9974BDA07705F4F00206F68 /* flsndobj.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED910383E50201A80AC9 /* flsndobj.h */; }; - E9974BDB07705F4F00206F68 /* flstdc.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED920383E50201A80AC9 /* flstdc.h */; }; - E9974BDC07705F4F00206F68 /* flsupport.h in Headers */ = {isa = PBXBuildFile; fileRef = F55CED940383E50201A80AC9 /* flsupport.h */; }; - E9974BDD07705F4F00206F68 /* flstk.h in Headers */ = {isa = PBXBuildFile; fileRef = F504A67403CE39F501A80AC9 /* flstk.h */; }; - E9974BDF07705F4F00206F68 /* flatom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7C0383E50201A80AC9 /* flatom.cpp */; }; - E9974BE107705F4F00206F68 /* flatom_part.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66C03CE39F501A80AC9 /* flatom_part.cpp */; }; - E9974BE207705F4F00206F68 /* flatom_pr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7B0383E50201A80AC9 /* flatom_pr.cpp */; }; - E9974BE307705F4F00206F68 /* flattr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7D0383E50201A80AC9 /* flattr.cpp */; }; - E9974BE407705F4F00206F68 /* flattr_ed.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9BDCC4104F4D7C1008929A0 /* flattr_ed.cpp */; }; - E9974BE507705F4F00206F68 /* flbase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED7E0383E50201A80AC9 /* flbase.cpp */; }; - E9974BE607705F4F00206F68 /* flbind.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F598D263044CC4A001A80AC9 /* flbind.cpp */; }; - E9974BE707705F4F00206F68 /* flbuf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED800383E50201A80AC9 /* flbuf.cpp */; }; - E9974BE807705F4F00206F68 /* fldsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED880383E50201A80AC9 /* fldsp.cpp */; }; - E9974BE907705F4F00206F68 /* flext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8A0383E50201A80AC9 /* flext.cpp */; }; - E9974BEA07705F4F00206F68 /* flitem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66D03CE39F501A80AC9 /* flitem.cpp */; }; - E9974BEB07705F4F00206F68 /* fllib.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8D0383E50201A80AC9 /* fllib.cpp */; }; - E9974BEC07705F4F00206F68 /* flmeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66E03CE39F501A80AC9 /* flmeth.cpp */; }; - E9974BED07705F4F00206F68 /* flmsg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A66F03CE39F501A80AC9 /* flmsg.cpp */; }; - E9974BEE07705F4F00206F68 /* flout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED8F0383E50201A80AC9 /* flout.cpp */; }; - E9974BEF07705F4F00206F68 /* flproxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A67103CE39F501A80AC9 /* flproxy.cpp */; }; - E9974BF007705F4F00206F68 /* flqueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F504A67203CE39F501A80AC9 /* flqueue.cpp */; }; - E9974BF107705F4F00206F68 /* flsimd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F598D264044CC4A001A80AC9 /* flsimd.cpp */; }; - E9974BF207705F4F00206F68 /* flsupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED930383E50201A80AC9 /* flsupport.cpp */; }; - E9974BF307705F4F00206F68 /* flthr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED950383E50201A80AC9 /* flthr.cpp */; }; - E9974BF407705F4F00206F68 /* fltimer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5B1FAC8041191190179CFEF /* fltimer.cpp */; }; - E9974BF507705F4F00206F68 /* flutil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED960383E50201A80AC9 /* flutil.cpp */; }; - E9974BF607705F4F00206F68 /* flxlet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F55CED970383E50201A80AC9 /* flxlet.cpp */; }; - E9974BF807705F4F00206F68 /* vecLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974802077054CD00206F68 /* vecLib.framework */; }; - E9974BF907705F4F00206F68 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E99748D007705BAF00206F68 /* ApplicationServices.framework */; }; - E9974E160770780D00206F68 /* MaxAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974E140770780D00206F68 /* MaxAPI.framework */; }; - E9974E170770780D00206F68 /* MaxAudioAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974E150770780D00206F68 /* MaxAudioAPI.framework */; }; - E9974E180770780D00206F68 /* MaxAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974E140770780D00206F68 /* MaxAPI.framework */; }; - E9974E190770780D00206F68 /* MaxAudioAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974E150770780D00206F68 /* MaxAudioAPI.framework */; }; - E9974E1A0770780D00206F68 /* MaxAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974E140770780D00206F68 /* MaxAPI.framework */; }; - E9974E1B0770780D00206F68 /* MaxAudioAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9974E150770780D00206F68 /* MaxAudioAPI.framework */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 089C1667FE841158C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = file; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; - E99747CD0770545100206F68 /* libflext_s.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libflext_s.a; sourceTree = BUILT_PRODUCTS_DIR; }; - E9974802077054CD00206F68 /* vecLib.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = vecLib.framework; path = /System/Library/Frameworks/vecLib.framework; sourceTree = ""; }; - E997483F0770570800206F68 /* libflext_t.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libflext_t.a; sourceTree = BUILT_PRODUCTS_DIR; }; - E9974886077058C100206F68 /* flext.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = flext.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; - E99748D007705BAF00206F68 /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = ""; }; - E99749BE07705CC400206F68 /* libflext-max_s.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libflext-max_s.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - E9974BC407705F1400206F68 /* libflext-max_t.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libflext-max_t.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - E9974BFA07705F4F00206F68 /* flext-max.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = "flext-max.dylib"; sourceTree = BUILT_PRODUCTS_DIR; }; - E9974E140770780D00206F68 /* MaxAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MaxAPI.framework; path = /Library/Frameworks/MaxAPI.framework; sourceTree = ""; }; - E9974E150770780D00206F68 /* MaxAudioAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MaxAudioAPI.framework; path = /Library/Frameworks/MaxAudioAPI.framework; sourceTree = ""; }; - E9BDCC4104F4D7C1008929A0 /* flattr_ed.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flattr_ed.cpp; path = source/flattr_ed.cpp; sourceTree = ""; }; - F504A66C03CE39F501A80AC9 /* flatom_part.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flatom_part.cpp; path = source/flatom_part.cpp; sourceTree = ""; }; - F504A66D03CE39F501A80AC9 /* flitem.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flitem.cpp; path = source/flitem.cpp; sourceTree = ""; }; - F504A66E03CE39F501A80AC9 /* flmeth.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flmeth.cpp; path = source/flmeth.cpp; sourceTree = ""; }; - F504A66F03CE39F501A80AC9 /* flmsg.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flmsg.cpp; path = source/flmsg.cpp; sourceTree = ""; }; - F504A67003CE39F501A80AC9 /* flprefix.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = flprefix.h; path = source/flprefix.h; sourceTree = ""; }; - F504A67103CE39F501A80AC9 /* flproxy.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flproxy.cpp; path = source/flproxy.cpp; sourceTree = ""; }; - F504A67203CE39F501A80AC9 /* flqueue.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flqueue.cpp; path = source/flqueue.cpp; sourceTree = ""; }; - F504A67303CE39F501A80AC9 /* flstk.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flstk.cpp; path = source/flstk.cpp; sourceTree = ""; }; - F504A67403CE39F501A80AC9 /* flstk.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = flstk.h; path = source/flstk.h; sourceTree = ""; }; - F55CED7B0383E50201A80AC9 /* flatom_pr.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flatom_pr.cpp; path = source/flatom_pr.cpp; sourceTree = SOURCE_ROOT; }; - F55CED7C0383E50201A80AC9 /* flatom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flatom.cpp; path = source/flatom.cpp; sourceTree = SOURCE_ROOT; }; - F55CED7D0383E50201A80AC9 /* flattr.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flattr.cpp; path = source/flattr.cpp; sourceTree = SOURCE_ROOT; }; - F55CED7E0383E50201A80AC9 /* flbase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flbase.cpp; path = source/flbase.cpp; sourceTree = SOURCE_ROOT; }; - F55CED7F0383E50201A80AC9 /* flbase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = flbase.h; path = source/flbase.h; sourceTree = SOURCE_ROOT; }; - F55CED800383E50201A80AC9 /* flbuf.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flbuf.cpp; path = source/flbuf.cpp; sourceTree = SOURCE_ROOT; }; - F55CED810383E50201A80AC9 /* flclass.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = flclass.h; path = source/flclass.h; sourceTree = SOURCE_ROOT; }; - F55CED860383E50201A80AC9 /* fldefs.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldefs.h; path = source/fldefs.h; sourceTree = SOURCE_ROOT; }; - F55CED870383E50201A80AC9 /* fldoxygen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldoxygen.h; path = source/fldoxygen.h; sourceTree = SOURCE_ROOT; }; - F55CED880383E50201A80AC9 /* fldsp.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = fldsp.cpp; path = source/fldsp.cpp; sourceTree = SOURCE_ROOT; }; - F55CED890383E50201A80AC9 /* fldsp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldsp.h; path = source/fldsp.h; sourceTree = SOURCE_ROOT; }; - F55CED8A0383E50201A80AC9 /* flext.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flext.cpp; path = source/flext.cpp; sourceTree = SOURCE_ROOT; }; - F55CED8B0383E50201A80AC9 /* flext.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = flext.h; path = source/flext.h; sourceTree = SOURCE_ROOT; }; - F55CED8C0383E50201A80AC9 /* flinternal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = flinternal.h; path = source/flinternal.h; sourceTree = SOURCE_ROOT; }; - F55CED8D0383E50201A80AC9 /* fllib.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = fllib.cpp; path = source/fllib.cpp; sourceTree = SOURCE_ROOT; }; - F55CED8E0383E50201A80AC9 /* flmspbuffer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = flmspbuffer.h; path = source/flmspbuffer.h; sourceTree = SOURCE_ROOT; }; - F55CED8F0383E50201A80AC9 /* flout.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flout.cpp; path = source/flout.cpp; sourceTree = SOURCE_ROOT; }; - F55CED900383E50201A80AC9 /* flsndobj.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flsndobj.cpp; path = source/flsndobj.cpp; sourceTree = SOURCE_ROOT; }; - F55CED910383E50201A80AC9 /* flsndobj.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = flsndobj.h; path = source/flsndobj.h; sourceTree = SOURCE_ROOT; }; - F55CED920383E50201A80AC9 /* flstdc.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = flstdc.h; path = source/flstdc.h; sourceTree = SOURCE_ROOT; }; - F55CED930383E50201A80AC9 /* flsupport.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flsupport.cpp; path = source/flsupport.cpp; sourceTree = SOURCE_ROOT; }; - F55CED940383E50201A80AC9 /* flsupport.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = flsupport.h; path = source/flsupport.h; sourceTree = SOURCE_ROOT; }; - F55CED950383E50201A80AC9 /* flthr.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flthr.cpp; path = source/flthr.cpp; sourceTree = SOURCE_ROOT; }; - F55CED960383E50201A80AC9 /* flutil.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flutil.cpp; path = source/flutil.cpp; sourceTree = SOURCE_ROOT; }; - F55CED970383E50201A80AC9 /* flxlet.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flxlet.cpp; path = source/flxlet.cpp; sourceTree = SOURCE_ROOT; }; - F598D263044CC4A001A80AC9 /* flbind.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flbind.cpp; path = source/flbind.cpp; sourceTree = ""; }; - F598D264044CC4A001A80AC9 /* flsimd.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flsimd.cpp; path = source/flsimd.cpp; sourceTree = ""; }; - F5B1FAC8041191190179CFEF /* fltimer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = fltimer.cpp; path = source/fltimer.cpp; sourceTree = ""; }; - F5CBC5B804757BC801A0C81C /* fldefs_attradd.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldefs_attradd.h; path = source/fldefs_attradd.h; sourceTree = ""; }; - F5CBC5B904757BC801A0C81C /* fldefs_attrcb.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldefs_attrcb.h; path = source/fldefs_attrcb.h; sourceTree = ""; }; - F5CBC5BA04757BC801A0C81C /* fldefs_attrvar.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldefs_attrvar.h; path = source/fldefs_attrvar.h; sourceTree = ""; }; - F5CBC5BB04757BC801A0C81C /* fldefs_hdr.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldefs_hdr.h; path = source/fldefs_hdr.h; sourceTree = ""; }; - F5CBC5BC04757BC801A0C81C /* fldefs_methadd.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldefs_methadd.h; path = source/fldefs_methadd.h; sourceTree = ""; }; - F5CBC5BD04757BC801A0C81C /* fldefs_methbind.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldefs_methbind.h; path = source/fldefs_methbind.h; sourceTree = ""; }; - F5CBC5BE04757BC801A0C81C /* fldefs_methcall.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldefs_methcall.h; path = source/fldefs_methcall.h; sourceTree = ""; }; - F5CBC5BF04757BC801A0C81C /* fldefs_methcb.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldefs_methcb.h; path = source/fldefs_methcb.h; sourceTree = ""; }; - F5CBC5C004757BC801A0C81C /* fldefs_meththr.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldefs_meththr.h; path = source/fldefs_meththr.h; sourceTree = ""; }; - F5CBC5C104757BC801A0C81C /* fldefs_setup.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = fldefs_setup.h; path = source/fldefs_setup.h; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - E99747CB0770545100206F68 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E9974803077054CD00206F68 /* vecLib.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E997483D0770570800206F68 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E997483E0770570800206F68 /* vecLib.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E9974884077058C100206F68 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E99749BF07705D5200206F68 /* vecLib.framework in Frameworks */, - E99748D107705BAF00206F68 /* ApplicationServices.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E99749BC07705CC400206F68 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E99749BD07705CC400206F68 /* vecLib.framework in Frameworks */, - E9974E160770780D00206F68 /* MaxAPI.framework in Frameworks */, - E9974E170770780D00206F68 /* MaxAudioAPI.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E9974BC207705F1400206F68 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E9974BC307705F1400206F68 /* vecLib.framework in Frameworks */, - E9974E180770780D00206F68 /* MaxAPI.framework in Frameworks */, - E9974E190770780D00206F68 /* MaxAudioAPI.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E9974BF707705F4F00206F68 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E9974BF807705F4F00206F68 /* vecLib.framework in Frameworks */, - E9974BF907705F4F00206F68 /* ApplicationServices.framework in Frameworks */, - E9974E1A0770780D00206F68 /* MaxAPI.framework in Frameworks */, - E9974E1B0770780D00206F68 /* MaxAudioAPI.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 034768DDFF38A45A11DB9C8B /* Products */ = { - isa = PBXGroup; - children = ( - E99747CD0770545100206F68 /* libflext_s.a */, - E997483F0770570800206F68 /* libflext_t.a */, - E9974886077058C100206F68 /* flext.dylib */, - E99749BE07705CC400206F68 /* libflext-max_s.a */, - E9974BC407705F1400206F68 /* libflext-max_t.a */, - E9974BFA07705F4F00206F68 /* flext-max.dylib */, - ); - name = Products; - sourceTree = ""; - }; - 0867D691FE84028FC02AAC07 /* flext-PB */ = { - isa = PBXGroup; - children = ( - F55CEDB50383E50D01A80AC9 /* Headers */, - 08FB77ACFE841707C02AAC07 /* Source */, - 089C1665FE841158C02AAC07 /* Resources */, - 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */, - 034768DDFF38A45A11DB9C8B /* Products */, - ); - name = "flext-PB"; - sourceTree = ""; - }; - 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = { - isa = PBXGroup; - children = ( - E9974E140770780D00206F68 /* MaxAPI.framework */, - E9974E150770780D00206F68 /* MaxAudioAPI.framework */, - E99748D007705BAF00206F68 /* ApplicationServices.framework */, - E9974802077054CD00206F68 /* vecLib.framework */, - ); - name = "External Frameworks and Libraries"; - sourceTree = ""; - }; - 089C1665FE841158C02AAC07 /* Resources */ = { - isa = PBXGroup; - children = ( - 089C1666FE841158C02AAC07 /* InfoPlist.strings */, - ); - name = Resources; - sourceTree = ""; - }; - 08FB77ACFE841707C02AAC07 /* Source */ = { - isa = PBXGroup; - children = ( - F55CED7B0383E50201A80AC9 /* flatom_pr.cpp */, - F55CED7C0383E50201A80AC9 /* flatom.cpp */, - F55CED7D0383E50201A80AC9 /* flattr.cpp */, - F55CED7E0383E50201A80AC9 /* flbase.cpp */, - F55CED800383E50201A80AC9 /* flbuf.cpp */, - F55CED880383E50201A80AC9 /* fldsp.cpp */, - F55CED8A0383E50201A80AC9 /* flext.cpp */, - F55CED8D0383E50201A80AC9 /* fllib.cpp */, - F55CED8F0383E50201A80AC9 /* flout.cpp */, - F55CED900383E50201A80AC9 /* flsndobj.cpp */, - F55CED930383E50201A80AC9 /* flsupport.cpp */, - F55CED950383E50201A80AC9 /* flthr.cpp */, - F55CED960383E50201A80AC9 /* flutil.cpp */, - F55CED970383E50201A80AC9 /* flxlet.cpp */, - F504A66C03CE39F501A80AC9 /* flatom_part.cpp */, - F504A66D03CE39F501A80AC9 /* flitem.cpp */, - F504A66E03CE39F501A80AC9 /* flmeth.cpp */, - F504A66F03CE39F501A80AC9 /* flmsg.cpp */, - F504A67103CE39F501A80AC9 /* flproxy.cpp */, - F504A67203CE39F501A80AC9 /* flqueue.cpp */, - F504A67303CE39F501A80AC9 /* flstk.cpp */, - F5B1FAC8041191190179CFEF /* fltimer.cpp */, - F598D263044CC4A001A80AC9 /* flbind.cpp */, - F598D264044CC4A001A80AC9 /* flsimd.cpp */, - E9BDCC4104F4D7C1008929A0 /* flattr_ed.cpp */, - ); - name = Source; - sourceTree = SOURCE_ROOT; - }; - F55CEDB50383E50D01A80AC9 /* Headers */ = { - isa = PBXGroup; - children = ( - F5CBC61C04757BDA01A0C81C /* Defs */, - F504A67003CE39F501A80AC9 /* flprefix.h */, - F55CED7F0383E50201A80AC9 /* flbase.h */, - F55CED810383E50201A80AC9 /* flclass.h */, - F55CED870383E50201A80AC9 /* fldoxygen.h */, - F55CED890383E50201A80AC9 /* fldsp.h */, - F55CED8B0383E50201A80AC9 /* flext.h */, - F55CED8C0383E50201A80AC9 /* flinternal.h */, - F55CED8E0383E50201A80AC9 /* flmspbuffer.h */, - F55CED910383E50201A80AC9 /* flsndobj.h */, - F55CED920383E50201A80AC9 /* flstdc.h */, - F55CED940383E50201A80AC9 /* flsupport.h */, - F504A67403CE39F501A80AC9 /* flstk.h */, - ); - name = Headers; - sourceTree = SOURCE_ROOT; - }; - F5CBC61C04757BDA01A0C81C /* Defs */ = { - isa = PBXGroup; - children = ( - F55CED860383E50201A80AC9 /* fldefs.h */, - F5CBC5B804757BC801A0C81C /* fldefs_attradd.h */, - F5CBC5B904757BC801A0C81C /* fldefs_attrcb.h */, - F5CBC5BA04757BC801A0C81C /* fldefs_attrvar.h */, - F5CBC5BB04757BC801A0C81C /* fldefs_hdr.h */, - F5CBC5BC04757BC801A0C81C /* fldefs_methadd.h */, - F5CBC5BD04757BC801A0C81C /* fldefs_methbind.h */, - F5CBC5BE04757BC801A0C81C /* fldefs_methcall.h */, - F5CBC5BF04757BC801A0C81C /* fldefs_methcb.h */, - F5CBC5C004757BC801A0C81C /* fldefs_meththr.h */, - F5CBC5C104757BC801A0C81C /* fldefs_setup.h */, - ); - name = Defs; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - E99747C90770545100206F68 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - E99747FA0770548F00206F68 /* flprefix.h in Headers */, - E99747E80770548F00206F68 /* flbase.h in Headers */, - E99747E90770548F00206F68 /* flclass.h in Headers */, - E99747F50770548F00206F68 /* fldoxygen.h in Headers */, - E99747F60770548F00206F68 /* fldsp.h in Headers */, - E99747F70770548F00206F68 /* flext.h in Headers */, - E99747F80770548F00206F68 /* flinternal.h in Headers */, - E99747F90770548F00206F68 /* flmspbuffer.h in Headers */, - E99747FC0770548F00206F68 /* flstdc.h in Headers */, - E99747FE0770548F00206F68 /* flsupport.h in Headers */, - E99747EA0770548F00206F68 /* fldefs.h in Headers */, - E99747EB0770548F00206F68 /* fldefs_attradd.h in Headers */, - E99747EC0770548F00206F68 /* fldefs_attrcb.h in Headers */, - E99747ED0770548F00206F68 /* fldefs_attrvar.h in Headers */, - E99747EE0770548F00206F68 /* fldefs_hdr.h in Headers */, - E99747EF0770548F00206F68 /* fldefs_methadd.h in Headers */, - E99747F00770548F00206F68 /* fldefs_methbind.h in Headers */, - E99747F10770548F00206F68 /* fldefs_methcall.h in Headers */, - E99747F20770548F00206F68 /* fldefs_methcb.h in Headers */, - E99747F30770548F00206F68 /* fldefs_meththr.h in Headers */, - E99747F40770548F00206F68 /* fldefs_setup.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E997480E0770570800206F68 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - E997480F0770570800206F68 /* flprefix.h in Headers */, - E99748100770570800206F68 /* flbase.h in Headers */, - E99748110770570800206F68 /* flclass.h in Headers */, - E99748120770570800206F68 /* fldoxygen.h in Headers */, - E99748130770570800206F68 /* fldsp.h in Headers */, - E99748140770570800206F68 /* flext.h in Headers */, - E99748150770570800206F68 /* flinternal.h in Headers */, - E99748160770570800206F68 /* flmspbuffer.h in Headers */, - E99748170770570800206F68 /* flstdc.h in Headers */, - E99748180770570800206F68 /* flsupport.h in Headers */, - E99748190770570800206F68 /* fldefs.h in Headers */, - E997481A0770570800206F68 /* fldefs_attradd.h in Headers */, - E997481B0770570800206F68 /* fldefs_attrcb.h in Headers */, - E997481C0770570800206F68 /* fldefs_attrvar.h in Headers */, - E997481D0770570800206F68 /* fldefs_hdr.h in Headers */, - E997481E0770570800206F68 /* fldefs_methadd.h in Headers */, - E997481F0770570800206F68 /* fldefs_methbind.h in Headers */, - E99748200770570800206F68 /* fldefs_methcall.h in Headers */, - E99748210770570800206F68 /* fldefs_methcb.h in Headers */, - E99748220770570800206F68 /* fldefs_meththr.h in Headers */, - E99748230770570800206F68 /* fldefs_setup.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E9974882077058C100206F68 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - E99748B00770595E00206F68 /* fldefs.h in Headers */, - E99748B10770595E00206F68 /* fldefs_attradd.h in Headers */, - E99748B20770595E00206F68 /* fldefs_attrcb.h in Headers */, - E99748B30770595E00206F68 /* fldefs_attrvar.h in Headers */, - E99748B40770595E00206F68 /* fldefs_hdr.h in Headers */, - E99748B50770595E00206F68 /* fldefs_methadd.h in Headers */, - E99748B60770595E00206F68 /* fldefs_methbind.h in Headers */, - E99748B70770595E00206F68 /* fldefs_methcall.h in Headers */, - E99748B80770595E00206F68 /* fldefs_methcb.h in Headers */, - E99748B90770595E00206F68 /* fldefs_meththr.h in Headers */, - E99748BA0770595E00206F68 /* fldefs_setup.h in Headers */, - E99748A40770595500206F68 /* flprefix.h in Headers */, - E99748A50770595500206F68 /* flbase.h in Headers */, - E99748A60770595500206F68 /* flclass.h in Headers */, - E99748A70770595500206F68 /* fldoxygen.h in Headers */, - E99748A80770595500206F68 /* fldsp.h in Headers */, - E99748A90770595600206F68 /* flext.h in Headers */, - E99748AA0770595600206F68 /* flinternal.h in Headers */, - E99748AB0770595600206F68 /* flmspbuffer.h in Headers */, - E99748AC0770595600206F68 /* flsndobj.h in Headers */, - E99748AD0770595600206F68 /* flstdc.h in Headers */, - E99748AE0770595600206F68 /* flsupport.h in Headers */, - E99748AF0770595600206F68 /* flstk.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E997498D07705CC400206F68 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - E997498E07705CC400206F68 /* flprefix.h in Headers */, - E997498F07705CC400206F68 /* flbase.h in Headers */, - E997499007705CC400206F68 /* flclass.h in Headers */, - E997499107705CC400206F68 /* fldoxygen.h in Headers */, - E997499207705CC400206F68 /* fldsp.h in Headers */, - E997499307705CC400206F68 /* flext.h in Headers */, - E997499407705CC400206F68 /* flinternal.h in Headers */, - E997499507705CC400206F68 /* flmspbuffer.h in Headers */, - E997499607705CC400206F68 /* flstdc.h in Headers */, - E997499707705CC400206F68 /* flsupport.h in Headers */, - E997499807705CC400206F68 /* fldefs.h in Headers */, - E997499907705CC400206F68 /* fldefs_attradd.h in Headers */, - E997499A07705CC400206F68 /* fldefs_attrcb.h in Headers */, - E997499B07705CC400206F68 /* fldefs_attrvar.h in Headers */, - E997499C07705CC400206F68 /* fldefs_hdr.h in Headers */, - E997499D07705CC400206F68 /* fldefs_methadd.h in Headers */, - E997499E07705CC400206F68 /* fldefs_methbind.h in Headers */, - E997499F07705CC400206F68 /* fldefs_methcall.h in Headers */, - E99749A007705CC400206F68 /* fldefs_methcb.h in Headers */, - E99749A107705CC400206F68 /* fldefs_meththr.h in Headers */, - E99749A207705CC400206F68 /* fldefs_setup.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E9974B9307705F1400206F68 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - E9974B9407705F1400206F68 /* flprefix.h in Headers */, - E9974B9507705F1400206F68 /* flbase.h in Headers */, - E9974B9607705F1400206F68 /* flclass.h in Headers */, - E9974B9707705F1400206F68 /* fldoxygen.h in Headers */, - E9974B9807705F1400206F68 /* fldsp.h in Headers */, - E9974B9907705F1400206F68 /* flext.h in Headers */, - E9974B9A07705F1400206F68 /* flinternal.h in Headers */, - E9974B9B07705F1400206F68 /* flmspbuffer.h in Headers */, - E9974B9C07705F1400206F68 /* flstdc.h in Headers */, - E9974B9D07705F1400206F68 /* flsupport.h in Headers */, - E9974B9E07705F1400206F68 /* fldefs.h in Headers */, - E9974B9F07705F1400206F68 /* fldefs_attradd.h in Headers */, - E9974BA007705F1400206F68 /* fldefs_attrcb.h in Headers */, - E9974BA107705F1400206F68 /* fldefs_attrvar.h in Headers */, - E9974BA207705F1400206F68 /* fldefs_hdr.h in Headers */, - E9974BA307705F1400206F68 /* fldefs_methadd.h in Headers */, - E9974BA407705F1400206F68 /* fldefs_methbind.h in Headers */, - E9974BA507705F1400206F68 /* fldefs_methcall.h in Headers */, - E9974BA607705F1400206F68 /* fldefs_methcb.h in Headers */, - E9974BA707705F1400206F68 /* fldefs_meththr.h in Headers */, - E9974BA807705F1400206F68 /* fldefs_setup.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E9974BC607705F4F00206F68 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - E9974BC707705F4F00206F68 /* fldefs.h in Headers */, - E9974BC807705F4F00206F68 /* fldefs_attradd.h in Headers */, - E9974BC907705F4F00206F68 /* fldefs_attrcb.h in Headers */, - E9974BCA07705F4F00206F68 /* fldefs_attrvar.h in Headers */, - E9974BCB07705F4F00206F68 /* fldefs_hdr.h in Headers */, - E9974BCC07705F4F00206F68 /* fldefs_methadd.h in Headers */, - E9974BCD07705F4F00206F68 /* fldefs_methbind.h in Headers */, - E9974BCE07705F4F00206F68 /* fldefs_methcall.h in Headers */, - E9974BCF07705F4F00206F68 /* fldefs_methcb.h in Headers */, - E9974BD007705F4F00206F68 /* fldefs_meththr.h in Headers */, - E9974BD107705F4F00206F68 /* fldefs_setup.h in Headers */, - E9974BD207705F4F00206F68 /* flprefix.h in Headers */, - E9974BD307705F4F00206F68 /* flbase.h in Headers */, - E9974BD407705F4F00206F68 /* flclass.h in Headers */, - E9974BD507705F4F00206F68 /* fldoxygen.h in Headers */, - E9974BD607705F4F00206F68 /* fldsp.h in Headers */, - E9974BD707705F4F00206F68 /* flext.h in Headers */, - E9974BD807705F4F00206F68 /* flinternal.h in Headers */, - E9974BD907705F4F00206F68 /* flmspbuffer.h in Headers */, - E9974BDA07705F4F00206F68 /* flsndobj.h in Headers */, - E9974BDB07705F4F00206F68 /* flstdc.h in Headers */, - E9974BDC07705F4F00206F68 /* flsupport.h in Headers */, - E9974BDD07705F4F00206F68 /* flstk.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - E99747CC0770545100206F68 /* PD static single */ = { - isa = PBXNativeTarget; - buildConfigurationList = E9A5BCA10A3381C400AD9F03 /* Build configuration list for PBXNativeTarget "PD static single" */; - buildPhases = ( - E99747C90770545100206F68 /* Headers */, - E99747CA0770545100206F68 /* Sources */, - E99747CB0770545100206F68 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "PD static single"; - productName = "PD static single"; - productReference = E99747CD0770545100206F68 /* libflext_s.a */; - productType = "com.apple.product-type.library.static"; - }; - E997480D0770570800206F68 /* PD static multi */ = { - isa = PBXNativeTarget; - buildConfigurationList = E9A5BCA50A3381C400AD9F03 /* Build configuration list for PBXNativeTarget "PD static multi" */; - buildPhases = ( - E997480E0770570800206F68 /* Headers */, - E99748240770570800206F68 /* Sources */, - E997483D0770570800206F68 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "PD static multi"; - productName = "PD static single"; - productReference = E997483F0770570800206F68 /* libflext_t.a */; - productType = "com.apple.product-type.library.static"; - }; - E9974885077058C100206F68 /* PD shared */ = { - isa = PBXNativeTarget; - buildConfigurationList = E9A5BCA90A3381C400AD9F03 /* Build configuration list for PBXNativeTarget "PD shared" */; - buildPhases = ( - E9974882077058C100206F68 /* Headers */, - E9974883077058C100206F68 /* Sources */, - E9974884077058C100206F68 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "PD shared"; - productName = "PD shared"; - productReference = E9974886077058C100206F68 /* flext.dylib */; - productType = "com.apple.product-type.library.dynamic"; - }; - E997498C07705CC400206F68 /* Max static single */ = { - isa = PBXNativeTarget; - buildConfigurationList = E9A5BCAD0A3381C400AD9F03 /* Build configuration list for PBXNativeTarget "Max static single" */; - buildPhases = ( - E997498D07705CC400206F68 /* Headers */, - E99749A307705CC400206F68 /* Sources */, - E99749BC07705CC400206F68 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "Max static single"; - productName = "PD static single"; - productReference = E99749BE07705CC400206F68 /* libflext-max_s.a */; - productType = "com.apple.product-type.library.static"; - }; - E9974B9207705F1400206F68 /* Max static multi */ = { - isa = PBXNativeTarget; - buildConfigurationList = E9A5BCB10A3381C400AD9F03 /* Build configuration list for PBXNativeTarget "Max static multi" */; - buildPhases = ( - E9974B9307705F1400206F68 /* Headers */, - E9974BA907705F1400206F68 /* Sources */, - E9974BC207705F1400206F68 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "Max static multi"; - productName = "PD static single"; - productReference = E9974BC407705F1400206F68 /* libflext-max_t.a */; - productType = "com.apple.product-type.library.static"; - }; - E9974BC507705F4F00206F68 /* Max shared */ = { - isa = PBXNativeTarget; - buildConfigurationList = E9A5BCB50A3381C400AD9F03 /* Build configuration list for PBXNativeTarget "Max shared" */; - buildPhases = ( - E9974BC607705F4F00206F68 /* Headers */, - E9974BDE07705F4F00206F68 /* Sources */, - E9974BF707705F4F00206F68 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "Max shared"; - productName = "PD shared"; - productReference = E9974BFA07705F4F00206F68 /* flext-max.dylib */; - productType = "com.apple.product-type.library.dynamic"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 0867D690FE84028FC02AAC07 /* Project object */ = { - isa = PBXProject; - buildConfigurationList = E9A5BCB90A3381C400AD9F03 /* Build configuration list for PBXProject "flext" */; - hasScannedForEncodings = 1; - mainGroup = 0867D691FE84028FC02AAC07 /* flext-PB */; - productRefGroup = 034768DDFF38A45A11DB9C8B /* Products */; - projectDirPath = ""; - targets = ( - E99747CC0770545100206F68 /* PD static single */, - E997480D0770570800206F68 /* PD static multi */, - E9974885077058C100206F68 /* PD shared */, - E997498C07705CC400206F68 /* Max static single */, - E9974B9207705F1400206F68 /* Max static multi */, - E9974BC507705F4F00206F68 /* Max shared */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXSourcesBuildPhase section */ - E99747CA0770545100206F68 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E99747CE0770548700206F68 /* flatom.cpp in Sources */, - E99747D00770548700206F68 /* flatom_part.cpp in Sources */, - E99747D10770548700206F68 /* flatom_pr.cpp in Sources */, - E99747D20770548700206F68 /* flattr.cpp in Sources */, - E99747D30770548700206F68 /* flattr_ed.cpp in Sources */, - E99747D40770548700206F68 /* flbase.cpp in Sources */, - E99747D50770548700206F68 /* flbind.cpp in Sources */, - E99747D60770548700206F68 /* flbuf.cpp in Sources */, - E99747D70770548700206F68 /* fldsp.cpp in Sources */, - E99747D80770548700206F68 /* flext.cpp in Sources */, - E99747D90770548700206F68 /* flitem.cpp in Sources */, - E99747DA0770548700206F68 /* fllib.cpp in Sources */, - E99747DB0770548700206F68 /* flmeth.cpp in Sources */, - E99747DC0770548700206F68 /* flmsg.cpp in Sources */, - E99747DD0770548700206F68 /* flout.cpp in Sources */, - E99747DE0770548700206F68 /* flproxy.cpp in Sources */, - E99747DF0770548700206F68 /* flqueue.cpp in Sources */, - E99747E00770548700206F68 /* flsimd.cpp in Sources */, - E99747E30770548700206F68 /* flsupport.cpp in Sources */, - E99747E40770548700206F68 /* flthr.cpp in Sources */, - E99747E50770548700206F68 /* fltimer.cpp in Sources */, - E99747E60770548700206F68 /* flutil.cpp in Sources */, - E99747E70770548700206F68 /* flxlet.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E99748240770570800206F68 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E99748250770570800206F68 /* flatom.cpp in Sources */, - E99748270770570800206F68 /* flatom_part.cpp in Sources */, - E99748280770570800206F68 /* flatom_pr.cpp in Sources */, - E99748290770570800206F68 /* flattr.cpp in Sources */, - E997482A0770570800206F68 /* flattr_ed.cpp in Sources */, - E997482B0770570800206F68 /* flbase.cpp in Sources */, - E997482C0770570800206F68 /* flbind.cpp in Sources */, - E997482D0770570800206F68 /* flbuf.cpp in Sources */, - E997482E0770570800206F68 /* fldsp.cpp in Sources */, - E997482F0770570800206F68 /* flext.cpp in Sources */, - E99748300770570800206F68 /* flitem.cpp in Sources */, - E99748310770570800206F68 /* fllib.cpp in Sources */, - E99748320770570800206F68 /* flmeth.cpp in Sources */, - E99748330770570800206F68 /* flmsg.cpp in Sources */, - E99748340770570800206F68 /* flout.cpp in Sources */, - E99748350770570800206F68 /* flproxy.cpp in Sources */, - E99748360770570800206F68 /* flqueue.cpp in Sources */, - E99748370770570800206F68 /* flsimd.cpp in Sources */, - E99748380770570800206F68 /* flsupport.cpp in Sources */, - E99748390770570800206F68 /* flthr.cpp in Sources */, - E997483A0770570800206F68 /* fltimer.cpp in Sources */, - E997483B0770570800206F68 /* flutil.cpp in Sources */, - E997483C0770570800206F68 /* flxlet.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E9974883077058C100206F68 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E997488C0770593C00206F68 /* flatom.cpp in Sources */, - E997488E0770593C00206F68 /* flatom_part.cpp in Sources */, - E997488F0770593C00206F68 /* flatom_pr.cpp in Sources */, - E99748900770593C00206F68 /* flattr.cpp in Sources */, - E99748910770593C00206F68 /* flattr_ed.cpp in Sources */, - E99748920770593C00206F68 /* flbase.cpp in Sources */, - E99748930770593C00206F68 /* flbind.cpp in Sources */, - E99748940770593C00206F68 /* flbuf.cpp in Sources */, - E99748950770593C00206F68 /* fldsp.cpp in Sources */, - E99748960770593C00206F68 /* flext.cpp in Sources */, - E99748970770593C00206F68 /* flitem.cpp in Sources */, - E99748980770593C00206F68 /* fllib.cpp in Sources */, - E99748990770593C00206F68 /* flmeth.cpp in Sources */, - E997489A0770593C00206F68 /* flmsg.cpp in Sources */, - E997489B0770593C00206F68 /* flout.cpp in Sources */, - E997489C0770593C00206F68 /* flproxy.cpp in Sources */, - E997489D0770593C00206F68 /* flqueue.cpp in Sources */, - E997489E0770593C00206F68 /* flsimd.cpp in Sources */, - E997489F0770593C00206F68 /* flsupport.cpp in Sources */, - E99748A00770593C00206F68 /* flthr.cpp in Sources */, - E99748A10770593C00206F68 /* fltimer.cpp in Sources */, - E99748A20770593C00206F68 /* flutil.cpp in Sources */, - E99748A30770593C00206F68 /* flxlet.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E99749A307705CC400206F68 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E99749A407705CC400206F68 /* flatom.cpp in Sources */, - E99749A607705CC400206F68 /* flatom_part.cpp in Sources */, - E99749A707705CC400206F68 /* flatom_pr.cpp in Sources */, - E99749A807705CC400206F68 /* flattr.cpp in Sources */, - E99749A907705CC400206F68 /* flattr_ed.cpp in Sources */, - E99749AA07705CC400206F68 /* flbase.cpp in Sources */, - E99749AB07705CC400206F68 /* flbind.cpp in Sources */, - E99749AC07705CC400206F68 /* flbuf.cpp in Sources */, - E99749AD07705CC400206F68 /* fldsp.cpp in Sources */, - E99749AE07705CC400206F68 /* flext.cpp in Sources */, - E99749AF07705CC400206F68 /* flitem.cpp in Sources */, - E99749B007705CC400206F68 /* fllib.cpp in Sources */, - E99749B107705CC400206F68 /* flmeth.cpp in Sources */, - E99749B207705CC400206F68 /* flmsg.cpp in Sources */, - E99749B307705CC400206F68 /* flout.cpp in Sources */, - E99749B407705CC400206F68 /* flproxy.cpp in Sources */, - E99749B507705CC400206F68 /* flqueue.cpp in Sources */, - E99749B607705CC400206F68 /* flsimd.cpp in Sources */, - E99749B707705CC400206F68 /* flsupport.cpp in Sources */, - E99749B807705CC400206F68 /* flthr.cpp in Sources */, - E99749B907705CC400206F68 /* fltimer.cpp in Sources */, - E99749BA07705CC400206F68 /* flutil.cpp in Sources */, - E99749BB07705CC400206F68 /* flxlet.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E9974BA907705F1400206F68 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E9974BAA07705F1400206F68 /* flatom.cpp in Sources */, - E9974BAC07705F1400206F68 /* flatom_part.cpp in Sources */, - E9974BAD07705F1400206F68 /* flatom_pr.cpp in Sources */, - E9974BAE07705F1400206F68 /* flattr.cpp in Sources */, - E9974BAF07705F1400206F68 /* flattr_ed.cpp in Sources */, - E9974BB007705F1400206F68 /* flbase.cpp in Sources */, - E9974BB107705F1400206F68 /* flbind.cpp in Sources */, - E9974BB207705F1400206F68 /* flbuf.cpp in Sources */, - E9974BB307705F1400206F68 /* fldsp.cpp in Sources */, - E9974BB407705F1400206F68 /* flext.cpp in Sources */, - E9974BB507705F1400206F68 /* flitem.cpp in Sources */, - E9974BB607705F1400206F68 /* fllib.cpp in Sources */, - E9974BB707705F1400206F68 /* flmeth.cpp in Sources */, - E9974BB807705F1400206F68 /* flmsg.cpp in Sources */, - E9974BB907705F1400206F68 /* flout.cpp in Sources */, - E9974BBA07705F1400206F68 /* flproxy.cpp in Sources */, - E9974BBB07705F1400206F68 /* flqueue.cpp in Sources */, - E9974BBC07705F1400206F68 /* flsimd.cpp in Sources */, - E9974BBD07705F1400206F68 /* flsupport.cpp in Sources */, - E9974BBE07705F1400206F68 /* flthr.cpp in Sources */, - E9974BBF07705F1400206F68 /* fltimer.cpp in Sources */, - E9974BC007705F1400206F68 /* flutil.cpp in Sources */, - E9974BC107705F1400206F68 /* flxlet.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E9974BDE07705F4F00206F68 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E9974BDF07705F4F00206F68 /* flatom.cpp in Sources */, - E9974BE107705F4F00206F68 /* flatom_part.cpp in Sources */, - E9974BE207705F4F00206F68 /* flatom_pr.cpp in Sources */, - E9974BE307705F4F00206F68 /* flattr.cpp in Sources */, - E9974BE407705F4F00206F68 /* flattr_ed.cpp in Sources */, - E9974BE507705F4F00206F68 /* flbase.cpp in Sources */, - E9974BE607705F4F00206F68 /* flbind.cpp in Sources */, - E9974BE707705F4F00206F68 /* flbuf.cpp in Sources */, - E9974BE807705F4F00206F68 /* fldsp.cpp in Sources */, - E9974BE907705F4F00206F68 /* flext.cpp in Sources */, - E9974BEA07705F4F00206F68 /* flitem.cpp in Sources */, - E9974BEB07705F4F00206F68 /* fllib.cpp in Sources */, - E9974BEC07705F4F00206F68 /* flmeth.cpp in Sources */, - E9974BED07705F4F00206F68 /* flmsg.cpp in Sources */, - E9974BEE07705F4F00206F68 /* flout.cpp in Sources */, - E9974BEF07705F4F00206F68 /* flproxy.cpp in Sources */, - E9974BF007705F4F00206F68 /* flqueue.cpp in Sources */, - E9974BF107705F4F00206F68 /* flsimd.cpp in Sources */, - E9974BF207705F4F00206F68 /* flsupport.cpp in Sources */, - E9974BF307705F4F00206F68 /* flthr.cpp in Sources */, - E9974BF407705F4F00206F68 /* fltimer.cpp in Sources */, - E9974BF507705F4F00206F68 /* flutil.cpp in Sources */, - E9974BF607705F4F00206F68 /* flxlet.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 089C1666FE841158C02AAC07 /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - 089C1667FE841158C02AAC07 /* English */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - E9A5BCA20A3381C400AD9F03 /* Development */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/flext.h; - GCC_PREPROCESSOR_DEFINITIONS = ( - "FLEXT_SYS=2", - FLEXT_DEBUG, - ); - HEADER_SEARCH_PATHS = "$(PD)/src"; - INSTALL_PATH = /usr/local/lib; - LIBRARY_STYLE = STATIC; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = flext_s; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - ZERO_LINK = YES; - }; - name = Development; - }; - E9A5BCA30A3381C400AD9F03 /* Deployment */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = YES; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/flext.h; - GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=2"; - HEADER_SEARCH_PATHS = "$(PD)/src"; - INSTALL_PATH = /usr/local/lib; - LIBRARY_STYLE = STATIC; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = flext_s; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - ZERO_LINK = NO; - }; - name = Deployment; - }; - E9A5BCA40A3381C400AD9F03 /* Default */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=2"; - HEADER_SEARCH_PATHS = "$(PD)/src"; - INSTALL_PATH = /usr/local/lib; - LIBRARY_STYLE = STATIC; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = flext_s; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - }; - name = Default; - }; - E9A5BCA60A3381C400AD9F03 /* Development */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/flext.h; - GCC_PREPROCESSOR_DEFINITIONS = ( - "FLEXT_SYS=2", - FLEXT_THREADS, - FLEXT_DEBUG, - ); - HEADER_SEARCH_PATHS = "$(PD)/src"; - INSTALL_PATH = /usr/local/lib; - LIBRARY_STYLE = STATIC; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = flext_t; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - ZERO_LINK = YES; - }; - name = Development; - }; - E9A5BCA70A3381C400AD9F03 /* Deployment */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = YES; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/flext.h; - GCC_PREPROCESSOR_DEFINITIONS = ( - "FLEXT_SYS=2", - FLEXT_THREADS, - ); - HEADER_SEARCH_PATHS = "$(PD)/src"; - INSTALL_PATH = /usr/local/lib; - LIBRARY_STYLE = STATIC; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = flext_t; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - ZERO_LINK = NO; - }; - name = Deployment; - }; - E9A5BCA80A3381C400AD9F03 /* Default */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_PREPROCESSOR_DEFINITIONS = ( - "FLEXT_SYS=2", - FLEXT_THREADS, - ); - HEADER_SEARCH_PATHS = "$(PD)/src"; - INSTALL_PATH = /usr/local/lib; - LIBRARY_STYLE = STATIC; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = flext_t; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - }; - name = Default; - }; - E9A5BCAA0A3381C400AD9F03 /* Development */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_FAST_MATH = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/flext.h; - GCC_PREPROCESSOR_DEFINITIONS = ( - "FLEXT_SYS=2", - FLEXT_SHARED, - FLEXT_DEBUG, - ); - HEADER_SEARCH_PATHS = "$(PD)/src"; - INSTALL_PATH = /usr/local/lib; - LIBRARY_STYLE = BUNDLE; - MACH_O_TYPE = mh_dylib; - MACOSX_DEPLOYMENT_TARGET = 10.3; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PREBINDING = YES; - PRODUCT_NAME = flext; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - ZERO_LINK = YES; - }; - name = Development; - }; - E9A5BCAB0A3381C400AD9F03 /* Deployment */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_FAST_MATH = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/flext.h; - GCC_PREPROCESSOR_DEFINITIONS = ( - "FLEXT_SYS=2", - FLEXT_SHARED, - ); - HEADER_SEARCH_PATHS = "$(PD)/src"; - INSTALL_PATH = /usr/local/lib; - LIBRARY_STYLE = BUNDLE; - MACH_O_TYPE = mh_dylib; - MACOSX_DEPLOYMENT_TARGET = 10.3; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PREBINDING = YES; - PRODUCT_NAME = flext; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - ZERO_LINK = NO; - }; - name = Deployment; - }; - E9A5BCAC0A3381C400AD9F03 /* Default */ = { - isa = XCBuildConfiguration; - buildSettings = { - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - GCC_PREPROCESSOR_DEFINITIONS = ( - "FLEXT_SYS=2", - FLEXT_SHARED, - ); - HEADER_SEARCH_PATHS = "$(PD)/src"; - INSTALL_PATH = /usr/local/lib; - LIBRARY_STYLE = BUNDLE; - MACH_O_TYPE = mh_bundle; - OTHER_CFLAGS = ""; - OTHER_LDFLAGS = ( - "-bundle_loader", - "$(PD)/bin/pd", - ); - OTHER_REZFLAGS = ""; - PREBINDING = YES; - PRODUCT_NAME = flext; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - }; - name = Default; - }; - E9A5BCAE0A3381C400AD9F03 /* Development */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/flext.h; - GCC_PREPROCESSOR_DEFINITIONS = ( - "FLEXT_SYS=1", - FLEXT_DEBUG, - ); - HEADER_SEARCH_PATHS = ( - "$(Max", - "SDK)/max-includes", - "$(Max", - "SDK)/msp-includes", - ); - INSTALL_PATH = /usr/local/lib; - LIBRARY_STYLE = STATIC; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = "flext-max_s"; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - ZERO_LINK = YES; - }; - name = Development; - }; - E9A5BCAF0A3381C400AD9F03 /* Deployment */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = YES; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/flext.h; - GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=1"; - HEADER_SEARCH_PATHS = ( - "$(Max", - "SDK)/max-includes", - "$(Max", - "SDK)/msp-includes", - ); - INSTALL_PATH = /usr/local/lib; - LIBRARY_STYLE = STATIC; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = "flext-max_s"; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - ZERO_LINK = NO; - }; - name = Deployment; - }; - E9A5BCB00A3381C400AD9F03 /* Default */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=1"; - HEADER_SEARCH_PATHS = ( - "$(Max", - "SDK)/max-includes", - "$(Max", - "SDK)/msp-includes", - ); - INSTALL_PATH = /usr/local/lib; - LIBRARY_STYLE = STATIC; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = "flext-max_s"; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - }; - name = Default; - }; - E9A5BCB20A3381C400AD9F03 /* Development */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/flext.h; - GCC_PREPROCESSOR_DEFINITIONS = ( - "FLEXT_SYS=1", - FLEXT_THREADS, - FLEXT_DEBUG, - ); - HEADER_SEARCH_PATHS = ( - "$(Max", - "SDK)/max-includes", - "$(Max", - "SDK)/msp-includes", - ); - INSTALL_PATH = /usr/local/lib; - LIBRARY_STYLE = STATIC; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = "flext-max_t"; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - ZERO_LINK = YES; - }; - name = Development; - }; - E9A5BCB30A3381C400AD9F03 /* Deployment */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = YES; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/flext.h; - GCC_PREPROCESSOR_DEFINITIONS = ( - "FLEXT_SYS=1", - FLEXT_THREADS, - ); - HEADER_SEARCH_PATHS = ( - "$(Max", - "SDK)/max-includes", - "$(Max", - "SDK)/msp-includes", - ); - INSTALL_PATH = /usr/local/lib; - LIBRARY_STYLE = STATIC; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = "flext-max_t"; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - ZERO_LINK = NO; - }; - name = Deployment; - }; - E9A5BCB40A3381C400AD9F03 /* Default */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_PREPROCESSOR_DEFINITIONS = ( - "FLEXT_SYS=1", - FLEXT_THREADS, - ); - HEADER_SEARCH_PATHS = ( - "$(Max", - "SDK)/max-includes", - "$(Max", - "SDK)/msp-includes", - ); - INSTALL_PATH = /usr/local/lib; - LIBRARY_STYLE = STATIC; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = "flext-max_t"; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - }; - name = Default; - }; - E9A5BCB60A3381C400AD9F03 /* Development */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/flext.h; - GCC_PREPROCESSOR_DEFINITIONS = ( - "FLEXT_SYS=1", - FLEXT_SHARED, - FLEXT_DEBUG, - ); - HEADER_SEARCH_PATHS = ( - "$(Max", - "SDK)/max-includes", - "$(Max", - "SDK)/msp-includes", - ); - INSTALL_PATH = /usr/local/lib; - LIBRARY_SEARCH_PATHS = ( - "$(Max", - "SDK)/msp-includes", - "$(Max", - "SDK)/msp-includes", - ); - LIBRARY_STYLE = DYNAMIC; - MACH_O_TYPE = mh_dylib; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PREBINDING = YES; - PRODUCT_NAME = "flext-max"; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - ZERO_LINK = YES; - }; - name = Development; - }; - E9A5BCB70A3381C400AD9F03 /* Deployment */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/flext.h; - GCC_PREPROCESSOR_DEFINITIONS = ( - "FLEXT_SYS=1", - FLEXT_SHARED, - ); - HEADER_SEARCH_PATHS = ( - "$(Max", - "SDK)/max-includes", - "$(Max", - "SDK)/msp-includes", - ); - INSTALL_PATH = /usr/local/lib; - LIBRARY_SEARCH_PATHS = ( - "$(Max", - "SDK)/msp-includes", - "$(Max", - "SDK)/msp-includes", - ); - LIBRARY_STYLE = DYNAMIC; - MACH_O_TYPE = mh_dylib; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PREBINDING = YES; - PRODUCT_NAME = "flext-max"; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - ZERO_LINK = NO; - }; - name = Deployment; - }; - E9A5BCB80A3381C400AD9F03 /* Default */ = { - isa = XCBuildConfiguration; - buildSettings = { - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(Max SDK)/max-includes/ext_carbon_prefix.h"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "FLEXT_SYS=1", - FLEXT_SHARED, - ); - HEADER_SEARCH_PATHS = ( - "$(Max", - "SDK)/max-includes", - "$(Max", - "SDK)/msp-includes", - ); - INSTALL_PATH = /usr/local/lib; - LIBRARY_SEARCH_PATHS = ( - "$(Max", - "SDK)/msp-includes", - "$(Max", - "SDK)/msp-includes", - ); - LIBRARY_STYLE = DYNAMIC; - MACH_O_TYPE = mh_dylib; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PREBINDING = YES; - PRODUCT_NAME = "flext-max"; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - }; - name = Default; - }; - E9A5BCBA0A3381C400AD9F03 /* Development */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = YES; - }; - name = Development; - }; - E9A5BCBB0A3381C400AD9F03 /* Deployment */ = { - isa = XCBuildConfiguration; - buildSettings = { - }; - name = Deployment; - }; - E9A5BCBC0A3381C400AD9F03 /* Default */ = { - isa = XCBuildConfiguration; - buildSettings = { - }; - name = Default; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - E9A5BCA10A3381C400AD9F03 /* Build configuration list for PBXNativeTarget "PD static single" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E9A5BCA20A3381C400AD9F03 /* Development */, - E9A5BCA30A3381C400AD9F03 /* Deployment */, - E9A5BCA40A3381C400AD9F03 /* Default */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Default; - }; - E9A5BCA50A3381C400AD9F03 /* Build configuration list for PBXNativeTarget "PD static multi" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E9A5BCA60A3381C400AD9F03 /* Development */, - E9A5BCA70A3381C400AD9F03 /* Deployment */, - E9A5BCA80A3381C400AD9F03 /* Default */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Default; - }; - E9A5BCA90A3381C400AD9F03 /* Build configuration list for PBXNativeTarget "PD shared" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E9A5BCAA0A3381C400AD9F03 /* Development */, - E9A5BCAB0A3381C400AD9F03 /* Deployment */, - E9A5BCAC0A3381C400AD9F03 /* Default */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Default; - }; - E9A5BCAD0A3381C400AD9F03 /* Build configuration list for PBXNativeTarget "Max static single" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E9A5BCAE0A3381C400AD9F03 /* Development */, - E9A5BCAF0A3381C400AD9F03 /* Deployment */, - E9A5BCB00A3381C400AD9F03 /* Default */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Default; - }; - E9A5BCB10A3381C400AD9F03 /* Build configuration list for PBXNativeTarget "Max static multi" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E9A5BCB20A3381C400AD9F03 /* Development */, - E9A5BCB30A3381C400AD9F03 /* Deployment */, - E9A5BCB40A3381C400AD9F03 /* Default */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Default; - }; - E9A5BCB50A3381C400AD9F03 /* Build configuration list for PBXNativeTarget "Max shared" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E9A5BCB60A3381C400AD9F03 /* Development */, - E9A5BCB70A3381C400AD9F03 /* Deployment */, - E9A5BCB80A3381C400AD9F03 /* Default */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Default; - }; - E9A5BCB90A3381C400AD9F03 /* Build configuration list for PBXProject "flext" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E9A5BCBA0A3381C400AD9F03 /* Development */, - E9A5BCBB0A3381C400AD9F03 /* Deployment */, - E9A5BCBC0A3381C400AD9F03 /* Default */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Default; - }; -/* End XCConfigurationList section */ - }; - rootObject = 0867D690FE84028FC02AAC07 /* Project object */; -} diff --git a/externals/grill/flext/gpl.txt b/externals/grill/flext/gpl.txt deleted file mode 100644 index 5ea29a7d..00000000 --- a/externals/grill/flext/gpl.txt +++ /dev/null @@ -1,346 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) 19yy - - 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 - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. - diff --git a/externals/grill/flext/license.txt b/externals/grill/flext/license.txt deleted file mode 100644 index 9488294f..00000000 --- a/externals/grill/flext/license.txt +++ /dev/null @@ -1,19 +0,0 @@ -flext - C++ layer for Max/MSP and pd (pure data) externals -Copyright (C) 2001-2005 Thomas Grill - -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. - -In the official flext distribution, the GNU General Public License is -in the file gpl.txt \ No newline at end of file diff --git a/externals/grill/flext/notes.txt b/externals/grill/flext/notes.txt deleted file mode 100644 index 93c71227..00000000 --- a/externals/grill/flext/notes.txt +++ /dev/null @@ -1,69 +0,0 @@ -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - ----------------------------------------------------------------------------- - -VARIOUS NOTES: - -Platform specific: -- PD does not allow signal and message to go into the same inlet (except leftmost inlet) -- PD: with DSP objects all float messages to the leftmost inlet are converted to signal - -Restrictions in compatibility mode: -- Max allows only 9 float/int inlets - -Porting to new compilers/platforms: -- enums must be int-sized!!! -- compiler must support bool type -- an STL implementation must exist -- C++ exceptions and RTTI must be enabled - ----------------------------------------------------------------------------- - -KNOWN BUGS: -- Some few external libraries have troubles with flext's global new and delete overloadings. - In these cases one can switch back to the C library memory operators by defining the FLEXT_NOGLOBALNEW macro before - inclusion of the flext.h header file (e.g. as a -D compiler option) - -- PD: floats into the leftmost inlet of DSP objects can't be used as messages - even if there's no signal inlet at all - ----------------------------------------------------------------------------- - -TODO LIST: - -- optimizations for object initialization and messaging -- speed up message handling (usage of other containers?) -- SIMD for gcc -- lock-free code for old AMD 64-bit architectures - -- update documentation -- add log messages for debugging version -- use PD's t_float and t_int types (or comparable for 32-bit safety) - -- add double handlers -- add signal in/out connection query function - -- support for Max qelem style - -- flext::post and flext::error should print via a worker thread (and should be unlimited in characters) - -- manage running threads individually (stop, isrunning?, priority etc.) - ----------------------------------------------------------------------------- - -TESTS TO DO: - -- PD: problems with timed buffer redrawing (takes a lot of cpu time) -- hard thread termination upon object destruction doesn't seem to work properly -> crash -- Max rounding bug ... buffer resize could be one sample less! - -- PD: figure out what "pointer" messages do and whether they are correctly implemented in flext - -- Max buffer~ resize: flext_base::buffer::Frames(): must we use buffer or system sample rate? - -- check whether m_dsp gets called upon deletion of a used buffer (PD and MaxMSP may behave differently). - -> PD does call m_dsp, Max/MSP does not diff --git a/externals/grill/flext/package.txt b/externals/grill/flext/package.txt deleted file mode 100644 index c4b2d9a9..00000000 --- a/externals/grill/flext/package.txt +++ /dev/null @@ -1,48 +0,0 @@ -# -# flext - C++ layer for Max/MSP and pd (pure data) externals -# -# Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -# For information on usage and redistribution, and for a DISCLAIMER OF ALL -# WARRANTIES, see the file, "license.txt," in this distribution. -# -# more information on http://grrrr.org/ext -# ------------------------------------------------------------------------ -# -# This file contains information for the building process -# -# DO NOT EDIT!! -# -# ------------------------------------------------------------------------ - -NAME=flext - -BUILDCLASS=flext -BUILDMODE=all -BUILDTYPE=all - -BUILDDIR=build - -SRCDIR=source - -PRECOMPILE=flext.h - -SRCS= \ - flbase.cpp flext.cpp flbuf.cpp fldsp.cpp fllib.cpp \ - flxlet.cpp flattr.cpp flattr_ed.cpp flsupport.cpp \ - flutil.cpp flatom.cpp flatom_pr.cpp flthr.cpp fltimer.cpp flsimd.cpp flout.cpp \ - flatom_part.cpp flitem.cpp flmeth.cpp flmsg.cpp \ - flproxy.cpp flqueue.cpp flbind.cpp flmap.cpp -HDRS= \ - flext.h flprefix.h flstdc.h flinternal.h flfeatures.h \ - flbase.h flclass.h flsupport.h fldsp.h \ - flmap.h flcontainers.h \ - fldefs.h fldefs_hdr.h fldefs_setup.h \ - fldefs_methcb.h fldefs_meththr.h fldefs_methadd.h fldefs_methbind.h fldefs_methcall.h \ - fldefs_attrcb.h fldefs_attrvar.h fldefs_attradd.h - - -SRCS_SNDOBJ=flsndobj.cpp -HDRS_SNDOBJ=flsndobj.h - -SRCS_STK=flstk.cpp -HDRS_STK=flstk.h diff --git a/externals/grill/flext/readme.txt b/externals/grill/flext/readme.txt deleted file mode 100644 index 30d55aba..00000000 --- a/externals/grill/flext/readme.txt +++ /dev/null @@ -1,91 +0,0 @@ -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -This package seeks to encourage the development of open source software -for the pd and Max/MSP platforms. - -Donations for further development of the package are highly appreciated. -https://www.paypal.com/xclick/business=gr%40grrrr.org&item_name=flext&no_note=1&tax=0¤cy_code=EUR - ----------------------------------------------------------------------------- - -Abstract: - -flext seeks to represent a uniform programming interface for extending the most common -modular real-time audio systems Max/MSP and Pure Data (PD) with external modules, or -short externals. These modules provide a way to tailor such a system for one’s -special needs and supply additional functionality. - -Source code based on flext is able to exploit most common features of the -respective real-time framework while staying completely independent of the -actual host system and platform (hardware and operating system). - -flext currently supports development for PD under Linux, Windows and OSX as well as -Max/MSP under OS9, OSX and Windows with various programming environments. - ----------------------------------------------------------------------------- - -Goals/features of the package: - -pros: -- better readability of code compared to straight C externals -- faster development, more robust coding -- sharing of common methods and data by using base classes -- any input to any inlet (with the exception of signal streams) -- transparent use of threads for methods -- libraries of externals in Max/MSP -- more than 3 typed creation arguments possible for Max/MSP - -cons: -- introduces a small overhead to speed of message and signal handling -- larger memory footprint - ----------------------------------------------------------------------------- - -Prerequisites: - ---- PD --- - You need the pd source code which is most likely part of the distribution. - Otherwise download from: http://www-crca.ucsd.edu/~msp/software.html - ---- Max/MSP --- - You will need the latest Max/MSP SDK - for Windows (http://synthesisters.com/pluggo3/downloadMaxWinSDK.php) - for OSX (http://www.synthesisters.com/sdk/max.php) - or for OS9 (ask Cycling'74 where to find that) - - For OS9 threading support you'll also need the Multiprocessing library - (download at http://developer.apple.com/sdk/) - ---- SndObj --- - If you choose to compile with SndObj support you will need the respective library - download from: http://www.may.ie/academic/music/musictec/SndObj/main.html - ---- STK --- - If you choose to compile with STK support you will need the respective package - and build a library. - download from: http://ccrma-www.stanford.edu/software/stk/ - For linking it may preferable to use a library of all the STK objects. - Under linux you can create one from the STK directory with something like - "g++ -c -pipe -I include -D __LINUX_OSS__ src/*.cpp && ar r libstk.a *.o && rm -f *.o" - ----------------------------------------------------------------------------- - -Building and installing of flext and flext-based externals: - - See the build.txt document - ----------------------------------------------------------------------------- - -Various notes / limitations / bug list: - - Read the notes.txt document - ----------------------------------------------------------------------------- - -History of changes: - - Read the changes.txt document diff --git a/externals/grill/flext/source/Makefile.am b/externals/grill/flext/source/Makefile.am deleted file mode 100755 index a07525a2..00000000 --- a/externals/grill/flext/source/Makefile.am +++ /dev/null @@ -1,129 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -lib_LIBRARIES = libflext-pd_s.a libflext-pd_sd.a libflext-pd_t.a libflext-pd_td.a - -SRCS_FLEXT = \ - flbase.cpp \ - flext.cpp \ - flbuf.cpp \ - fldsp.cpp \ - fllib.cpp \ - flxlet.cpp \ - flattr.cpp \ - flattr_ed.cpp \ - flsupport.cpp \ - flutil.cpp \ - flatom.cpp \ - flatom_pr.cpp \ - flthr.cpp \ - fltimer.cpp \ - flsimd.cpp \ - flout.cpp \ - flatom_app.cpp \ - flatom_part.cpp \ - flitem.cpp \ - flmeth.cpp \ - flmsg.cpp \ - flproxy.cpp \ - flqueue.cpp \ - flbind.cpp \ - flmap.cpp - -pkginclude_HEADERS = \ - flprefix.h \ - flstdc.h \ - flbase.h \ - flclass.h \ - flext.h \ - flsupport.h \ - flmap.h \ - fldsp.h \ - flinternal.h \ - fldefs.h \ - fldefs_hdr.h \ - fldefs_setup.h \ - fldefs_methcb.h \ - fldefs_meththr.h \ - fldefs_methadd.h \ - fldefs_methbind.h \ - fldefs_methcall.h \ - fldefs_attrcb.h \ - fldefs_attrvar.h \ - fldefs_attradd.h - - -# handling for stk / sndobj -SRCS_STK = flstk.cpp -HDRS_STK = flstk.cpp - -SRCS_SNDOBJ = flsndobj.cpp -HDRS_SNDOBJ = flsndobj.cpp - -if SNDOBJ -SRCS_FLEXT += $(SRCS_SNDOBJ) -pkginclude_HEADERS += $(HDRS_SNDOBJ) -LIB_SNDOBJ = -lsndobj -endif - -if STK -SRCS_FLEXT += $(SRCS_STK) -pkginclude_HEADERS += $(HDRS_STK) -LIB_STK = -lstk -endif - -FRAMEWORKS = @FRAMEWORKS@ - -# for static libraries we can use automake -libflext_pd_s_a_SOURCES = $(SRCS_FLEXT) -libflext_pd_sd_a_SOURCES = $(SRCS_FLEXT) -libflext_pd_t_a_SOURCES = $(SRCS_FLEXT) -libflext_pd_td_a_SOURCES = $(SRCS_FLEXT) - -libflext_pd_s_a_CXXFLAGS = @OPT_FLAGS@ @INCLUDEDIR@ -libflext_pd_sd_a_CXXFLAGS = @INCLUDEDIR@ -g -DFLEXT_DEBUG -libflext_pd_t_a_CXXFLAGS = @OPT_FLAGS@ @INCLUDEDIR@ -DFLEXT_THREADS -libflext_pd_td_a_CXXFLAGS = @INCLUDEDIR@ -g -DFLEXT_DEBUG -DFLEXT_THREADS - -libflext_pd_s_a_LDFLAGS = @OPT_FLAGS@ @INCLUDEDIR@ \ - $(patsubst %,-framework %,$(FRAMEWORKS)) -libflext_pd_sd_a_LDFLAGS = @INCLUDEDIR@ -g -DFLEXT_DEBUG \ - $(patsubst %,-framework %,$(FRAMEWORKS)) -libflext_pd_t_a_LDFLAGS = @OPT_FLAGS@ @INCLUDEDIR@ -DFLEXT_THREADS \ - $(patsubst %,-framework %,$(FRAMEWORKS)) -libflext_pd_td_a_LDFLAGS = @INCLUDEDIR@ -g -DFLEXT_DEBUG -DFLEXT_THREADS \ - $(patsubst %,-framework %,$(FRAMEWORKS)) - -# for shared libraries, we can't ... -libflext_pd_la_CXXFLAGS = @OPT_FLAGS@ @INCLUDEDIR@ -DFLEXT_SHARED \ - -DFLEXT_EXPORTS $(DEFS) -libflext_pd_d_la_CXXFLAGS = @INCLUDEDIR@ -g -DFLEXT_DEBUG -DFLEXT_SHARED \ - -DFLEXT_EXPORTS $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) -libflext_pd_la_LDFLAGS = @DYNAMIC_LDFLAGS@ $(LIB_STK) $(LIB_SNDOBJ) $(LDFLAGS) \ - $(patsubst %,-framework %,$(FRAMEWORKS)) -libflext_pd_d_la_LDFLAGS = @DYNAMIC_LDFLAGS@ $(LIB_STK) $(LIB_SNDOBJ) $(LDFLAGS) - $(patsubst %,-framework %,$(FRAMEWORKS)) - -libflext_pd_la_NAME = libflext-pd.@SOEXT@ -libflext_pd_d_la_NAME = libflext-pd_d.@SOEXT@ - -all-local: $(libflext_pd_la_NAME) $(libflext_pd_d_la_NAME) - -$(libflext_pd_la_NAME): $(patsubst %.cpp,libflext_pd_la-%.o,$(SRCS_FLEXT)) - $(CXX) $(libflext_pd_la_LDFLAGS) $(LIBS) -o $(libflext_pd_la_NAME) $^ - -libflext_pd_la-%.o : %.cpp - $(CXX) -c $(libflext_pd_la_CXXFLAGS) $< -o $@ - -$(libflext_pd_d_la_NAME): $(patsubst %.cpp,libflext_pd_d_la-%.o,$(SRCS_FLEXT)) - $(CXX) $(libflext_pd_d_la_LDFLAGS) $(LIBS) -o $(libflext_pd_d_la_NAME) $^ - -libflext_pd_d_la-%.o: %.cpp - $(CXX) -c $(libflext_pd_d_la_CXXFLAGS) $< -o $@ - -install-exec-local: - $(libLIBRARIES_INSTALL) $(libflext_pd_la_NAME) $(DESTDIR)$(libdir) - $(libLIBRARIES_INSTALL) $(libflext_pd_d_la_NAME) $(DESTDIR)$(libdir) - diff --git a/externals/grill/flext/source/flatom.cpp b/externals/grill/flext/source/flatom.cpp deleted file mode 100644 index ea0191c1..00000000 --- a/externals/grill/flext/source/flatom.cpp +++ /dev/null @@ -1,165 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flatom.cpp - \brief Definitions for handling the t_atom type and lists thereof. -*/ - -#include "flext.h" -#include // for memcpy - -#if FLEXT_SYS != FLEXT_SYS_JMAX -int flext::CmpAtom(const t_atom &a,const t_atom &b) -{ - if(GetType(a) == GetType(b)) { - switch(GetType(a)) { - case A_FLOAT: return GetFloat(a) == GetFloat(b)?0:(GetFloat(a) < GetFloat(b)?-1:1); -#if FLEXT_SYS == FLEXT_SYS_MAX - case A_INT: return GetInt(a) == GetInt(b)?0:(GetInt(a) < GetInt(b)?-1:1); -#endif - case A_SYMBOL: return GetSymbol(a) == GetSymbol(b)?0:strcmp(GetString(a),GetString(b)); -#if FLEXT_SYS == FLEXT_SYS_PD - case A_POINTER: return GetPointer(a) == GetPointer(b)?0:(GetPointer(a) < GetPointer(b)?-1:1); -#endif - default: - // can't be compared..... - FLEXT_ASSERT(false); - return 0; - } - } - else - return GetType(a) < GetType(b)?-1:1; -} -#else -#error Not implemented -#endif - -t_atom *flext::CopyList(int argc,const t_atom *argv) -{ - t_atom *dst = new t_atom[argc]; - memcpy(dst,argv,argc*sizeof(t_atom)); - return dst; -} - -void flext::CopyAtoms(int cnt,t_atom *dst,const t_atom *src) -{ - if(dst < src) - // forward - memcpy(dst,src,cnt*sizeof(t_atom)); - else - // backwards - while(cnt--) dst[cnt] = src[cnt]; -} - -void flext::AtomList::Alloc(int sz,int keepix,int keeplen,int keepto) -{ - if(lst) { - if(cnt == sz) { - if(keepix >= 0 && keepix != keepto) { - int c = keeplen >= 0?keeplen:cnt; - FLEXT_ASSERT(c+keepto <= cnt); - FLEXT_ASSERT(c+keepix <= cnt); - CopyAtoms(c,lst+keepto,lst+keepix); - } - - return; // no change - } - - t_atom *l; - if(sz) { - l = new t_atom[sz]; - if(keepix >= 0) { - // keep contents - int c = keeplen >= 0?keeplen:(cnt > sz?sz:cnt); - FLEXT_ASSERT(c+keepto <= sz); - FLEXT_ASSERT(c+keepix <= cnt); - CopyAtoms(c,l+keepto,lst+keepix); - } - } - else - l = NULL; - - Free(); - lst = l,cnt = sz; - } - else { - FLEXT_ASSERT(cnt == 0); - if(sz) lst = new t_atom[cnt = sz]; - } -} - -flext::AtomList::~AtomList() { Free(); } - -void flext::AtomList::Free() -{ - if(lst) { - delete[] lst; lst = NULL; - cnt = 0; - } - else - FLEXT_ASSERT(cnt == 0); -} - -flext::AtomList &flext::AtomList::Set(int argc,const t_atom *argv,int offs,bool resize) -{ - int ncnt = argc+offs; - if(resize) Alloc(ncnt); - - // argv can be NULL independently from argc - if(argv) CopyAtoms(argc,lst+offs,argv); - - return *this; -} - -int flext::AtomList::Compare(const AtomList &a) const -{ - if(Count() == a.Count()) { - for(int i = 0; i < Count(); ++i) { - int cmp = CmpAtom(lst[i],a[i]); - if(cmp) return cmp; - } - return 0; - } - else - return Count() < a.Count()?-1:1; -} - -flext::AtomListStaticBase::~AtomListStaticBase() { Free(); } - -void flext::AtomListStaticBase::Alloc(int sz,int keepix,int keeplen,int keepto) -{ - if(sz <= precnt) { - // small enough for pre-allocated space - - if(lst != predata && lst) { - // currently allocated memory is larger than what we need - - if(keepix >= 0) { - // keep contents - int c = keeplen >= 0?keeplen:(cnt > sz?sz:cnt); - FLEXT_ASSERT(c+keepto <= precnt); - FLEXT_ASSERT(c+keepix <= cnt); - CopyAtoms(c,predata+keepto,lst+keepix); - } - - // free allocated memory - AtomList::Free(); - } - lst = predata,cnt = sz; - } - else - AtomList::Alloc(sz,keepix,keeplen,keepto); -} - -void flext::AtomListStaticBase::Free() -{ - if(lst != predata) AtomList::Free(); - else lst = NULL,cnt = 0; -} diff --git a/externals/grill/flext/source/flatom_part.cpp b/externals/grill/flext/source/flatom_part.cpp deleted file mode 100644 index b6d4661c..00000000 --- a/externals/grill/flext/source/flatom_part.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flatom_part.cpp - \brief Definitions for handling the t_atom type and lists thereof. -*/ - -#include "flext.h" - -int flext::AtomList::Get(t_atom *argv,int mxsz) const -{ - int argc = Count(); - if(mxsz >= 0 && argc > mxsz) argc = mxsz; - - for(int i = 0; i < argc; ++i) SetAtom(argv[i],lst[i]); - - return argc; -} - - -void flext::AtomList::GetPart(int offs,int len,AtomList &ret) const -{ - if(offs+len > Count()) { - len = Count()-offs; - if(len < 0) len = 0; - } - - ret(len,Atoms()+offs); -} - diff --git a/externals/grill/flext/source/flatom_pr.cpp b/externals/grill/flext/source/flatom_pr.cpp deleted file mode 100644 index 9b9231ed..00000000 --- a/externals/grill/flext/source/flatom_pr.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flatom_pr.cpp - \brief Definitions for printing and scanning the t_atom type. -*/ - -#include "flext.h" -#include -#include -#include -#include - -#ifdef _MSC_VER -#define snprintf _snprintf -#endif - -// \TODO take bufsz into account! -bool flext::PrintAtom(const t_atom &a,char *buf,size_t bufsz) -{ - bool ok = true; - if(IsFloat(a)) { - ok = STD::snprintf(buf,bufsz,"%g",GetFloat(a)) > 0; - } - else if(IsInt(a)) { - ok = STD::snprintf(buf,bufsz,"%i",GetInt(a)) > 0; - } - else if(IsSymbol(a)) { - const char *c = GetString(a); - size_t len = strlen(c); - if(len < bufsz) { - memcpy(buf,c,len); buf[len] = 0; - ok = true; - } - else - ok = false; - } -#if FLEXT_SYS == FLEXT_SYS_PD -#ifndef FLEXT_COMPATIBLE - else if(IsPointer(a)) { - ok = STD::snprintf(buf,bufsz,"%p",GetPointer(a)) > 0; - } -#endif - else if(a.a_type == A_DOLLAR) { - ok = STD::snprintf(buf,bufsz,"$%d",a.a_w.w_index) > 0; - } - else if(a.a_type == A_DOLLSYM) { - ok = STD::snprintf(buf,bufsz,"$%s",GetString(a)) > 0; - } -#elif FLEXT_SYS == FLEXT_SYS_MAX - else if(a.a_type == A_DOLLAR) { - ok = STD::snprintf(buf,bufsz,"$%d",a.a_w.w_long) > 0; - } -#else -//#pragma message("Not implemented") -#endif - else { - error("flext: atom type unknown"); - ok = false; - } - return ok; -} - -bool flext::PrintList(int argc,const t_atom *argv,char *buf,size_t bufsz) -{ - bool ok = true; - for(int i = 0; ok && i < argc && bufsz > 0; ++i) { - if(i) { *(buf++) = ' '; --bufsz; } // prepend space - - if(PrintAtom(argv[i],buf,bufsz)) { - size_t len = strlen(buf); - buf += len,bufsz -= len; - } - else - ok = false; - } - *buf = 0; - return ok; -} - - -const char *flext::ScanAtom(t_atom &a,const char *c) -{ - // skip leading whitespace - while(*c && isspace(*c)) ++c; - if(!*c) return NULL; - - // go to next space and save character - char *end = const_cast(c); - while(*end && !isspace(*end)) ++end; - char sv = *end; - - float fres; - // first try float - char *endp; - // see if it's a float - thanks to Frank Barknecht - fres = (float)strtod(c,&endp); - if(!*c && endp != c) { - int ires = (int)fres; // try a cast - if(fres == ires) - SetInt(a,ires); - else - SetFloat(a,fres); - } - // no, it's a symbol - else - SetString(a,c); - - *end = sv; - - return c; -} diff --git a/externals/grill/flext/source/flattr.cpp b/externals/grill/flext/source/flattr.cpp deleted file mode 100644 index 2054f7d4..00000000 --- a/externals/grill/flext/source/flattr.cpp +++ /dev/null @@ -1,445 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flattr.cpp - \brief Attribute handling for the flext base class -*/ - -#include "flext.h" -#include -#include - -#include - - -#ifdef __MWERKS__ -#define STD std -#else -#define STD -#endif - -flext_base::AttrItem::AttrItem(const t_symbol *t,metharg tp,methfun f,int fl): - Item(NULL),index(0), - flags(fl|afl_shown), - argtp(tp),fun(f), - counter(NULL),tag(t) -{} - - -/* -flext_base::AttrDataCont::AttrDataCont() {} - -flext_base::AttrDataCont::~AttrDataCont() -{ - for(iterator it = begin(); it != end(); ++it) - if(it.data()) delete it.data(); -} -*/ - -flext_base::AttrDataCont::~AttrDataCont() { clear(); } - -void flext_base::AttrDataCont::clear() -{ - for(iterator it(*this); it; ++it) delete it.data(); - TablePtrMap::clear(); -} - -//! Add get and set attributes -void flext_base::AddAttrib(ItemCont *aa,ItemCont *ma,const t_symbol *asym,metharg tp,methfun gfun,methfun sfun) -{ - AttrItem *a,*b; - - FLEXT_ASSERT(asym != sym__ && asym != sym_list && asym != sym_float && asym != sym_symbol && asym != sym_anything); - - if(sfun) // if commented out, there will be a warning at run-time (more user-friendly) - { - a = new AttrItem(asym,tp,sfun,AttrItem::afl_set); - a->index = aa->Members(); - aa->Add(a,asym); - - // bind attribute to a method - MethItem *mi = new MethItem(a); - mi->SetArgs(sfun,1,new metharg(tp)); - ma->Add(mi,asym); - } - else - a = NULL; - - if(gfun) // if commented out, there will be a warning at run-time (more user-friendly) - { - b = new AttrItem(asym,tp,gfun,AttrItem::afl_get); - b->index = aa->Members(); - aa->Add(b,asym); - - static char tmp[256] = "get"; - strcpy(tmp+3,GetString(asym)); - - // bind attribute to a method - MethItem *mi = new MethItem(b); - mi->SetArgs(gfun,0,NULL); - ma->Add(mi,MakeSymbol(tmp)); - } - else - b = NULL; - - if(a && b) { - a->counter = b; - b->counter = a; - } -} - -void flext_base::AddAttrib(const t_symbol *attr,metharg tp,methfun gfun,methfun sfun) -{ - if(HasAttributes()) - AddAttrib(ThAttrs(),ThMeths(),attr,tp,gfun,sfun); - else - error("%s - attribute procession is not enabled!",thisName()); -} - -void flext_base::AddAttrib(t_classid c,const t_symbol *attr,metharg tp,methfun gfun,methfun sfun) -{ - AddAttrib(ClAttrs(c),ClMeths(c),attr,tp,gfun,sfun); -} - -void flext_base::ListAttrib(AtomList &la) const -{ - typedef TablePtrMap AttrList; - AttrList list[2]; - ItemCont *clattrhead = ClAttrs(thisClassId()); - - int i; - for(i = 0; i <= 1; ++i) { - ItemCont *a = i?attrhead:clattrhead; - if(a && a->Contained(0)) { - ItemSet &ai = a->GetInlet(); - for(ItemSet::iterator as(ai); as; ++as) { - for(Item *al = as.data(); al; al = al->nxt) { - AttrItem *aa = (AttrItem *)al; - list[i].insert(aa->index,as.key()); - break; - } - } - } - } - - la((int)(list[0].size()+list[1].size())); - int ix = 0; - for(i = 0; i <= 1; ++i) - for(AttrList::iterator it(list[i]); it; ++it) - SetSymbol(la[ix++],it.data()); -} - -int flext_base::CheckAttrib(int argc,const t_atom *argv) -{ - int offs = 0; - for(; offs < argc; ++offs) - if(IsString(argv[offs]) && *GetString(argv[offs]) == '@') break; - return offs; -} - -bool flext_base::InitAttrib(int argc,const t_atom *argv) -{ - int cur,nxt; - for(cur = 0; cur < argc; cur = nxt) { - // find next @symbol - for(nxt = cur+1; nxt < argc; ++nxt) - if(IsString(argv[nxt]) && *GetString(argv[nxt]) == '@') break; - - const t_symbol *tag = MakeSymbol(GetString(argv[cur])+1); - - // find puttable attribute - AttrItem *attr = FindAttrib(tag,false,true); - if(attr) { - // make an entry (there are none beforehand...) -/* - AttrDataCont::iterator it = attrdata->find(tag); - if(it == attrdata->end()) { - AttrDataCont::pair pair; - pair.key() = tag; - pair.data() = new AttrData; - it = attrdata->insert(attrdata->begin(),pair); - } - - AttrData &a = *it.data(); - a.SetInit(true); - a.SetInitValue(nxt-cur-1,argv+cur+1); - - // pass value to object - SetAttrib(tag,attr,a.GetInitValue()); -*/ - AttrData *a = attrdata->find(tag); - if(!a) { - AttrData *old = attrdata->insert(tag,a = new AttrData); - FLEXT_ASSERT(!old); - } - - a->SetInit(true); - a->SetInitValue(nxt-cur-1,argv+cur+1); - - // pass value to object - SetAttrib(tag,attr,a->GetInitValue()); - } - } - return true; -} - -bool flext_base::ListAttrib() const -{ - if(HasAttributes()) { - // defined in flsupport.cpp - AtomListStatic<32> la; - ListAttrib(la); - ToOutAnything(GetOutAttr(),sym_attributes,la.Count(),la.Atoms()); - return true; - } - else - return false; -} - -flext_base::AttrItem *flext_base::FindAttrib(const t_symbol *tag,bool get,bool msg) const -{ - ItemCont *clattrhead = ClAttrs(thisClassId()); - - // first search within object scope - AttrItem *a = NULL; - { - for(Item *lst = attrhead->FindList(tag); lst; lst = lst->nxt) { - AttrItem *b = (AttrItem *)lst; - if(get?b->IsGet():b->IsSet()) { a = b; break; } - } - } - - // then (if nothing found) search within class scope - if(!a) { - for(Item *lst = clattrhead->FindList(tag); lst; lst = lst->nxt) { - AttrItem *b = (AttrItem *)lst; - if(get?b->IsGet():b->IsSet()) { a = b; break; } - } - } - - if(!a && msg) { - // print a message - error("%s - %s: attribute not found",thisName(),GetString(tag)); - } - return a; -} - -bool flext_base::SetAttrib(const t_symbol *tag,int argc,const t_atom *argv) -{ - // search for matching attribute - AttrItem *a = FindAttrib(tag,false,true); - return a && SetAttrib(tag,a,argc,argv); -} - -bool flext_base::SetAttrib(const t_symbol *tag,AttrItem *a,int argc,const t_atom *argv) -{ - if(a->fun) { - bool ok = true; - - t_any any; - switch(a->argtp) { - case a_float: - if(argc == 1 && CanbeFloat(argv[0])) { - any.ft = GetAFloat(argv[0]); - ((methfun_1)a->fun)(this,any); - } - else ok = false; - break; - case a_int: - if(argc == 1 && CanbeInt(argv[0])) { - any.it = GetAInt(argv[0]); - ((methfun_1)a->fun)(this,any); - } - else ok = false; - break; - case a_symbol: - if(argc == 1 && IsSymbol(argv[0])) { - t_atom at; - GetParamSym(at,GetSymbol(argv[0]),thisCanvas()); - any.st = const_cast(GetSymbol(at)); - ((methfun_1)a->fun)(this,any); - } - else ok = false; - break; - case a_bool: - if(argc == 1 && CanbeBool(argv[0])) { - any.bt = GetABool(argv[0]); - ((methfun_1)a->fun)(this,any); - } - else ok = false; - break; - case a_LIST: { - AtomListStatic<16> la(argc); - for(int i = 0; i < argc; ++i) - if(IsSymbol(argv[i])) - GetParamSym(la[i],GetSymbol(argv[i]),thisCanvas()); - else - la[i] = argv[i]; - - any.vt = &la; - ((methfun_1)a->fun)(this,any); - break; - } - default: - ERRINTERNAL(); - } - - if(!ok) - post("%s - wrong arguments for attribute %s",thisName(),GetString(tag)); - } - else - post("%s - attribute %s has no get method",thisName(),GetString(tag)); - return true; -} - - -bool flext_base::GetAttrib(const t_symbol *tag,AttrItem *a,AtomList &la) const -{ - bool ok = true; - // main attribute tag - if(a) { - if(a->fun) { - t_any any; - switch(a->argtp) { - case a_float: { - ((methfun_1)a->fun)(const_cast(this),any); - la(1); - SetFloat(la[0],any.ft); - break; - } - case a_int: { - ((methfun_1)a->fun)(const_cast(this),any); - la(1); - SetInt(la[0],any.it); - break; - } - case a_bool: { - ((methfun_1)a->fun)(const_cast(this),any); - la(1); - SetBool(la[0],any.bt); - break; - } - case a_symbol: { - ((methfun_1)a->fun)(const_cast(this),any); - la(1); - SetSymbol(la[0],any.st); - break; - } - case a_LIST: { - any.vt = &la; - ((methfun_1)a->fun)(const_cast(this),any); - break; - } - default: - ERRINTERNAL(); - ok = false; - } - } - else { - post("%s - attribute %s has no get method",thisName(),GetString(tag)); - ok = false; - } - } - else { - error("%s - %s: attribute not found",thisName(),GetString(tag)); - ok = false; - } - return ok; -} - -bool flext_base::GetAttrib(const t_symbol *s,AtomList &a) const -{ - AttrItem *attr = FindAttrib(s,true); - return attr && GetAttrib(s,attr,a); -} - -//! \param tag symbol "get[attribute]" -bool flext_base::DumpAttrib(const t_symbol *tag,AttrItem *a) const -{ - AtomListStatic<16> la; - bool ret = GetAttrib(tag,a,la); - if(ret) { - ToOutAnything(GetOutAttr(),a->tag,la.Count(),la.Atoms()); - } - return ret; -} - -bool flext_base::DumpAttrib(const t_symbol *attr) const -{ - AttrItem *item = FindAttrib(attr,true); - return item && DumpAttrib(attr,item); -} - -bool flext_base::BangAttrib(const t_symbol *attr,AttrItem *item) -{ - AtomListStatic<16> val; - AttrItem *item2; - if(!item->IsGet()) - item = item->Counterpart(); - if(item) { - item2 = item->Counterpart(); - return item2 && GetAttrib(attr,item,val) && SetAttrib(attr,item2,val); - } - else - return false; -} - -bool flext_base::BangAttrib(const t_symbol *attr) -{ - AttrItem *item = FindAttrib(attr,true); - return item && BangAttrib(attr,item); -} - -bool flext_base::BangAttribAll() -{ - ItemCont *clattrhead = ClAttrs(thisClassId()); - - for(int i = 0; i <= 1; ++i) { - ItemCont *a = i?attrhead:clattrhead; - if(a) { - ItemSet &ai = a->GetInlet(); // \todo need to check for presence of inlet 0? -/* - for(ItemSet::iterator as = ai.begin(); as != ai.end(); ++as) { - for(Item *al = as.data(); al; al = al->nxt) { - AttrItem *a = (AttrItem *)al; - if(a->IsGet() && a->BothExist()) BangAttrib(as.key(),a); - } - } -*/ - for(ItemSet::iterator as(ai); as; ++as) { - for(Item *al = as.data(); al; al = al->nxt) { - AttrItem *a = (AttrItem *)al; - if(a->IsGet() && a->BothExist()) BangAttrib(as.key(),a); - } - } - } - } - return true; -} - -bool flext_base::ShowAttrib(AttrItem *a,bool show) const -{ - if(show) a->flags |= AttrItem::afl_shown; - else a->flags &= ~AttrItem::afl_shown; - - // also change counterpart, if present - AttrItem *ca = a->Counterpart(); - if(ca) { - if(show) ca->flags |= AttrItem::afl_shown; - else ca->flags &= ~AttrItem::afl_shown; - } - return true; -} - -bool flext_base::ShowAttrib(const t_symbol *attr,bool show) const -{ - AttrItem *item = FindAttrib(attr,true); - return item && ShowAttrib(item,show); -} diff --git a/externals/grill/flext/source/flattr_ed.cpp b/externals/grill/flext/source/flattr_ed.cpp deleted file mode 100644 index 115dad13..00000000 --- a/externals/grill/flext/source/flattr_ed.cpp +++ /dev/null @@ -1,872 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flattr_ed.cpp - \brief Attribute editor (property dialog) for PD -*/ - -#include "flext.h" - -#if FLEXT_SYS == FLEXT_SYS_PD - -#ifdef _MSC_VER -#pragma warning( disable : 4091 ) -#endif - - -#if defined(FLEXT_ATTRHIDE) || PD_MINOR_VERSION < 37 -#define __FLEXT_WIDGETBEHAVIOR -#endif - -////////////////////////////////////////////////////// -#ifdef __FLEXT_WIDGETBEHAVIOR -// we need non-public headers! -#pragma message("Attention: non-public headers used - binary is bound to a specific version") - -#include - -/* -#ifdef PD_DEVEL_VERSION -#define __FLEXT_CLONEWIDGET -#endif -*/ - -#ifndef __FLEXT_CLONEWIDGET -#include -#endif - -#endif -////////////////////////////////////////////////////// - - -#include -#include - - -#ifdef FLEXT_ATTRHIDE -#ifndef __FLEXT_CLONEWIDGET -static t_visfn ori_vis = NULL; -static t_selectfn ori_select = NULL; -#endif -#endif - - -#ifdef FLEXT_ATTRHIDE -#define ST_DISABLED "" -#else -#define ST_DISABLED " -state disabled" -#endif - - -#ifndef FLEXT_NOATTREDIT - -//! generate the script for the property dialog -static void tclscript() -{ - static bool havecode = false; - if(havecode) return; - else havecode = true; - - sys_vgui( - "proc flext_escatoms {lst} {\n" - "set tmp {}\n" - "foreach a $lst {\n" -// "set a [regsub {\\\\} $a \\\\\\\\]\n" // replace \ with \\ ... must be first - "set a [regsub {\\$} $a \\\\$]\n" // replace $ with \$ -// "set a [regsub {\\{} $a \\\\\\{]\n" // replace { with \{ -// "set a [regsub {\\}} $a \\\\\\}]\n" // replace } with \} -// "set a [regsub {\\ } $a \\\\\\ ]\n" // replace space with \space - "set a [regsub {,} $a \\\\,]\n" // replace , with \, - "set a [regsub {;} $a \\\\\\;]\n" // replace ; with \; - "lappend tmp $a\n" - "}\n" - "return $tmp\n" - "}\n" - ); - sys_vgui( - "proc flext_makevalue {id ix} {\n" - // strip "." from the TK id to make a variable name suffix - "set vid [string trimleft $id .]\n" - - "set var_attr_name [concat [concat var_name_$ix]_$vid ]\n" - "set var_attr_init [concat [concat var_init_$ix]_$vid ]\n" - "set var_attr_val [concat [concat var_val_$ix]_$vid ]\n" - "set var_attr_save [concat [concat var_save_$ix]_$vid ]\n" - "set var_attr_type [concat [concat var_type_$ix]_$vid ]\n" - - "global $var_attr_name $var_attr_init $var_attr_val $var_attr_save $var_attr_type\n" - - "set lst {}\n" - - "if { [expr $$var_attr_type] != 0 } {\n" - // attribute is puttable - - "lappend lst [eval concat $$var_attr_name]\n" - - // process current value - "set tmp [flext_escatoms [eval concat $$var_attr_val]]\n" - "set lst [concat $lst [llength $tmp] $tmp]\n" - - // process init value - "set tmp [flext_escatoms [eval concat $$var_attr_init]]\n" - "set lst [concat $lst [llength $tmp] $tmp]\n" - - "lappend lst [eval concat $$var_attr_save]\n" - "}\n" - - // return list - "return $lst\n" - "}\n" - ); - sys_vgui( - "proc flext_apply {id ix} {\n" - "set lst [flext_makevalue $id $ix]\n" - "set lst [eval concat $lst]\n" // remove curly braces from character escaping - "pd [concat $id attributedialog $lst \\;]\n" - "}\n" - - "proc flext_applyall {id alen} {\n" - // make a list of the attribute values (including save flags) - - "set lst {}\n" - "for {set ix 1} {$ix <= $alen} {incr ix} {\n" - "set lst [concat $lst [flext_makevalue $id $ix]]\n" - "}\n" - "set lst [eval concat $lst]\n" // remove curly braces from character escaping - - "pd [concat $id attributedialog $lst \\;]\n" - "}\n" - - "proc flext_cancel {id} {\n" - "pd [concat $id cancel \\;]\n" - "}\n" - - "proc flext_ok {id alen} {\n" - "flext_applyall $id $alen\n" - "flext_cancel $id\n" - "}\n" - ); - sys_vgui( - "proc flext_help {id} {\n" - "toplevel $id.hw\n" - "wm title $id.hw \"Flext attribute editor help\"\n" - - "frame $id.hw.buttons\n" - "pack $id.hw.buttons -side bottom -fill x -pady 2m\n" - - "text $id.hw.text -relief sunken -bd 2 -yscrollcommand \"$id.hw.scroll set\" -setgrid 1 -width 80 -height 10 -wrap word\n" - "scrollbar $id.hw.scroll -command \"$id.hw.text yview\"\n" - "pack $id.hw.scroll -side right -fill y\n" - "pack $id.hw.text -expand yes -fill both\n" - - "button $id.hw.buttons.ok -text OK -command \"destroy $id.hw\"\n" - "pack $id.hw.buttons.ok -side left -expand 1\n" - "bind $id.hw {} \"destroy $id.hw\"\n" - - "$id.hw.text tag configure big -font {Arial 10 bold}\n" - "$id.hw.text configure -font {Arial 8 bold}\n" - "$id.hw.text insert end \"" - "The flext attribute editor lets you query or change attribute values exposed by an external object. \" big \"\n\n" - "Local variable names ($-values) will only be saved as such for init values. " - "Alternatively, # can be used instead of $.\n" - "Ctrl-Button on a text field will open an editor window where text can be entered more comfortably.\n" - "\"\n" - "$id.hw.text configure -state disabled\n" - "}\n" - ); - sys_vgui( - "proc flext_copyval {dst src} {\n" - "global $src $dst\n" - "set $dst [expr $$src]\n" - "}\n" - - "proc flext_textcopy {id idtxt var} {\n" - "global $var\n" - "set txt [eval $idtxt get 0.0 end]\n" - // strip newline characters - "set tmp {}\n" - "foreach t $txt { lappend tmp [string trim $t] }\n" - "set $var $tmp\n" - "destroy $id\n" - "}\n" - ); - sys_vgui( - "proc flext_textzoom {id var title attr edit} {\n" - "global $var\n" - "toplevel $id.w\n" - "wm title $id.w [concat $title \" @\" $attr]\n" -// "wm iconname $w \"text\"\n" -// "positionWindow $id.w\n" - - "frame $id.w.buttons\n" - "pack $id.w.buttons -side bottom -fill x -pady 2m\n" - - "text $id.w.text -relief sunken -bd 2 -yscrollcommand \"$id.w.scroll set\" -setgrid 1 -width 80 -height 20\n" - "scrollbar $id.w.scroll -command \"$id.w.text yview\"\n" - "pack $id.w.scroll -side right -fill y\n" - "pack $id.w.text -expand yes -fill both\n" - - // insert text with newlines - "set txt [split [expr $$var] ,]\n" - "set lines [llength $txt]\n" - "for {set ix 0} {$ix < ($lines-1)} {incr ix} {\n" - "$id.w.text insert end [string trim [lindex $txt $ix] ]\n" - "$id.w.text insert end \" ,\\n\"\n" - "}\n" - "$id.w.text insert end [string trim [lindex $txt end] ]\n" - - "$id.w.text mark set insert 0.0\n" - - "if { $edit != 0 } then {\n" - "button $id.w.buttons.ok -text OK -command \"flext_textcopy $id.w $id.w.text $var\"\n" - "pack $id.w.buttons.ok -side left -expand 1\n" -// "bind $id.w {} \"flext_textcopy $id.w $id.w.text $var\"\n" - "} " - "else { $id.w.text configure -state disabled }\n" - - "button $id.w.buttons.cancel -text Cancel -command \"destroy $id.w\"\n" - "pack $id.w.buttons.cancel -side left -expand 1\n" - "bind $id.w {} \"destroy $id.w\"\n" - "}\n" - ); - sys_vgui( - "proc pdtk_flext_dialog {id title attrlist} {\n" - "set vid [string trimleft $id .]\n" - "set alen [expr [llength $attrlist] / 6 ]\n" - - "toplevel $id\n" - "wm title $id $title\n" - "wm protocol $id WM_DELETE_WINDOW [concat flext_cancel $id]\n" - - "frame $id.frame\n" - "set row 0\n" - - // set grow parameters - "grid columnconfigure $id.frame 0 -weight 1\n" // label - "grid columnconfigure $id.frame {1 4} -weight 3\n" // value entry - "grid columnconfigure $id.frame {2 3} -weight 0\n" // copy buttons - "grid columnconfigure $id.frame 5 -weight 1\n" // apply button - "grid columnconfigure $id.frame {6 7 8} -weight 0\n" // radio buttons - - "grid rowconfigure $id.frame {0 1} -weight 0\n" - - // set column labels - "label $id.frame.label -text {attribute} -font {Helvetica 9 bold}\n" - "label $id.frame.init -text {initial value} -font {Helvetica 9 bold}\n" - "label $id.frame.copy -text {copy} -font {Helvetica 9 bold}\n" - "label $id.frame.val -text {current value} -font {Helvetica 9 bold}\n" - "label $id.frame.apply -text {} -font {Helvetica 9 bold}\n" // why must this be empty? - "foreach {i txt} {0 {don't\rsave} 1 {do\rinit} 2 {always\rsave} } {\n" - "label $id.frame.b$i -text $txt -font {Helvetica 7 bold}\n" - "}\n" - - "grid config $id.frame.label -column 0 -row $row \n" - "grid config $id.frame.init -column 1 -row $row \n" - "grid config $id.frame.copy -column 2 -columnspan 2 -row $row \n" - "grid config $id.frame.val -column 4 -row $row \n" - "grid config $id.frame.apply -column 5 -row $row \n" - "foreach i {0 1 2} { grid config $id.frame.b$i -column [expr $i + 6] -row $row }\n" - "incr row\n" - - // Separator - "frame $id.frame.sep -relief ridge -bd 1 -height 2\n" - "grid config $id.frame.sep -column 0 -columnspan 9 -row $row -pady 2 -sticky {snew}\n" - "incr row\n" - ); - sys_vgui( - "set ix 1\n" - "foreach {an av ai atp asv afl} $attrlist {\n" - "grid rowconfigure $id.frame $row -weight 1\n" - - // get attribute name - "set var_attr_name [concat [concat var_name_$ix]_$vid ]\n" - "global $var_attr_name\n" - "set $var_attr_name $an\n" - - // get attribute init value (list) - "set var_attr_init [concat [concat var_init_$ix]_$vid ]\n" - "global $var_attr_init\n" - "set $var_attr_init $ai\n" - - // get attribute value (list) - "set var_attr_val [concat [concat var_val_$ix]_$vid ]\n" - "global $var_attr_val\n" - "set $var_attr_val $av\n" - - // get save flag - "set var_attr_save [concat [concat var_save_$ix]_$vid ]\n" - "global $var_attr_save\n" - "set $var_attr_save $asv\n" - - // get type flag - "set var_attr_type [concat [concat var_type_$ix]_$vid ]\n" - "global $var_attr_type\n" - "set $var_attr_type $afl\n" - - // add dialog elements to window - - // attribute label - "label $id.frame.label-$ix -text \"$an :\" -font {Helvetica 8 bold}\n" - "grid config $id.frame.label-$ix -column 0 -row $row -padx 5 -sticky {e}\n" - ); - sys_vgui( - "if { $afl != 0 } {\n" - // attribute is puttable - - // entry field for initial value - // entry field for current value - - // choose entry field type - "switch $atp {\n" - "0 - 1 {\n" // int or float - "entry $id.frame.init-$ix -textvariable $var_attr_init" ST_DISABLED "\n" - "entry $id.frame.val-$ix -textvariable $var_attr_val\n" - "}\n" - "2 {\n" // boolean - "checkbutton $id.frame.init-$ix -variable $var_attr_init" ST_DISABLED "\n" - "checkbutton $id.frame.val-$ix -variable $var_attr_val\n" - "}\n" - "3 {\n" // symbol - "entry $id.frame.init-$ix -textvariable $var_attr_init" ST_DISABLED "\n" - "entry $id.frame.val-$ix -textvariable $var_attr_val\n" - "}\n" - "4 - 5 {\n" // list or unknown - "entry $id.frame.init-$ix -textvariable $var_attr_init" ST_DISABLED "\n" - "bind $id.frame.init-$ix {} \" flext_textzoom $id.frame.init-$ix $var_attr_init { $title } $an 1\"\n" - "entry $id.frame.val-$ix -textvariable $var_attr_val\n" - "bind $id.frame.val-$ix {} \" flext_textzoom $id.frame.val-$ix $var_attr_val { $title } $an 1\"\n" - "}\n" - "}\n" - - "grid config $id.frame.init-$ix -column 1 -row $row -padx 5 -sticky {ew}\n" - "grid config $id.frame.val-$ix -column 4 -row $row -padx 5 -sticky {ew}\n" - - // copy buttons - "button $id.frame.b2i-$ix -text {<-} -height 1 -command \" flext_copyval $var_attr_init $var_attr_val \"" ST_DISABLED "\n" - "grid config $id.frame.b2i-$ix -column 2 -row $row -sticky {ew}\n" - "button $id.frame.b2c-$ix -text {->} -height 1 -command \" flext_copyval $var_attr_val $var_attr_init \"\n" - "grid config $id.frame.b2c-$ix -column 3 -row $row -sticky {ew}\n" - - // apply button - "button $id.frame.apply-$ix -text {Apply} -height 1 -command \" flext_apply $id $ix \"\n" - "grid config $id.frame.apply-$ix -column 5 -row $row -sticky {ew}\n" - - // radiobuttons - "foreach {i c} {0 black 1 blue 2 red} {\n" - "radiobutton $id.frame.b$i-$ix -value $i -foreground $c -variable $var_attr_save" ST_DISABLED "\n" - "grid config $id.frame.b$i-$ix -column [expr $i + 6] -row $row\n" - "}\n" - ); - sys_vgui( - "} else {\n" - // attribute is gettable only - - // entry field for current value (read-only) - - // choose display field type - "switch $atp {\n" - "0 - 1 {\n" // int or float - "entry $id.frame.val-$ix -textvariable $var_attr_val -state disabled\n" - "}\n" - "2 {\n" // boolean - "checkbutton $id.frame.val-$ix -variable $var_attr_val -state disabled\n" - "}\n" - "3 {\n" // symbol - "entry $id.frame.val-$ix -textvariable $var_attr_val -state disabled\n" - "}\n" - "4 - 5 {\n" // list or unknown - "entry $id.frame.val-$ix -textvariable $var_attr_val -state disabled\n" - "bind $id.frame.val-$ix {} \" flext_textzoom $id.frame.val-$ix $var_attr_val { $title } $an 0\"\n" - "}\n" - "}\n" - -// "entry $id.fval.val-$ix -textvariable $var_attr_val -state disabled\n" - "grid config $id.frame.val-$ix -column 4 -row $row -padx 5 -sticky {ew}\n" - - "label $id.frame.readonly-$ix -text \"read-only\"\n" - "grid config $id.frame.readonly-$ix -column 6 -columnspan 3 -row $row -padx 5 -sticky {ew}\n" - "}\n" - - // increase counter - "incr ix\n" - "incr row\n" - "}\n" - - // empty space - "grid rowconfigure $id.frame $row -weight 1\n" - "frame $id.frame.dummy\n" - "grid config $id.frame.dummy -column 0 -columnspan 9 -row $row\n" - "incr row\n" - ); - sys_vgui( - // Separator - "frame $id.sep2 -relief ridge -bd 1 -height 2\n" - - // Buttons - "frame $id.buttonframe\n" - - "button $id.buttonframe.cancel -text {Leave} -width 20 -command \" flext_cancel $id \"\n" - "button $id.buttonframe.apply -text {Apply all} -width 20 -command \" flext_applyall $id $alen \"\n" - "button $id.buttonframe.ok -text {Apply & Leave} -width 20 -command \" flext_ok $id $alen \"\n" - "button $id.buttonframe.help -text {Help} -width 10 -command \" flext_help $id \"\n" - - "grid columnconfigure $id.buttonframe {0 1 2 3} -weight 1\n" - "grid config $id.buttonframe.cancel $id.buttonframe.apply $id.buttonframe.ok $id.buttonframe.help -padx 2 -sticky {snew}\n" - -// "scrollbar $id.scroll -command \"$id.frame yview\"\n" - - "pack $id.buttonframe $id.sep2 -pady 2 -expand 0 -side bottom -fill x\n" -// "pack $id.scroll -side right -fill y\n" - "pack $id.frame -expand 1 -side top -fill both\n" - - // Key bindings - "bind $id {} \" flext_cancel $id \"\n" - "bind $id {} \" flext_ok $id $alen \"\n" - "bind $id {} \" flext_applyall $id $alen \"\n" - "}\n" - ); -} - -#endif - - -#ifdef __FLEXT_WIDGETBEHAVIOR -static t_widgetbehavior widgetbehavior; -#endif - -void flext_base::SetGfx(t_classid c) -{ - t_class *cl = getClass(c); - // widgetbehavior struct MUST be resident... (static is just ok here) - -#ifdef __FLEXT_WIDGETBEHAVIOR -#ifndef __FLEXT_CLONEWIDGET - widgetbehavior.w_visfn = cl->c_wb->w_visfn; - widgetbehavior.w_selectfn = cl->c_wb->w_selectfn; - widgetbehavior.w_getrectfn = cl->c_wb->w_getrectfn; - widgetbehavior.w_displacefn = cl->c_wb->w_displacefn; - widgetbehavior.w_activatefn = cl->c_wb->w_activatefn; - widgetbehavior.w_deletefn = cl->c_wb->w_deletefn; - widgetbehavior.w_selectfn = cl->c_wb->w_selectfn; - widgetbehavior.w_clickfn = cl->c_wb->w_clickfn; -#else - widgetbehavior.w_visfn = text_widgetbehavior.w_visfn; - widgetbehavior.w_selectfn = text_widgetbehavior.w_selectfn; - widgetbehavior.w_getrectfn = text_widgetbehavior.w_getrectfn; - widgetbehavior.w_displacefn = text_widgetbehavior.w_displacefn; - widgetbehavior.w_activatefn = text_widgetbehavior.w_activatefn; - widgetbehavior.w_deletefn = text_widgetbehavior.w_deletefn; - widgetbehavior.w_selectfn = text_widgetbehavior.w_selectfn; - widgetbehavior.w_clickfn = text_widgetbehavior.w_clickfn; -#endif -#endif - -#ifdef FLEXT_ATTRHIDE - -#ifndef __FLEXT_CLONEWIDGET - ori_vis = widgetbehavior.w_visfn; - ori_select = widgetbehavior.w_selectfn; -#endif - widgetbehavior.w_visfn = (t_visfn)cb_GfxVis; - widgetbehavior.w_selectfn = (t_selectfn)cb_GfxSelect; - -#if PD_MINOR_VERSION >= 37 - class_setsavefn(cl,(t_savefn)cb_GfxSave); -#else - widgetbehavior.w_savefn = (t_savefn)cb_GfxSave; -#endif - -#endif // FLEXT_ATTRHIDE - - -#ifndef FLEXT_NOATTREDIT - -#if PD_MINOR_VERSION >= 37 - class_setpropertiesfn(cl,(t_propertiesfn)cb_GfxProperties); -#else - widgetbehavior.w_propertiesfn = (t_propertiesfn)cb_GfxProperties; -#endif - - tclscript(); -#endif // FLEXT_NOATTREDIT - -#ifdef __FLEXT_WIDGETBEHAVIOR - class_setwidget(cl, &widgetbehavior); -#endif -} - - -#ifndef FLEXT_NOATTREDIT - -static size_t escapeit(char *dst,size_t maxlen,const char *src) -{ - char *d; - for(d = dst; *src && (d-dst) < (int)maxlen; ++src) { - if(*src == '%') - *(d++) = '%',*(d++) = '%'; - else - *(d++) = *src; - } - *d = 0; - return d-dst; -} - -void flext_base::cb_GfxProperties(flext_hdr *c, t_glist *) -{ - flext_base *th = thisObject(c); - char buf[1000]; - - // beginning of proc - sys_vgui("proc pdtk_flext_dialog_%p {title} {\n",th); - - sys_vgui("pdtk_flext_dialog $title {\n"); - - // add title - t_text *x = (t_text *)c; - FLEXT_ASSERT(x->te_binbuf); - - int argc = binbuf_getnatom(x->te_binbuf); - t_atom *argv = binbuf_getvec(x->te_binbuf); - - PrintList(argc,argv,buf,sizeof(buf)); - sys_vgui("%s } {\n",buf); - - AtomListStatic<32> la; - th->ListAttrib(la); - int cnt = la.Count(); - - for(int i = 0; i < cnt; ++i) { - const t_symbol *sym = GetSymbol(la[i]); - - // get attribute - AttrItem *gattr = th->FindAttrib(sym,true); - // get puttable attribute - AttrItem *pattr = gattr?gattr->Counterpart():th->FindAttrib(sym,false); - - // get flags - int sv; - const AtomList *initdata; - const AttrData *a = th->attrdata->find(sym); -// AttrDataCont::iterator it = th->attrdata->find(sym); -// if(it == th->attrdata->end()) - if(!a) - sv = 0,initdata = NULL; - else { -// const AttrData &a = *it.data(); - if(a->IsSaved()) - sv = 2; - else if(a->IsInit()) - sv = 1; - else - sv = 0; - initdata = a->IsInitValue()?&a->GetInitValue():NULL; - } - - // get attribute type - int tp; - bool list; - switch((gattr?gattr:pattr)->argtp) { - case a_int: tp = 0; list = false; break; - case a_float: tp = 1; list = false; break; - case a_bool: tp = 2; list = false; break; - case a_symbol: tp = 3; list = true; break; - case a_list: - case a_LIST: tp = 4; list = true; break; - default: - tp = 5; list = true; - FLEXT_ASSERT(false); - } - - sys_vgui(const_cast(list?"%s {":"%s "),GetString(sym)); - - AtomListStatic<32> lv; - if(gattr) { // gettable attribute is present - // Retrieve attribute value - th->GetAttrib(sym,gattr,lv); - - char *b = buf; *b = 0; - for(int i = 0; i < lv.Count(); ++i) { - char tmp[100]; - PrintAtom(lv[i],tmp,sizeof tmp); - b += escapeit(b,sizeof(buf)+buf-b,tmp); - if(i < lv.Count()-1) { *(b++) = ' '; *b = 0; } - } - sys_vgui("%s",buf); - } - else - sys_vgui("{}"); - - sys_vgui(const_cast(list?"} {":" ")); - - if(pattr) { - // if there is initialization data take this, otherwise take the current data - const AtomList &lp = initdata?*initdata:static_cast(lv); - - char *b = buf; *b = 0; - for(int i = 0; i < lp.Count(); ++i) { - char tmp[256]; - PrintAtom(lp[i],tmp,sizeof(tmp)); - b += escapeit(b,sizeof(buf)+buf-b,tmp); - if(i < lp.Count()-1) { *(b++) = ' '; *b = 0; } - } - sys_vgui("%s",buf); - } - else - sys_vgui("{}"); - - - sys_vgui(const_cast(list?"} %i %i %i \n":" %i %i %i \n"),tp,sv,pattr?(pattr->BothExist()?2:1):0); - } - - sys_vgui(" } }\n"); // end of proc - - STD::sprintf(buf,"pdtk_flext_dialog_%p %%s\n",th); - gfxstub_new((t_pd *)th->thisHdr(), th->thisHdr(),buf); - - //! \todo delete proc in TCL space -} - -bool flext_base::cb_AttrDialog(flext_base *th,int argc,const t_atom *argv) -{ - for(int i = 0; i < argc; ) { - FLEXT_ASSERT(IsSymbol(argv[i])); - - // get name - const t_symbol *aname = GetSymbol(argv[i]); - i++; - - // get current value - FLEXT_ASSERT(CanbeInt(argv[i])); - int ccnt,coffs; - ccnt = GetAInt(argv[i]); - coffs = ++i; - i += ccnt; - - // get init value - FLEXT_ASSERT(CanbeInt(argv[i])); - int icnt,ioffs; - icnt = GetAInt(argv[i]); - ioffs = ++i; - i += icnt; - - FLEXT_ASSERT(i < argc); - int sv = GetAInt(argv[i]); - ++i; - - // find puttable attribute - AttrItem *attr = th->FindAttrib(aname,false); - if(attr) { - bool ret = th->SetAttrib(aname,attr,ccnt,argv+coffs); - FLEXT_ASSERT(ret); - - AttrData *a = th->attrdata->find(aname); - if(sv >= 1) { - // if data not present create it - if(!a) { - AttrData *old = th->attrdata->insert(aname,a = new AttrData); - FLEXT_ASSERT(!old); - } - - a->SetSave(sv == 2); - a->SetInit(true); - a->SetInitValue(icnt,argv+ioffs); - } - else { - if(a) { - // if data is present reset flags - a->SetSave(false); - a->SetInit(false); - - // let init data as is - } - } - } - else { - post("%s - Attribute %s can't be set",th->thisName(),GetString(aname)); - } - } - return true; -} - -#endif // FLEXT_NOATTREDIT - - -#ifdef FLEXT_ATTRHIDE - -static void BinbufAdd(t_binbuf *b,const t_atom &at,bool transdoll) -{ - if(transdoll && at.a_type == A_DOLLAR) { - char tbuf[MAXPDSTRING]; - sprintf(tbuf, "$%d", at.a_w.w_index); - binbuf_addv(b,"s",flext::MakeSymbol(tbuf)); - } - else if(transdoll && at.a_type == A_DOLLSYM) { - char tbuf[MAXPDSTRING]; - sprintf(tbuf, "$%s", at.a_w.w_symbol->s_name); - binbuf_addv(b,"s",flext::MakeSymbol(tbuf)); - } - else - binbuf_add(b,1,const_cast(&at)); -} - -void flext_base::BinbufArgs(t_binbuf *b,t_binbuf *args,bool withname,bool transdoll) -{ - int argc = binbuf_getnatom(args); - t_atom *argv = binbuf_getvec(args); - int i,cnt = CheckAttrib(argc,argv); - // process the creation arguments - for(i = withname?0:1; i < cnt; ++i) BinbufAdd(b,argv[i],transdoll); -} - -void flext_base::BinbufAttr(t_binbuf *b,bool transdoll) -{ - // process the attributes - AtomListStatic<32> la,lv; - ListAttrib(la); - int i,cnt = la.Count(); - - for(i = 0; i < cnt; ++i) { - const t_symbol *sym = GetSymbol(la[i]); - const AtomList *lref = NULL; - - AttrData *a = attrdata->find(sym); - if(a) { - if(a->IsInit() && a->IsInitValue()) { - lref = &a->GetInitValue(); - -#if 0 ///////////////////////////////////////////////////////////// - // check for $-parameters - lv = lref->Count(); - for(int j = 0; j < lref->Count(); ++j) { - const char *s = IsSymbol((*lref)[j])?GetString((*lref)[j]):NULL; - if(s && s[0] == '$') { // TODO: More refined checking? - // prepend a "\" - char tmp[256]; *tmp = '\\'; - strcpy(tmp+1,s); - SetString(lv[j],tmp); - } - else - lv[i] = (*lref)[j]; - } - - lref = &lv; -#endif ///////////////////////////////////////////////////////////// - } -// else if(a.IsSaved()) { - else if(a->IsSaved()) { - AttrItem *attr = FindAttrib(sym,true); - - // attribute must be gettable (so that the data can be retrieved) and puttable (so that the data can be inited) - if(attr && attr->BothExist()) { - GetAttrib(sym,attr,lv); - lref = &lv; - } - } - } - - if(lref) { - char attrname[256]; *attrname= '@'; - // store name - strcpy(attrname+1,GetString(sym)); - binbuf_addv(b,"s",MakeSymbol(attrname)); - - // store value - for(int j = 0; j < lref->Count(); ++j) BinbufAdd(b,(*lref)[j],transdoll); - } - } -} - -//! Strip the attributes off the object command line -void flext_base::cb_GfxVis(flext_hdr *c, t_glist *gl, int vis) -{ - if(!gl->gl_isgraph || gl->gl_havewindow) { - // show object if it's not inside a GOP - - flext_base *th = thisObject(c); - t_text *x = (t_text *)c; - FLEXT_ASSERT(x->te_binbuf); - - t_binbuf *b = binbuf_new(); - th->BinbufArgs(b,x->te_binbuf,true,false); - - // delete old object box text - binbuf_free(x->te_binbuf); - // set new one - x->te_binbuf = b; - - t_rtext *rt = glist_findrtext(gl,x); - rtext_retext(rt); - - // now display the changed text with the normal drawing function - #ifdef __FLEXT_CLONEWIDGET - text_widgetbehavior.w_visfn((t_gobj *)c,gl,vis); - #else - ori_vis((t_gobj *)c,gl,vis); - #endif - } - // else don't show -} - -void flext_base::cb_GfxSelect(flext_hdr *c,t_glist *gl,int state) -{ - t_text *x = (t_text *)c; - flext_base *th = thisObject(c); - - if(!gl->gl_isgraph || gl->gl_havewindow) { - if(state || !gl->gl_editor->e_textdirty) { - // change text only on selection - // OR if text has _not_ been changed - // -> since object will not be recreated we have to get rid - // of the attribute text - - FLEXT_ASSERT(x->te_binbuf); - - t_binbuf *b = binbuf_new(); - th->BinbufArgs(b,x->te_binbuf,true,false); - if(state) th->BinbufAttr(b,false); - - // delete old object box text - binbuf_free(x->te_binbuf); - // set new one - x->te_binbuf = b; - - t_rtext *rt = glist_findrtext(gl,x); - rtext_retext(rt); - - // fix lines - canvas_fixlinesfor(gl,x); - } - - // call original function - #ifdef __FLEXT_CLONEWIDGET - text_widgetbehavior.w_selectfn((t_gobj *)c,gl,state); - #else - ori_select((t_gobj *)c,gl,state); - #endif - } -} - -void flext_base::cb_GfxSave(flext_hdr *c, t_binbuf *b) -{ - flext_base *th = thisObject(c); - t_text *t = (t_text *)c; - binbuf_addv(b, "ssiis", gensym("#X"),gensym("obj"), t->te_xpix, t->te_ypix,MakeSymbol(th->thisName())); - - // process the object arguments - th->BinbufArgs(b,t->te_binbuf,false,true); - // process the attributes - th->BinbufAttr(b,true); - // add end sign - binbuf_addv(b, ";"); -} - -#endif // FLEXT_ATTRHIDE - -#endif // FLEXT_SYS_PD diff --git a/externals/grill/flext/source/flbase.cpp b/externals/grill/flext/source/flbase.cpp deleted file mode 100644 index 404588d9..00000000 --- a/externals/grill/flext/source/flbase.cpp +++ /dev/null @@ -1,204 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flbase.cpp - \brief Implementation of the internal flext base classes. - - \remark This is all derived from GEM by Mark Danks -*/ - -#include "flext.h" -#include "flinternal.h" -#include -#include -#include - -#if FLEXT_SYS == FLEXT_SYS_PD -#ifdef _MSC_VER - #pragma warning (push) - #pragma warning (disable:4091) -#endif -// for canvas_realizedollar (should be noon-critical) -#include -#ifdef _MSC_VER - #pragma warning (pop) -#endif -#endif - - -///////////////////////////////////////////////////////// -// -// flext_obj -// -///////////////////////////////////////////////////////// - -flext_hdr *flext_obj::m_holder = NULL; -const t_symbol *flext_obj::m_holdname = NULL; -flext_class *flext_obj::m_holdclass = NULL; -int flext_obj::m_holdaargc = 0; -const t_atom *flext_obj::m_holdaargv = NULL; -//bool flext_obj::process_attributes = false; - -bool flext_obj::initing = false; -bool flext_obj::exiting = false; -bool flext_obj::init_ok; - -//void flext_obj::ProcessAttributes(bool attr) { process_attributes = attr; } - -#if FLEXT_SYS == FLEXT_SYS_MAX -static const t_symbol *sym__shP = NULL; -#endif - -///////////////////////////////////////////////////////// -// Constructor -// -///////////////////////////////////////////////////////// -flext_obj :: FLEXT_CLASSDEF(flext_obj)() - : x_obj(m_holder) - , clss(m_holdclass) - , m_name(m_holdname) -{ -#if FLEXT_SYS == FLEXT_SYS_PD - m_canvas = canvas_getcurrent(); -#elif FLEXT_SYS == FLEXT_SYS_MAX - m_canvas = (t_patcher *)sym__shP->s_thing; - x_obj->curinlet = 0; -#endif -} - -///////////////////////////////////////////////////////// -// Destructor -// -///////////////////////////////////////////////////////// -flext_obj :: ~FLEXT_CLASSDEF(flext_obj)() -{ - x_obj = NULL; -} - -void flext_obj::__setup__(t_classid) -{ -#if FLEXT_SYS == FLEXT_SYS_MAX - sym__shP = MakeSymbol("#P"); -#endif - flext::Setup(); -} - -bool flext_obj::Init() { return true; } -bool flext_obj::Finalize() { return true; } -void flext_obj::Exit() {} - -void flext_obj::DefineHelp(t_classid c,const char *ref,const char *dir,bool addtilde) -{ -#if FLEXT_SYS == FLEXT_SYS_PD - char tmp[256]; - if(dir && *dir) { - strcpy(tmp,dir); - char *last = tmp+strlen(tmp)-1; - if(*last != '/') strcat(last,"/"); - strcat(last,ref); - } - else - strcpy(tmp,ref); - if(addtilde) strcat(tmp,"~"); - - ::class_sethelpsymbol(getClass(c),gensym(const_cast(tmp))); -#else - // no solution for Max/MSP yet -#endif -} - -bool flext_obj::GetParamSym(t_atom &dst,const t_symbol *sym,t_canvas *c) -{ -#if FLEXT_SYS == FLEXT_SYS_PD && defined(PD_MINOR_VERSION) && PD_MINOR_VERSION >= 37 - if(!c) c = canvas_getcurrent(); - - const char *s = GetString(sym); - if((s[0] == '$' || s[0] == '#') && isdigit(s[1])) { - const t_symbol *res; - // patcher parameter detected... get value! - if(s[0] != '$') { - char tmp[MAXPDSTRING]; - strcpy(tmp,s); - tmp[0] = '$'; - res = canvas_realizedollar(c,const_cast(MakeSymbol(tmp))); - } - else - res = canvas_realizedollar(c,const_cast(sym)); - - // check for number - const char *c = GetString(res); - while(*c && (isdigit(*c) || *c == '.')) ++c; - - if(!*c) - SetFloat(dst,(float)atof(GetString(res))); - else - SetSymbol(dst,res); - return true; - } - else -#else - #pragma message("Not implemented") -#endif - SetSymbol(dst,sym); - return true; -} - - -#if FLEXT_SYS == FLEXT_SYS_PD -// this declaration is missing in m_pd.h (0.37-0 and -1) -// but it is there in 0.37-2 (but how to tell which micro-version?) -extern "C" -#ifdef _MSC_VER -__declspec(dllimport) -#endif -void canvas_getargs(int *argcp, t_atom **argvp); -#endif - - -void flext_obj::GetCanvasArgs(AtomList &args) const -{ -#if FLEXT_SYS == FLEXT_SYS_PD - int argc; - t_atom *argv; - canvas_getargs(&argc,&argv); - args(argc,argv); -#else - #pragma message("Not implemented") - args(0); -#endif -} - - -#if FLEXT_SYS == FLEXT_SYS_MAX -static short patcher_myvol(t_patcher *x) -{ - t_box *w; - if(x->p_vol) - return x->p_vol; - else if((w = (t_box *)x->p_vnewobj) != NULL) - return patcher_myvol(w->b_patcher); - else - return 0; -} -#endif - -void flext_obj::GetCanvasDir(char *buf,size_t bufsz) const -{ -#if FLEXT_SYS == FLEXT_SYS_PD - const char *c = GetString(canvas_getdir(thisCanvas())); - strncpy(buf,c,bufsz); -#elif FLEXT_SYS == FLEXT_SYS_MAX - short path = patcher_myvol(thisCanvas()); - // \TODO dangerous!! no check for path length (got to be long enough... like 1024 chars) - path_topathname(path,NULL,buf); -#else -#error Not implemented -#endif -} diff --git a/externals/grill/flext/source/flbase.h b/externals/grill/flext/source/flbase.h deleted file mode 100644 index 640a4688..00000000 --- a/externals/grill/flext/source/flbase.h +++ /dev/null @@ -1,575 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flbase.h - \brief Internal flext base classes - - \remark This uses some ideas of GEM invented by Mark Danks -*/ - -#ifndef __FLEXT_BASE_H -#define __FLEXT_BASE_H - -#include "flstdc.h" -#include "flsupport.h" - - -class FLEXT_SHARE FLEXT_CLASSDEF(flext_obj); -typedef class FLEXT_CLASSDEF(flext_obj) flext_obj; - -// ---------------------------------------------------------------------------- -/*! \brief The obligatory PD or Max/MSP object header - \internal - - This is in a separate struct to assure that obj is the very first thing. - If it were the first thing in flext_obj, then there could be problems with - the virtual table of the C++ class. -*/ -// ---------------------------------------------------------------------------- - -struct FLEXT_SHARE flext_hdr -{ - /*! \defgroup FLEXT_OBJHEADER Actual PD or Max/MSP object - \internal - @{ - */ - - /*! \brief The obligatory object header - \note MUST reside at memory offset 0 (no virtual table possible) - */ - t_sigobj obj; - -#if FLEXT_SYS == FLEXT_SYS_PD - //! PD only: float signal holder for pd - float defsig; -#endif - -#if FLEXT_SYS == FLEXT_SYS_MAX - //! Max/MSP only: current inlet used by proxy objects - long curinlet; -#endif - - /*! \brief This points to the actual polymorphic C++ class - */ - FLEXT_CLASSDEF(flext_obj) *data; - - //! @} FLEXT_OBJHEADER -}; - - -class flext_class; - -// ---------------------------------------------------------------------------- -/*! \brief The mother of base classes for all flext external objects - - Each extern which is written in C++ needs to use the #defines at the - end of this header file. - - The define - - FLEXT_HEADER(NEW_CLASS, PARENT_CLASS) - - should be somewhere in your header file. - One of the defines like - - FLEXT_NEW(NEW_CLASS) - or - FLEXT_NEW_2(NEW_CLASS, float, float) - - should be the first thing in your implementation file. - NEW_CLASS is the name of your class and PARENT_CLASS is the - parent of your class. -*/ -// ---------------------------------------------------------------------------- - -class FLEXT_SHARE FLEXT_CLASSDEF(flext_obj): - public flext -{ - public: - -// --- creation ------------------------------------------------------- - - /*! \defgroup FLEXT_OBJ_CREATION Object creation/destruction functionality - @{ - */ - - //! Constructor - FLEXT_CLASSDEF(flext_obj)(); - - //! Destructor - virtual ~FLEXT_CLASSDEF(flext_obj)(); - - /*! \brief Signal a construction problem - \note This should only be used in the constructor. Object creation will be aborted. - */ - static void InitProblem() { init_ok = false; } - - /*! \brief Enable/disable attribute procession (default = false) - \note Use that in the static class setup function (also library setup function) - */ -// static void ProcessAttributes(bool attr); //{ process_attributes = attr; } - - //! Virtual function called at creation time (but after the constructor) - // this also guarantees that there are no instances of flext_obj - virtual bool Init(); - - //! Virtual function called after Init() has succeeded - virtual bool Finalize(); - - //! Virtual function called at destruction (before the destructor) - virtual void Exit(); - - //! @} FLEXT_OBJ_CREATION - -// --- info ------------------------------------------------------- - - /*! \defgroup FLEXT_OBJ_INFO Get various information - @{ - */ - - //! Get the object's canvas - t_canvas *thisCanvas() const { return m_canvas; } - - //! Get the PD or Max/MSP object - t_sigobj *thisHdr() { FLEXT_ASSERT(x_obj); return &x_obj->obj; } - const t_sigobj *thisHdr() const { FLEXT_ASSERT(x_obj); return &x_obj->obj; } - //! Get the class name (as a string) - const char *thisName() const { return GetString(m_name); } - //! Get the class name (as a symbol) - const t_symbol *thisNameSym() const { return m_name; } - //! Get the class pointer - t_class *thisClass() const; - - //! Typedef for unique class identifier - typedef flext_class *t_classid; - - //! Get unique id for object class - t_classid thisClassId() const { return clss; } - - //! Get class pointer from class id - static t_class *getClass(t_classid id); - - static bool HasAttributes(t_classid id); - static bool IsDSP(t_classid id); - static bool HasDSPIn(t_classid id); - static bool IsLib(t_classid id); - - bool HasAttributes() const; - bool IsLib() const; - bool IsDSP() const; - bool HasDSPIn() const; - -#if FLEXT_SYS == FLEXT_SYS_MAX - // under Max/MSP it could be necessary to activate DSP also for message objects - // namely for those coexisting with DSP objects in a library - bool NeedDSP() const; -#endif - - //! @} FLEXT_OBJ_INFO - -// --- help ------------------------------------------------------- - - /*! \defgroup FLEXT_OBJ_HELP Help/assistance functionality - \remark This is still PD only - @{ - */ - - /*! Define the help reference symbol for a class - \internal - */ - static void DefineHelp(t_classid c,const char *ref,const char *dir = NULL,bool addtilde = false); - - //! Define the help reference symbol for a class - void DefineHelp(const char *ref,const char *dir = NULL,bool addtilde = false) { DefineHelp(thisClassId(),ref,dir,addtilde); } - - //! @} FLEXT_OBJ_HELP - - -// --- internal stuff ------------------------------------------------------- - - /*! \defgroup FLEXT_OBJ_INTERNAL Internal stuff - \internal - @{ - */ - - protected: - - //! backpointer to object header - mutable flext_hdr *x_obj; - - //! pointer to flext class definition - flext_class *clss; - -// static bool process_attributes; - - private: - - //! The canvas (patcher) that the object is in - mutable t_canvas *m_canvas; - - //! Flag for successful object construction - static bool init_ok; - - // flags for init and exit procedure; - static bool initing; - static bool exiting; - - public: - - //! Creation callback - static void __setup__(t_classid); - - /*! \brief This is a temporary holder - \warning don't touch it! - */ - static flext_hdr *m_holder; - //! Hold object's class during construction - static flext_class *m_holdclass; - //! Hold object's name during construction - static const t_symbol *m_holdname; - - //! Holders for attribute procession flag - static int m_holdaargc; - static const t_atom *m_holdaargv; - - /*! The object's name in the patcher - \note objects of the same class can have various alias names! - */ - const t_symbol *m_name; - - /*! Return true if in object initialization phase - true when in constructor or Init, false when in Finalize - */ - static bool Initing() { return initing; } - - //! Return true if in object destruction phase (Exit or destructor) - static bool Exiting() { return exiting; } - - // Definitions for library objects - static void lib_init(const char *name,void setupfun()); - static void obj_add(bool lib,bool dsp,bool noi,bool attr,const char *idname,const char *names,void setupfun(t_classid),FLEXT_CLASSDEF(flext_obj) *(*newfun)(int,t_atom *),void (*freefun)(flext_hdr *),int argtp1,...); -#if FLEXT_SYS == FLEXT_SYS_MAX - static flext_hdr *obj_new(const t_symbol *s,short argc,t_atom *argv); -#else - static flext_hdr *obj_new(const t_symbol *s,int argc,t_atom *argv); -#endif - static void obj_free(flext_hdr *o); - - //! Convert $0 or #0 symbol into appropriate value - static bool GetParamSym(t_atom &dst,const t_symbol *s,t_canvas *c); - - //! Get the canvas arguments - void GetCanvasArgs(AtomList &args) const; - - //! Get the canvas/patcher directory - void GetCanvasDir(char *buf,size_t bufsz) const; - - //! @} FLEXT_OBJ_INTERNAL -}; - - -// max. 4 creation args (see the following macros) -#define FLEXT_MAXNEWARGS 4 - -// max. 5 method args (see the following macros) -#define FLEXT_MAXMETHARGS 5 - -// prefixes for the macro generated handler functions -#define FLEXT_CALL_PRE(F) flext_c_##F -#define FLEXT_THR_PRE(F) flext_t_##F -#define FLEXT_GET_PRE(F) flext_g_##F -#define FLEXT_SET_PRE(F) flext_s_##F - - -#ifndef FLEXT_ATTRIBUTES -/*! \brief Switch for global attribute processing - \note Should be set to 1 or 0 (or not be defined) - \ingroup FLEXT_DEFS -*/ -#define FLEXT_ATTRIBUTES \ -\ -0 - - -#elif FLEXT_ATTRIBUTES != 0 && FLEXT_ATTRIBUTES != 1 -#error "FLEXT_ATTRIBUTES must be 0 or 1" -#endif - -// ---------------------------------------- -// These should be used in the header -// ---------------------------------------- - - -#define FLEXT_REALHDR(NEW_CLASS, PARENT_CLASS) \ -public: \ -typedef NEW_CLASS thisType; \ -typedef PARENT_CLASS thisParent; \ -static FLEXT_CLASSDEF(flext_obj) *__init__(int argc,t_atom *argv); \ -static void __free__(flext_hdr *hdr) { \ - FLEXT_CLASSDEF(flext_obj) *mydata = hdr->data; delete mydata; \ - hdr->flext_hdr::~flext_hdr(); \ -} \ -static void __setup__(t_classid classid) { thisParent::__setup__(classid); } - - -#define FLEXT_REALHDR_S(NEW_CLASS, PARENT_CLASS,SETUPFUN) \ -public: \ -typedef NEW_CLASS thisType; \ -typedef PARENT_CLASS thisParent; \ -static FLEXT_CLASSDEF(flext_obj) *__init__(int argc,t_atom *argv); \ -static void __free__(flext_hdr *hdr) { \ - FLEXT_CLASSDEF(flext_obj) *mydata = hdr->data; delete mydata; \ - hdr->flext_hdr::~flext_hdr(); \ -} \ -static void __setup__(t_classid classid) { \ - thisParent::__setup__(classid); \ - thisType::SETUPFUN(classid); \ -} - -#define FLEXT_REALHDR_T(NEW_CLASS, PARENT_CLASS) \ -public: \ -typedef NEW_CLASS thisType; \ -typedef PARENT_CLASS thisParent; \ -typedef typename thisParent::t_classid t_classid; \ -static FLEXT_CLASSDEF(flext_obj) *__init__(int argc,t_atom *argv); \ -static void __free__(flext_hdr *hdr) { \ - FLEXT_CLASSDEF(flext_obj) *mydata = hdr->data; delete mydata; \ - hdr->flext_hdr::~flext_hdr(); \ -} \ -static void __setup__(t_classid classid) { thisParent::__setup__(classid); } - - -#define FLEXT_REALHDR_TS(NEW_CLASS, PARENT_CLASS,SETUPFUN) \ -public: \ -typedef NEW_CLASS thisType; \ -typedef PARENT_CLASS thisParent; \ -typedef typename thisParent::t_classid t_classid; \ -static FLEXT_CLASSDEF(flext_obj) *__init__(int argc,t_atom *argv); \ -static void __free__(flext_hdr *hdr) { \ - FLEXT_CLASSDEF(flext_obj) *mydata = hdr->data; delete mydata; \ - hdr->flext_hdr::~flext_hdr(); \ -} \ -static void __setup__(t_classid classid) { \ - thisParent::__setup__(classid); \ - thisType::SETUPFUN(classid); \ -} - - -// generate name of dsp/non-dsp setup function -#if FLEXT_SYS == FLEXT_SYS_PD || FLEXT_SYS == FLEXT_SYS_MAX - #define FLEXT_STPF_0(NAME) NAME##_setup - #define FLEXT_STPF_1(NAME) NAME##_tilde_setup -#else -#error Platform not supported -#endif - -#define FLEXT_STPF_(DSP) FLEXT_STPF_##DSP -#define FLEXT_STPF(NAME,DSP) FLEXT_STPF_(DSP)(NAME) - - -// -------------------------------------------------------------------------------------- - - -// used in library setup functions to register the individual objects in the library -#define REAL_SETUP(cl,DSP) extern void FLEXT_STPF(cl,DSP)(); FLEXT_STPF(cl,DSP)(); - -// specify that to define the library itself -#if FLEXT_SYS == FLEXT_SYS_PD -#define REAL_LIB_SETUP(NAME,SETUPFUN) extern "C" FLEXT_EXT void NAME##_setup() { flext_obj::lib_init(#NAME,SETUPFUN); } -#elif FLEXT_SYS == FLEXT_SYS_MAX -#define REAL_LIB_SETUP(NAME,SETUPFUN) extern "C" FLEXT_EXT int main() { flext_obj::lib_init(#NAME,SETUPFUN); return 0; } -#else -#error Platform not supported -#endif - - -// -------------------------------------------------- - - -#define FLEXT_EXP_0 extern "C" FLEXT_EXT -#define FLEXT_EXP_1 -#define FLEXT_EXP(LIB) FLEXT_EXP_##LIB - -#if FLEXT_SYS == FLEXT_SYS_PD -#define FLEXT_OBJ_SETUP_0(NEW_CLASS,DSP) -#elif FLEXT_SYS == FLEXT_SYS_MAX -#define FLEXT_OBJ_SETUP_0(NEW_CLASS,DSP) extern "C" FLEXT_EXT int main() { FLEXT_STPF(NEW_CLASS,DSP)(); return 0; } -#else -#error not implemented -#endif - -#define FLEXT_OBJ_SETUP_1(NEW_CLASS,DSP) - -#define FLEXT_OBJ_SETUP(NEW_CLASS,DSP,LIB) FLEXT_OBJ_SETUP_##LIB(NEW_CLASS,DSP) - - - -// ---------------------------------------- -// These definitions are used below -// ---------------------------------------- - -#if FLEXT_SYS == FLEXT_SYS_PD || FLEXT_SYS == FLEXT_SYS_MAX - // maybe that's not necessary - #define FLEXTTPN_NULL A_NULL - #if FLEXT_SYS == FLEXT_SYS_PD - #define FLEXTTPN_PTR A_POINTER - #else - #define FLEXTTPN_INT A_INT - #define FLEXTTPN_DEFINT A_DEFINT - #endif - #define FLEXTTPN_FLOAT A_FLOAT - #define FLEXTTPN_DEFFLOAT A_DEFFLOAT - #define FLEXTTPN_SYM A_SYMBOL - #define FLEXTTPN_DEFSYM A_DEFSYMBOL - #define FLEXTTPN_VAR A_GIMME -#else - #define FLEXTTPN_NULL 0 - #define FLEXTTPN_PTR 1 - #define FLEXTTPN_INT 2 - #define FLEXTTPN_FLOAT 3 - #define FLEXTTPN_SYM 4 - #define FLEXTTPN_VAR 5 - #define FLEXTTPN_DEFINT 6 - #define FLEXTTPN_DEFFLOAT 7 - #define FLEXTTPN_DEFSYM 8 -#endif - -// Shortcuts for PD/Max type arguments -#define FLEXTTYPE_void FLEXTTPN_NULL -#define CALLBTYPE_void void -#define FLEXTTYPE_float FLEXTTPN_FLOAT -#define FLEXTTYPE_float0 FLEXTTPN_DEFFLOAT -#define CALLBTYPE_float float -#define FLEXTTYPE_t_float FLEXTTPN_FLOAT -#define CALLBTYPE_t_float t_float - -#if FLEXT_SYS == FLEXT_SYS_PD -#define FLEXTTYPE_int FLEXTTPN_FLOAT -#define FLEXTTYPE_int0 FLEXTTPN_DEFFLOAT -#define CALLBTYPE_int float -#define FLEXTTYPE_bool FLEXTTPN_FLOAT -#define FLEXTTYPE_bool0 FLEXTTPN_DEFFLOAT -#define CALLBTYPE_bool float -#elif FLEXT_SYS == FLEXT_SYS_MAX -#define FLEXTTYPE_int FLEXTTPN_INT -#define FLEXTTYPE_int0 FLEXTTPN_DEFINT -#define CALLBTYPE_int int -#define FLEXTTYPE_bool FLEXTTPN_INT -#define FLEXTTYPE_bool0 FLEXTTPN_DEFINT -#define CALLBTYPE_bool int -#else -#error Platform not supported -#endif - -#define FLEXTTYPE_t_symptr FLEXTTPN_SYM -#define FLEXTTYPE_t_symptr0 FLEXTTPN_DEFSYM -#define CALLBTYPE_t_symptr t_symptr -#define FLEXTTYPE_t_symtype FLEXTTYPE_t_symptr -#define FLEXTTYPE_t_symtype0 FLEXTTYPE_t_symptr0 -#define CALLBTYPE_t_symtype t_symptr -#define FLEXTTYPE_t_ptrtype FLEXTTPN_PTR -#define CALLBTYPE_t_ptrtype t_ptrtype - -#define FLEXTTP(TP) FLEXTTYPE_ ## TP -#define CALLBTP(TP) CALLBTYPE_ ## TP - - -#define ARGMEMBER_bool(a) GetBool(a) -#define ARGMEMBER_bool0(a) ARGMEMBER_bool(a) -#define ARGMEMBER_int(a) GetInt(a) -#define ARGMEMBER_int0(a) ARGMEMBER_int(a) -#define ARGMEMBER_float(a) GetFloat(a) -#define ARGMEMBER_float0(a) ARGMEMBER_float(a) -#define ARGMEMBER_t_symptr(a) GetSymbol(a) -#define ARGMEMBER_t_symptr0(a) ARGMEMBER_t_symptr(a) -#define ARGMEMBER_t_symtype(a) ARGMEMBER_t_symptr(a) -#define ARGMEMBER_t_symtype0(a) ARGMEMBER_t_symptr0(a) -#define ARGCAST(a,tp) ARGMEMBER_##tp(a) - -#define REAL_NEW(NAME,NEW_CLASS,DSP,NOI,LIB) \ -flext_obj *NEW_CLASS::__init__(int ,t_atom *) \ -{ \ - return new NEW_CLASS; \ -} \ -FLEXT_EXP(LIB) void FLEXT_STPF(NEW_CLASS,DSP)() \ -{ \ - flext_obj::obj_add(LIB,DSP,NOI,FLEXT_ATTRIBUTES,#NEW_CLASS,NAME,NEW_CLASS::__setup__,NEW_CLASS::__init__,&NEW_CLASS::__free__,FLEXTTPN_NULL); \ -} \ -FLEXT_OBJ_SETUP(NEW_CLASS,DSP,LIB) - -#define REAL_NEW_V(NAME,NEW_CLASS,DSP,NOI,LIB) \ -flext_obj *NEW_CLASS::__init__(int argc,t_atom *argv) \ -{ \ - return new NEW_CLASS(argc,argv); \ -} \ -FLEXT_EXP(LIB) void FLEXT_STPF(NEW_CLASS,DSP)() \ -{ \ - flext_obj::obj_add(LIB,DSP,NOI,FLEXT_ATTRIBUTES,#NEW_CLASS,NAME,NEW_CLASS::__setup__,NEW_CLASS::__init__,&NEW_CLASS::__free__,FLEXTTPN_VAR,FLEXTTPN_NULL); \ -} \ -FLEXT_OBJ_SETUP(NEW_CLASS,DSP,LIB) - -#define REAL_NEW_1(NAME,NEW_CLASS,DSP,NOI,LIB, TYPE1) \ -flext_obj *NEW_CLASS::__init__(int,t_atom *argv) \ -{ \ - return new NEW_CLASS(ARGCAST(argv[0],TYPE1)); \ -} \ -FLEXT_EXP(LIB) void FLEXT_STPF(NEW_CLASS,DSP)() \ -{ \ - flext_obj::obj_add(LIB,DSP,NOI,FLEXT_ATTRIBUTES,#NEW_CLASS,NAME,NEW_CLASS::__setup__,NEW_CLASS::__init__,NEW_CLASS::__free__,FLEXTTP(TYPE1),FLEXTTPN_NULL); \ -} \ -FLEXT_OBJ_SETUP(NEW_CLASS,DSP,LIB) - -#define REAL_NEW_2(NAME,NEW_CLASS,DSP,NOI,LIB, TYPE1,TYPE2) \ -flext_obj *NEW_CLASS::__init__(int,t_atom *argv) \ -{ \ - return new NEW_CLASS(ARGCAST(argv[0],TYPE1),ARGCAST(argv[1],TYPE2)); \ -} \ -FLEXT_EXP(LIB) void FLEXT_STPF(NEW_CLASS,DSP)() \ -{ \ - flext_obj::obj_add(LIB,DSP,NOI,FLEXT_ATTRIBUTES,#NEW_CLASS,NAME,NEW_CLASS::__setup__,NEW_CLASS::__init__,NEW_CLASS::__free__,FLEXTTP(TYPE1),FLEXTTP(TYPE2),FLEXTTPN_NULL); \ -} \ -FLEXT_OBJ_SETUP(NEW_CLASS,DSP,LIB) - -#define REAL_NEW_3(NAME,NEW_CLASS,DSP,NOI,LIB, TYPE1, TYPE2, TYPE3) \ -flext_obj *NEW_CLASS::__init__(int,t_atom *argv) \ -{ \ - return new NEW_CLASS(ARGCAST(argv[0],TYPE1),ARGCAST(argv[1],TYPE2),ARGCAST(argv[2],TYPE3)); \ -} \ -FLEXT_EXP(LIB) void FLEXT_STPF(NEW_CLASS,DSP)() \ -{ \ - flext_obj::obj_add(LIB,DSP,NOI,FLEXT_ATTRIBUTES,#NEW_CLASS,NAME,NEW_CLASS::__setup__,NEW_CLASS::__init__,NEW_CLASS::__free__,FLEXTTP(TYPE1),FLEXTTP(TYPE2),FLEXTTP(TYPE3),FLEXTTPN_NULL); \ -} \ -FLEXT_OBJ_SETUP(NEW_CLASS,DSP,LIB) - -#define REAL_NEW_4(NAME,NEW_CLASS,DSP,NOI,LIB, TYPE1,TYPE2, TYPE3, TYPE4) \ -flext_obj *NEW_CLASS::__init__(int,t_atom *argv) \ -{ \ - return new NEW_CLASS(ARGCAST(argv[0],TYPE1),ARGCAST(argv[1],TYPE2),ARGCAST(argv[2],TYPE3),ARGCAST(argv[3],TYPE4)); \ -} \ -FLEXT_EXP(LIB) void FLEXT_STPF(NEW_CLASS,DSP)() \ -{ \ - flext_obj::obj_add(LIB,DSP,NOI,FLEXT_ATTRIBUTES,#NEW_CLASS,NAME,NEW_CLASS::__setup__,NEW_CLASS::__init__,NEW_CLASS::__free__,FLEXTTP(TYPE1),FLEXTTP(TYPE2),FLEXTTP(TYPE3),FLEXTTP(TYPE4),FLEXTTPN_NULL); \ -} \ -FLEXT_OBJ_SETUP(NEW_CLASS,DSP,LIB) - - -// Shortcuts for method arguments: -#define FLEXTARG_float a_float -#define FLEXTARG_int a_int -#define FLEXTARG_bool a_int -#define FLEXTARG_t_float a_float -#define FLEXTARG_t_symtype a_symbol -#define FLEXTARG_t_symptr a_symbol -#define FLEXTARG_t_ptrtype a_pointer - -#define FLEXTARG(TP) FLEXTARG_ ## TP - - -#endif diff --git a/externals/grill/flext/source/flbind.cpp b/externals/grill/flext/source/flbind.cpp deleted file mode 100644 index 8f78c300..00000000 --- a/externals/grill/flext/source/flbind.cpp +++ /dev/null @@ -1,261 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flbind.cpp - \brief Functionality for symbol-bound methods. -*/ - -#include "flext.h" -#include "flinternal.h" - - -t_class *flext_base::pxbnd_class = NULL; - -#if FLEXT_SYS == FLEXT_SYS_MAX -t_object *px_freelist = NULL; -t_messlist px_messlist[3]; -#endif - -/*! \brief Set up the proxy class for symbol-bound methods -*/ -void flext_base::SetupBindProxy() -{ - // already initialized? - if(!pxbnd_class) { -#if FLEXT_SYS == FLEXT_SYS_PD - pxbnd_class = class_new(gensym("flext_base bind proxy"),NULL,NULL,sizeof(pxbnd_object),CLASS_PD|CLASS_NOINLET, A_NULL); - add_anything(pxbnd_class,pxbnd_object::px_method); // for symbol-bound methods -#elif FLEXT_SYS == FLEXT_SYS_MAX - pxbnd_class = new t_class; - - pxbnd_class->c_sym = const_cast(sym__); - pxbnd_class->c_freelist = &px_freelist; - pxbnd_class->c_freefun = NULL; - pxbnd_class->c_size = sizeof(pxbnd_object); - pxbnd_class->c_tiny = 0; - pxbnd_class->c_noinlet = 1; - px_messlist[0].m_sym = (t_symbol *)pxbnd_class; - - px_messlist[1].m_sym = const_cast(sym_anything); - px_messlist[1].m_fun = (method)pxbnd_object::px_method; - px_messlist[1].m_type[0] = A_GIMME; - px_messlist[1].m_type[1] = 0; - - px_messlist[2].m_sym = 0; -#else -#pragma warning("Not implemented!") -#endif - } -} - - -flext_base::BindItem::BindItem(bool (*f)(flext_base *,t_symbol *s,int,t_atom *,void *data),pxbnd_object *p): - Item(NULL),fun(f),px(p) -{} - -flext_base::BindItem::~BindItem() -{ - if(px) { - FLEXT_ASSERT(!fun); // check if already unbound - object_free(&px->obj); - } -} - -void flext_base::BindItem::Unbind(const t_symbol *tag) -{ - if(px) { - FLEXT_ASSERT(fun); - -#if FLEXT_SYS == FLEXT_SYS_PD - pd_unbind(&px->obj.ob_pd,const_cast(tag)); -#elif FLEXT_SYS == FLEXT_SYS_MAX - if(tag->s_thing == (t_object *)px) - const_cast(tag)->s_thing = NULL; - else - error("flext - Binding to symbol %s not found",tag->s_name); -#else -# pragma warning("Not implemented") -#endif - - fun = NULL; - } -} - -#if FLEXT_SYS == FLEXT_SYS_PD - //! Bind object to a symbol - bool flext_base::Bind(const t_symbol *sym) { pd_bind(&thisHdr()->ob_pd,const_cast(sym)); return true; } - //! Unbind object from a symbol - bool flext_base::Unbind(const t_symbol *sym) { pd_unbind(&thisHdr()->ob_pd,const_cast(sym)); return true; } -#elif FLEXT_SYS == FLEXT_SYS_MAX - //! Bind object to a symbol - bool flext_base::Bind(const t_symbol *sym) { if(sym->s_thing) return false; else { const_cast(sym)->s_thing = (t_object *)thisHdr(); return true; } } - //! Unbind object from a symbol - bool flext_base::Unbind(const t_symbol *sym) { if(sym->s_thing != (t_object *)thisHdr()) return false; else { const_cast(sym)->s_thing = NULL; return true; } } -#endif - -bool flext_base::BindMethod(const t_symbol *sym,bool (*fun)(flext_base *,t_symbol *s,int argc,t_atom *argv,void *data),void *data) -{ - if(!bindhead) - bindhead = new ItemCont; - else { - // Search for symbol - for(Item *it = bindhead->FindList(sym); it; it = it->nxt) { - BindItem *item = (BindItem *)it; - - // go through all items with matching tag - if(item->fun == fun) { - // function already registered -> bail out! - post("%s - Symbol already bound with this method",thisName()); - return false; - } - } - } - - SetupBindProxy(); - -#if FLEXT_SYS == FLEXT_SYS_PD - pxbnd_object *px = (pxbnd_object *)object_new(pxbnd_class); -#elif FLEXT_SYS == FLEXT_SYS_MAX - pxbnd_object *px = (pxbnd_object *)newobject(px_messlist); -#else -#pragma warning("Not implemented!") -#endif - - if(px) { - BindItem *mi = new BindItem(fun,px); - bindhead->Add(mi,sym); - - px->init(this,mi,data); - -#if FLEXT_SYS == FLEXT_SYS_PD - pd_bind(&px->obj.ob_pd,const_cast(sym)); -#elif FLEXT_SYS == FLEXT_SYS_MAX - if(!sym->s_thing) - const_cast(sym)->s_thing = (t_object *)px; - else - error("%s - Symbol is already bound",thisName()); -#else -# pragma warning("Not implemented") -#endif - } - else - error("%s - Symbol proxy could not be created",thisName()); - - return true; -} - -bool flext_base::UnbindMethod(const t_symbol *sym,bool (*fun)(flext_base *,t_symbol *s,int argc,t_atom *argv,void *data),void **data) -{ - bool ok = false; - - if(bindhead && bindhead->Contained(0)) { - ItemSet &set = bindhead->GetInlet(); - -/* - ItemSet::iterator it1,it2; - if(sym) { - // specific tag - it1 = it2 = set.find(sym); it2++; - } - else { - // any tag - it1 = set.begin(),it2 = set.end(); - } - - BindItem *it = NULL; - for(ItemSet::iterator si = it1; si != it2 && !it; ++si) { - for(Item *i = si.data(); i; i = i->nxt) { - BindItem *item = (BindItem *)i; - if(!fun || item->fun == fun) - { - it = item; - if(!sym) sym = si.key(); - break; - } - } - } -*/ - BindItem *item = NULL; - if(sym) { - // symbol is given - Item *it = set.find(sym); - if(fun) { - // check if function matches - for(; it && static_cast(it)->fun != fun; it = it->nxt) {} - } - item = static_cast(it); - } - else { - // take any entry that matches - for(ItemSet::iterator si(set); si && !item; ++si) { - for(Item *i = si.data(); i; i = i->nxt) { - BindItem *bit = (BindItem *)i; - if(!fun || bit->fun == fun) { - item = bit; - if(!sym) sym = si.key(); - break; - } - } - } - } - - if(item) { - if(data) *data = item->px->data; - ok = bindhead->Remove(item,sym,0,false); - if(ok) { - item->Unbind(sym); - delete item; - } - } - } - return ok; -} - -bool flext_base::GetBoundMethod(const t_symbol *sym,bool (*fun)(flext_base *,t_symbol *s,int argc,t_atom *argv,void *data),void *&data) -{ - if(bindhead) { - // Search for symbol - for(Item *it = bindhead->FindList(sym); it; it = it->nxt) { - BindItem *item = (BindItem *)it; - - // go through all items with matching tag - if(item->fun == fun) { - data = item->px->data; - return true; - } - } - } - return false; -} - -bool flext_base::UnbindAll() -{ - if(bindhead && bindhead->Contained(0)) { - ItemSet &set = bindhead->GetInlet(); -// for(ItemSet::iterator si = set.begin(); si != set.end(); ++si) { - for(ItemSet::iterator si(set); si; ++si) { - Item *lst = si.data(); - while(lst) { - Item *nxt = lst->nxt; - BindItem *it = (BindItem *)lst; - it->Unbind(si.key()); - delete it; - lst = nxt; - } - } - set.clear(); - } - return true; -} - -void flext_base::pxbnd_object::px_method(pxbnd_object *c,const t_symbol *s,int argc,t_atom *argv) -{ - c->item->fun(c->base,(t_symbol *)s,argc,(t_atom *)argv,c->data); -} diff --git a/externals/grill/flext/source/flbuf.cpp b/externals/grill/flext/source/flbuf.cpp deleted file mode 100644 index a807c20b..00000000 --- a/externals/grill/flext/source/flbuf.cpp +++ /dev/null @@ -1,348 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flbuf.cpp - \brief Implementation of the buffer abstraction class. -*/ - -#include "flext.h" -#include "flfeatures.h" - -#if FLEXT_SYS != FLEXT_SYS_JMAX - -#if FLEXT_SYS == FLEXT_SYS_PD -#define DIRTY_INTERVAL 0 // buffer dirty check in msec -#endif - -#if FLEXT_SYS == FLEXT_SYS_MAX -// defined in flsupport.cpp -extern const t_symbol *sym_buffer,*sym_size; -#endif - -flext::buffer::buffer(const t_symbol *bn,bool delayed): - sym(NULL),data(NULL), - chns(0),frames(0) -{ -#if FLEXT_SYS == FLEXT_SYS_PD - arr = NULL; - interval = DIRTY_INTERVAL; - isdirty = false; - ticking = false; - tick = clock_new(this,(t_method)cb_tick); -#endif - - if(bn) Set(bn,delayed); - - ClearDirty(); -} - -flext::buffer::~buffer() -{ -#if FLEXT_SYS == FLEXT_SYS_PD - clock_free(tick); -#endif -} - -int flext::buffer::Set(const t_symbol *s,bool nameonly) -{ - int ret = 0; - bool valid = data != NULL; // valid now? (before change) - - if(s && sym != s) { - ret = 1; - data = NULL; - frames = 0; - chns = 0; - } - - if(s && *GetString(s)) sym = s; - - if(!sym) { - if(valid) ret = -1; - } - else if(!nameonly) { -#if FLEXT_SYS == FLEXT_SYS_PD - int frames1; - t_sample *data1; - - arr = (t_garray *)pd_findbyclass(const_cast(sym), garray_class); - if(!arr) - { - if (*GetString(sym)) FLEXT_LOG1("buffer: no such array '%s'",GetString(sym)); -// sym = NULL; - if(valid) ret = -1; - } - else if(!garray_getfloatarray(arr, &frames1, &data1)) - { - error("buffer: bad template '%s'",GetString(sym)); - data = NULL; - frames = 0; - if(valid) ret = -1; - } - else { - ret = 0; - garray_usedindsp(arr); - if(frames != frames1) { frames = frames1; if(!ret) ret = 1; } - if(data != data1) { data = data1; if(!ret) ret = 1; } - chns = 1; - } -#elif FLEXT_SYS == FLEXT_SYS_MAX - if(sym->s_thing) { - const t_buffer *p = (const t_buffer *)sym->s_thing; - - FLEXT_ASSERT(!NOGOOD(p)); - - if(ob_sym(p) != sym_buffer) { - post("buffer: object '%s' not valid (type %s)",GetString(sym),GetString(ob_sym(p))); - if(valid) ret = -2; - } - else { -#ifdef FLEXT_DEBUG -// post("flext: buffer object '%s' - valid:%i samples:%i channels:%i frames:%i",GetString(sym),p->b_valid,p->b_frames,p->b_nchans,p->b_frames); -#endif - if(data != p->b_samples) { data = p->b_samples; if(!ret) ret = 1; } - if(chns != p->b_nchans) { chns = p->b_nchans; if(!ret) ret = 1; } - if(frames != p->b_frames) { frames = p->b_frames; if(!ret) ret = 1; } - } - } - else { - FLEXT_LOG1("buffer: symbol '%s' not defined", GetString(sym)); - /*if(valid)*/ ret = -1; - } -#else -#error not implemented -#endif - } - - return ret; -} - -bool flext::buffer::Update() -{ - FLEXT_ASSERT(sym); - - bool upd = false; - -#if FLEXT_SYS == FLEXT_SYS_PD - if(!arr) return data == NULL; - - int frames1; - t_sample *data1; - if(!garray_getfloatarray(arr, &frames1, &data1)) { - data = NULL; - chns = 0; - frames = 0; - upd = true; - } - else if(data != data1 || frames != frames1) { - data = data1; - frames = frames1; - upd = true; - } -#elif FLEXT_SYS == FLEXT_SYS_MAX - const t_buffer *p = (const t_buffer *)sym->s_thing; - if(p) { - FLEXT_ASSERT(!NOGOOD(p) && ob_sym(p) == sym_buffer); - - if(data != p->b_samples || chns != p->b_nchans || frames != p->b_frames) { - data = p->b_samples; - chns = p->b_nchans; - frames = p->b_frames; - upd = true; - } - } - else { - // buffer~ has e.g. been renamed - data = NULL; - chns = 0; - frames = 0; - upd = true; - } -#else -#error not implemented -#endif - return upd; -} - -flext::buffer::lock_t flext::buffer::Lock() -{ - FLEXT_ASSERT(sym); -#if FLEXT_SYS == FLEXT_SYS_PD - FLEXT_ASSERT(arr); -#ifdef _FLEXT_HAVE_PD_GARRAYLOCKS - garray_lock(arr); -#endif - return false; -#elif FLEXT_SYS == FLEXT_SYS_MAX - t_buffer *p = (t_buffer *)sym->s_thing; - FLEXT_ASSERT(p); -#ifdef _FLEXT_HAVE_MAX_INUSEFLAG - long old = p->b_inuse; - p->b_inuse = 1; - return old; -#else - return 0; -#endif -#else -#error not implemented -#endif -} - -void flext::buffer::Unlock(flext::buffer::lock_t prv) -{ - FLEXT_ASSERT(sym); -#if FLEXT_SYS == FLEXT_SYS_PD - FLEXT_ASSERT(arr); -#ifdef _FLEXT_HAVE_PD_GARRAYLOCKS - garray_unlock(arr); -#endif -#elif FLEXT_SYS == FLEXT_SYS_MAX - t_buffer *p = (t_buffer *)sym->s_thing; - FLEXT_ASSERT(p); -#ifdef _FLEXT_HAVE_MAX_INUSEFLAG - p->b_inuse = prv; -#endif -#else -#error not implemented -#endif -} - -void flext::buffer::Frames(int fr,bool keep,bool zero) -{ - FLEXT_ASSERT(sym); -#if FLEXT_SYS == FLEXT_SYS_PD - // is this function guaranteed to keep memory and set rest to zero? - ::garray_resize(arr,(float)fr); - Update(); -#elif FLEXT_SYS == FLEXT_SYS_MAX - t_sample *tmp = NULL; - int sz = frames; - if(fr < sz) sz = fr; - - if(keep) { - // copy buffer data to tmp storage - tmp = (t_sample *)NewAligned(sz*sizeof(t_sample)); - FLEXT_ASSERT(tmp); - CopySamples(tmp,data,sz); - } - - t_atom msg; - t_buffer *buf = (t_buffer *)sym->s_thing; - // b_msr reflects buffer sample rate... is this what we want? - // Max bug: adding half a sample to prevent roundoff errors.... - float ms = (fr+0.5)/buf->b_msr; - - SetFloat(msg,ms); - ::typedmess((object *)buf,(t_symbol *)sym_size,1,&msg); - - Update(); - - if(tmp) { - // copy data back - CopySamples(data,tmp,sz); - FreeAligned(tmp); - if(zero && sz < fr) ZeroSamples(data+sz,fr-sz); - } - else - if(zero) ZeroSamples(data,fr); -#else -#error -#endif -} - - -#if FLEXT_SYS == FLEXT_SYS_PD -void flext::buffer::SetRefrIntv(float intv) -{ - interval = intv; - if(interval == 0 && ticking) { - clock_unset(tick); - ticking = false; - } -} -#elif FLEXT_SYS == FLEXT_SYS_MAX -void flext::buffer::SetRefrIntv(float) {} -#else -#error -#endif - - -void flext::buffer::Dirty(bool force) -{ - FLEXT_ASSERT(sym); -#if FLEXT_SYS == FLEXT_SYS_PD - if((!ticking) && (interval || force)) { - ticking = true; - cb_tick(this); // immediately redraw - } - else { - if(force) clock_delay(tick,0); - isdirty = true; - } -#elif FLEXT_SYS == FLEXT_SYS_MAX - t_buffer *p = (t_buffer *)sym->s_thing; - FLEXT_ASSERT(p && !NOGOOD(p)); - p->b_modtime = gettime(); -#else -#error Not implemented -#endif -} - -#if FLEXT_SYS == FLEXT_SYS_PD -void flext::buffer::cb_tick(buffer *b) -{ - if(b->arr) garray_redraw(b->arr); -#ifdef FLEXT_DEBUG - else error("buffer: array is NULL"); -#endif - - if(b->isdirty && b->interval) { - b->isdirty = false; - b->ticking = true; - clock_delay(b->tick,b->interval); - } - else - b->ticking = false; -} -#endif - -void flext::buffer::ClearDirty() -{ -#if FLEXT_SYS == FLEXT_SYS_PD - cleantime = clock_getlogicaltime(); -#elif FLEXT_SYS == FLEXT_SYS_MAX - cleantime = gettime(); -#else -#error Not implemented -#endif -} - -bool flext::buffer::IsDirty() const -{ - if(!sym) return false; -#if FLEXT_SYS == FLEXT_SYS_PD - #ifdef _FLEXT_HAVE_PD_GARRAYUPDATETIME - return arr && (isdirty || garray_updatetime(arr) > cleantime); - #else - // Don't know.... (no method in PD judging whether buffer has been changed from outside flext...) - return true; - #endif -#elif FLEXT_SYS == FLEXT_SYS_MAX - t_buffer *p = (t_buffer *)sym->s_thing; - FLEXT_ASSERT(p && !NOGOOD(p)); - return p->b_modtime > cleantime; -#else -#error Not implemented -#endif -} - -#endif // Jmax - - diff --git a/externals/grill/flext/source/flclass.h b/externals/grill/flext/source/flclass.h deleted file mode 100644 index 3da63719..00000000 --- a/externals/grill/flext/source/flclass.h +++ /dev/null @@ -1,1098 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flclass.h - \brief User accessible flext base classes - -*/ - -#ifndef __FLCLASS_H -#define __FLCLASS_H - -// include the header file declaring the base classes -#include "flbase.h" -#include "flsupport.h" -#include "flmap.h" -#include "flinternal.h" - -#ifdef _MSC_VER -#pragma warning(disable: 4786) -#endif - -#ifdef __BORLANDC__ -#pragma warn -8008 // Condition is always false -#pragma warn -8057 // Parameter is never used -#pragma warn -8066 // Unreachable code -#endif - - -// === flext_base ================================================== - -/*! \brief Flext message only base object - - This is the base class from which typical external objects derive. - DSP objects should use the flext_dsp class which inherits from flext_base and - provides the necessary functionality. - - For a valid external object class you would also need FLEXT_HEADER, also if it's only - a base class without instantiated objects again. - To make an instance of an object class you would typically use FLEXT_NEW or - its companions. - - See the flext_obj class for additional information. -*/ - - -class FLEXT_SHARE FLEXT_CLASSDEF(flext_base); -typedef class FLEXT_SHARE FLEXT_CLASSDEF(flext_base) flext_base; - -class FLEXT_SHARE FLEXT_CLASSDEF(flext_base): - public flext_obj -{ - FLEXT_HEADER_S(FLEXT_CLASSDEF(flext_base),flext_obj,Setup) - - friend class FLEXT_SHARE FLEXT_CLASSDEF(flext_obj); - -public: - -// --- inheritable virtual methods -------------------------------- - - /*! \defgroup FLEXT_C_VIRTUAL Virtual base class functions - - @{ - */ - - //! called on patcher load (not on mere object creation!) - virtual void CbLoadbang(); - virtual void m_loadbang(); - - //! called on (double-)click into object box - virtual void CbClick(); - - /*! \brief Called for every incoming message. - All method handling is done in there - \return True if a handler was found and called - */ - virtual bool CbMethodHandler(int inlet,const t_symbol *s,int argc,const t_atom *argv); - - /*! \brief Called for every unhandled message (by CbMethodHandler) - */ - virtual bool CbMethodResort(int inlet,const t_symbol *s,int argc,const t_atom *argv); - virtual bool m_method_(int inlet,const t_symbol *s,int argc,const t_atom *argv); - -//! @} FLEXT_C_VIRTUAL - - -// --- inlet/outlet stuff ----------------------------------------- - - /*! \defgroup FLEXT_C_INOUT Flext in-/outlet functions - \note These must be called in the class' constructor - \note All (also default) inlets must be defined - @{ - */ - - /*! \defgroup FLEXT_C_IO_ADD Announce in-/outlet functions - @{ - */ - - // argument m specifies multiple inlet/outlet count - -// void AddInDef() { AddInlet(xlet_def,1); } - - /*! \brief Add inlet(s) for anythings - \remark That's the one to choose for the left-most (first) inlet unless it's a signal inlet. - */ - void AddInAnything(int m = 1) { AddInlet(xlet_any,m); } - /*! \brief Add inlet(s) for anythings (with description) - \remark That's the one to choose for the left-most (first) inlet unless it's a signal inlet. - */ - void AddInAnything(const char *desc,int m = 1) { AddInlet(xlet_any,m,desc); } - //! Add inlet(s) for floats - void AddInFloat(int m = 1) { AddInlet(xlet_float,m); } - //! Add inlet(s) for floats (with description) - void AddInFloat(const char *desc,int m = 1) { AddInlet(xlet_float,m,desc); } - //! Add inlet(s) for integers - void AddInInt(int m = 1) { AddInlet(xlet_int,m); } - //! Add inlet(s) for integers (with description) - void AddInInt(const char *desc,int m = 1) { AddInlet(xlet_int,m,desc); } - //! Add inlet(s) for symbols - void AddInSymbol(int m = 1) { AddInlet(xlet_sym,m); } - //! Add inlet(s) for symbol (with description) - void AddInSymbol(const char *desc,int m = 1) { AddInlet(xlet_sym,m,desc); } - //! Add inlet(s) for bang - void AddInBang(int m = 1) { AddInlet(xlet_sym,m); } - //! Add inlet(s) for bangs (with description) - void AddInBang(const char *desc,int m = 1) { AddInlet(xlet_sym,m,desc); } - //! Add inlet(s) for lists - void AddInList(int m = 1) { AddInlet(xlet_list,m); } - //! Add inlet(s) for lists (with description) - void AddInList(const char *desc,int m = 1) { AddInlet(xlet_list,m,desc); } - - //! Add outlet(s) for anythings - void AddOutAnything(int m = 1) { AddOutlet(xlet_any,m); } - //! Add outlet(s) for anythings (with description) - void AddOutAnything(const char *desc,int m = 1) { AddOutlet(xlet_any,m,desc); } - //! Add outlet(s) for floats - void AddOutFloat(int m = 1) { AddOutlet(xlet_float,m); } - //! Add outlet(s) for floats (with description) - void AddOutFloat(const char *desc,int m = 1) { AddOutlet(xlet_float,m,desc); } - //! Add outlet(s) for integers - void AddOutInt(int m = 1) { AddOutlet(xlet_int,m); } - //! Add outlet(s) for integers (with description) - void AddOutInt(const char *desc,int m = 1) { AddOutlet(xlet_int,m,desc); } - //! Add outlet(s) for symbols - void AddOutSymbol(int m = 1) { AddOutlet(xlet_sym,m); } - //! Add outlet(s) for symbols (with description) - void AddOutSymbol(const char *desc,int m = 1) { AddOutlet(xlet_sym,m,desc); } - //! Add outlet(s) for bangs - void AddOutBang(int m = 1) { AddOutlet(xlet_sym,m); } - //! Add outlet(s) for bangs (with description) - void AddOutBang(const char *desc,int m = 1) { AddOutlet(xlet_sym,m,desc); } - //! Add outlet(s) for lists - void AddOutList(int m = 1) { AddOutlet(xlet_list,m); } - //! Add outlet(s) for lists (with description) - void AddOutList(const char *desc,int m = 1) { AddOutlet(xlet_list,m,desc); } - - //! \deprecated inlets and outlets are now set up automatically - bool SetupInOut() { return true; } - - //! @} FLEXT_C_IO_ADD - - /*! \defgroup FLEXT_C_IO_MISC Miscellanous in-/outlet functionality - @{ - */ - - //! Get number of inlets - int CntIn() const { return incnt; } - //! Get number of outlets - int CntOut() const { return outcnt; } - //! Get number of signal inlets - int CntInSig() const { return insigs; } - //! Get number of signal outlets - int CntOutSig() const { return outsigs; } - - - //! Retrieve currently processed message tag (NULL if no message processing) - static const t_symbol *thisTag() { return curtag; } - - class outlet; - - //! Get pointer to outlet (not in the constructor!) - outlet *GetOut(int ix) const { return outlets[ix]; } - - int GetOutAttr() const { return HasAttributes()?CntOut():0; } - - //! @} FLEXT_C_IO_MISC - - /*! \defgroup FLEXT_C_IO_OUT Output data to inlets/outlets - @{ - */ - - // output messages - - //! Output bang (index n starts with 0) - void ToOutBang(int n) const; - - //! Output float (index n starts with 0) - void ToOutFloat(int n,float f) const; - - //! Output integer (index n starts with 0) - void ToOutInt(int n,int f) const; - - //! Output boolean (index n starts with 0) - void ToOutBool(int n,bool f) const { ToOutInt(n,f?1:0); } - - //! Output symbol (index n starts with 0) - void ToOutSymbol(int n,const t_symbol *s) const; - //! Output string aka symbol (index n starts with 0) - void ToOutString(int n,const char *s) const { ToOutSymbol(n,MakeSymbol(s)); } - - //! Output atom (index n starts with 0) - void ToOutAtom(int n,const t_atom &at) const; - - //! Output list (index n starts with 0) - void ToOutList(int n,int argc,const t_atom *argv) const; - //! Output list (index n starts with 0) - void ToOutList(int n,const AtomList &list) const { ToOutList(n,list.Count(),list.Atoms()); } - - //! Output anything (index n starts with 0) - void ToOutAnything(int n,const t_symbol *s,int argc,const t_atom *argv) const; - //! Output anything (index n starts with 0) - void ToOutAnything(int n,const AtomAnything &any) const { ToOutAnything(n,any.Header(),any.Count(),any.Atoms()); } - //! Output anything (index n starts with 0) - void ToOutAnything(int n,const t_symbol *s,const AtomList &list) const { ToOutAnything(n,s,list.Count(),list.Atoms()); } - - //! @} FLEXT_C_IO_OUT - - /*! \defgroup FLEXT_C_IO_QUEUE Low-priority output of data to inlets/outlets - @{ - */ - - //! Output low priority bang (index n starts with 0) - void ToQueueBang(int n) const; - - //! Output low priority float (index n starts with 0) - void ToQueueFloat(int n,float f) const; - - //! Output low priority integer (index n starts with 0) - void ToQueueInt(int n,int f) const; - - //! Output low priority boolean (index n starts with 0) - void ToQueueBool(int n,bool f) const { ToQueueInt(n,f?1:0); } - - //! Output low priority symbol (index n starts with 0) - void ToQueueSymbol(int n,const t_symbol *s) const; - //! Output low priority string aka symbol (to appointed outlet) - void ToQueueString(int n,const char *s) const { ToQueueSymbol(n,MakeSymbol(s)); } - - //! Output low priority atom (index n starts with 0) - void ToQueueAtom(int n,const t_atom &at) const; - - //! Output low priority list (index n starts with 0) - void ToQueueList(int n,int argc,const t_atom *argv) const; - //! Output low priority list (index n starts with 0) - void ToQueueList(int n,const AtomList &list) const { ToQueueList(n,list.Count(),list.Atoms()); } - - //! Output low priority anything (index n starts with 0) - void ToQueueAnything(int n,const t_symbol *s,int argc,const t_atom *argv) const; - //! Output low priority anything (index n starts with 0) - void ToQueueAnything(int n,const AtomAnything &any) const { ToQueueAnything(n,any.Header(),any.Count(),any.Atoms()); } - - //! @} FLEXT_C_IO_QUEUE - - - /*! \defgroup FLEXT_C_IO_SELF Output of data to inlets/outlets of this object - @{ - */ - - //! Send bang to self (inlet n) - void ToSelfBang(int n) const { ToQueueBang(-1-n); } - - //! Send float to self (inlet n) - void ToSelfFloat(int n,float f) const { ToQueueFloat(-1-n,f); } - - //! Send integer to self (inlet n) - void ToSelfInt(int n,int f) const { ToQueueInt(-1-n,f); } - - //! Send boolean to self (inlet n) - void ToSelfBool(int n,bool f) const { ToSelfInt(n,f?1:0); } - - //! Send symbol to self (inlet n) - void ToSelfSymbol(int n,const t_symbol *s) const { ToQueueSymbol(-1-n,s); } - //! Send string aka symbol to self (inlet 0) - void ToSelfString(int n,const char *s) const { ToSelfSymbol(n,MakeSymbol(s)); } - - //! Output atom (index n starts with 0) - void ToSelfAtom(int n,const t_atom &at) const { ToQueueAtom(-1-n,at); } - - //! Send list to self (inlet n) - void ToSelfList(int n,int argc,const t_atom *argv) const { ToQueueList(-1-n,argc,argv); } - //! Send list to self (inlet n) - void ToSelfList(int n,const AtomList &list) const { ToSelfList(n,list.Count(),list.Atoms()); } - - //! Send anything to self (inlet n) - void ToSelfAnything(int n,const t_symbol *s,int argc,const t_atom *argv) const { ToQueueAnything(-1-n,s,argc,argv); } - //! Send anything to self (inlet n) - void ToSelfAnything(int n,const AtomAnything &any) const { ToSelfAnything(n,any.Header(),any.Count(),any.Atoms()); } - - //! @} FLEXT_C_IO_SELF - - - /*! \defgroup FLEXT_C_IO_MESSAGEBUNDLE Output of data via message bundles - - These are used to assure the sending of several messages from a second thread to the same logical time - - @{ - */ - - //! Output bang (index n starts with 0) - void MsgAddBang(MsgBundle *mb,int n) const; - - //! Output float (index n starts with 0) - void MsgAddFloat(MsgBundle *mb,int n,float f) const; - - //! Output integer (index n starts with 0) - void MsgAddInt(MsgBundle *mb,int n,int f) const; - - //! Output boolean (index n starts with 0) - void MsgAddBool(MsgBundle *mb,int n,bool f) const { MsgAddInt(mb,n,f?1:0); } - - //! Output symbol (index n starts with 0) - void MsgAddSymbol(MsgBundle *mb,int n,const t_symbol *s) const; - //! Output string aka symbol (to appointed outlet) - void MsgAddString(MsgBundle *mb,int n,const char *s) const { MsgAddSymbol(mb,n,MakeSymbol(s)); } - - //! Output atom (index n starts with 0) - void MsgAddAtom(MsgBundle *mb,int n,const t_atom &at) const; - - //! Output list (index n starts with 0) - void MsgAddList(MsgBundle *mb,int n,int argc,const t_atom *argv) const; - //! Output list (index n starts with 0) - void MsgAddList(MsgBundle *mb,int n,const AtomList &list) const { MsgAddList(mb,n,list.Count(),list.Atoms()); } - - //! Output anything (index n starts with 0) - void MsgAddAnything(MsgBundle *mb,int n,const t_symbol *s,int argc,const t_atom *argv) const; - //! Output anything (index n starts with 0) - void MsgAddAnything(MsgBundle *mb,int n,const AtomAnything &any) const { MsgAddAnything(mb,n,any.Header(),any.Count(),any.Atoms()); } - - void MsgSelfBang(MsgBundle *mb,int n) const { MsgAddBang(mb,-1-n); } - - //! Send float to self (inlet n) - void MsgSelfFloat(MsgBundle *mb,int n,float f) const { MsgAddFloat(mb,-1-n,f); } - - //! Send integer to self (inlet n) - void MsgSelfInt(MsgBundle *mb,int n,int f) const { MsgAddInt(mb,-1-n,f); } - - //! Send boolean to self (inlet n) - void MsgSelfBool(MsgBundle *mb,int n,bool f) const { MsgSelfInt(mb,n,f?1:0); } - - //! Send symbol to self (inlet n) - void MsgSelfSymbol(MsgBundle *mb,int n,const t_symbol *s) const { MsgAddSymbol(mb,-1-n,s); } - //! Send string aka symbol to self (inlet 0) - void MsgSelfString(MsgBundle *mb,int n,const char *s) const { MsgSelfSymbol(mb,n,MakeSymbol(s)); } - - //! Output atom (index n starts with 0) - void MsgSelfAtom(MsgBundle *mb,int n,const t_atom &at) const { MsgAddAtom(mb,-1-n,at); } - - //! Send list to self (inlet n) - void MsgSelfList(MsgBundle *mb,int n,int argc,const t_atom *argv) const { MsgAddList(mb,-1-n,argc,argv); } - //! Send list to self (inlet n) - void MsgSelfList(MsgBundle *mb,int n,const AtomList &list) const { MsgSelfList(mb,n,list.Count(),list.Atoms()); } - - //! Send anything to self (inlet n) - void MsgSelfAnything(MsgBundle *mb,int n,const t_symbol *s,int argc,const t_atom *argv) const { MsgAddAnything(mb,-1-n,s,argc,argv); } - //! Send anything to self (inlet n) - void MsgSelfAnything(MsgBundle *mb,int n,const AtomAnything &any) const { MsgSelfAnything(mb,n,any.Header(),any.Count(),any.Atoms()); } - - //! @} FLEXT_C_IO_MESSAGEBUNDLE - -//! @} FLEXT_C_INOUT - - -// --- message handling ------------------------------------------- - - enum metharg { - a_null = 0, - a_float,a_int,a_bool, - a_symbol,a_pointer, - a_list,a_any, // (t_symbol *) / int / t_atom * - a_LIST,a_ANY // AtomList, AtomAnything - }; - - typedef bool (*methfun)(flext_base *c); - - /*! \defgroup FLEXT_C_ADDMETHOD Method handling (object scope) - \internal - @{ - */ - - void AddMethodDef(int inlet,const t_symbol *tag = NULL) { ThMeths()->Add(new MethItem,tag,inlet); } - void AddMethodDef(int inlet,const char *tag = NULL) { AddMethodDef(inlet,MakeSymbol(tag)); } - - void AddMethod(int inlet,bool (*m)(flext_base *)) { AddMethod(ThMeths(),inlet,sym_bang,(methfun)m,a_null); } - void AddMethod(int inlet,bool (*m)(flext_base *,int,t_atom *)) { AddMethod(ThMeths(),inlet,sym_list,(methfun)m,a_list,a_null); } - void AddMethod(int inlet,bool (*m)(flext_base *,int,const t_atom *)) { AddMethod(ThMeths(),inlet,sym_list,(methfun)m,a_list,a_null); } - void AddMethod(int inlet,const t_symbol *tag,bool (*m)(flext_base *)) { AddMethod(ThMeths(),inlet,tag,(methfun)m,a_null); } // pure method - void AddMethod(int inlet,const char *tag,bool (*m)(flext_base *)) { AddMethod(inlet,MakeSymbol(tag),m); } - void AddMethod(int inlet,bool (*m)(flext_base *,t_symbol *,int,t_atom *)) { AddMethod(ThMeths(),inlet,sym_anything,(methfun)m,a_any,a_null); } // anything - void AddMethod(int inlet,bool (*m)(flext_base *,const t_symbol *,int,const t_atom *)) { AddMethod(ThMeths(),inlet,sym_anything,(methfun)m,a_any,a_null); } // anything - void AddMethod(int inlet,bool (*m)(flext_base *,t_symbol *&)) { AddMethod(ThMeths(),inlet,sym_symbol,(methfun)m,a_symbol,a_null); } // single symbol - void AddMethod(int inlet,bool (*m)(flext_base *,const t_symbol *&)) { AddMethod(ThMeths(),inlet,sym_symbol,(methfun)m,a_symbol,a_null); } // single symbol - void AddMethod(int inlet,bool (*m)(flext_base *,float &)) { AddMethod(ThMeths(),inlet,sym_float,(methfun)m,a_float,a_null); } // single float - void AddMethod(int inlet,bool (*m)(flext_base *,float &,float &)) { AddMethod(ThMeths(),inlet,sym_list,(methfun)m,a_float,a_float,a_null); } // list of 2 floats - void AddMethod(int inlet,bool (*m)(flext_base *,float &,float &,float &)) { AddMethod(ThMeths(),inlet,sym_list,(methfun)m,a_float,a_float,a_float,a_null); } // list of 3 floats -#if FLEXT_SYS == FLEXT_SYS_PD - void AddMethod(int inlet,bool (*m)(flext_base *,int &)) { AddMethod(ThMeths(),inlet,sym_float,(methfun)m,a_int,a_null); } // single float -#else - void AddMethod(int inlet,bool (*m)(flext_base *,int &)) { AddMethod(ThMeths(),inlet,sym_int,(methfun)m,a_int,a_null); } // single float -#endif - void AddMethod(int inlet,bool (*m)(flext_base *,int &,int &)) { AddMethod(ThMeths(),inlet,sym_list,(methfun)m,a_int,a_int,a_null); } // list of 2 floats - void AddMethod(int inlet,bool (*m)(flext_base *,int &,int &,int &)) { AddMethod(ThMeths(),inlet,sym_list,(methfun)m,a_int,a_int,a_int,a_null); } // list of 3 floats - void AddMethod(int inlet,const t_symbol *tag,bool (*m)(flext_base *,int,t_atom *)) { AddMethod(ThMeths(),inlet,tag,(methfun)m,a_list,a_null); } // method+gimme - void AddMethod(int inlet,const t_symbol *tag,bool (*m)(flext_base *,int,const t_atom *)) { AddMethod(ThMeths(),inlet,tag,(methfun)m,a_list,a_null); } // method+gimme - void AddMethod(int inlet,const t_symbol *tag,bool (*m)(flext_base *,t_symbol *,int,t_atom *)) { AddMethod(ThMeths(),inlet,tag,(methfun)m,a_any,a_null); } // method+gimme - void AddMethod(int inlet,const t_symbol *tag,bool (*m)(flext_base *,const t_symbol *,int,const t_atom *)) { AddMethod(ThMeths(),inlet,tag,(methfun)m,a_any,a_null); } // method+gimme - void AddMethod(int inlet,const t_symbol *tag,bool (*m)(flext_base *,t_symbol *&)) { AddMethod(ThMeths(),inlet,tag,(methfun)m,a_symbol,a_null); } // method+symbol - void AddMethod(int inlet,const t_symbol *tag,bool (*m)(flext_base *,const t_symbol *&)) { AddMethod(ThMeths(),inlet,tag,(methfun)m,a_symbol,a_null); } // method+symbol - void AddMethod(int inlet,const t_symbol *tag,bool (*m)(flext_base *,float &)) { AddMethod(ThMeths(),inlet,tag,(methfun)m,a_float,a_null); } // method+float - void AddMethod(int inlet,const t_symbol *tag,bool (*m)(flext_base *,int &)) { AddMethod(ThMeths(),inlet,tag,(methfun)m,a_int,a_null); } // method+int - void AddMethod(int inlet,const char *tag,bool (*m)(flext_base *,int,t_atom *)) { AddMethod(inlet,MakeSymbol(tag),m); } - void AddMethod(int inlet,const char *tag,bool (*m)(flext_base *,int,const t_atom *)) { AddMethod(inlet,MakeSymbol(tag),m); } - void AddMethod(int inlet,const char *tag,bool (*m)(flext_base *,t_symbol *,int,t_atom *)) { AddMethod(inlet,MakeSymbol(tag),m); } - void AddMethod(int inlet,const char *tag,bool (*m)(flext_base *,const t_symbol *,int,const t_atom *)) { AddMethod(inlet,MakeSymbol(tag),m); } - void AddMethod(int inlet,const char *tag,bool (*m)(flext_base *,t_symbol *&)) { AddMethod(inlet,MakeSymbol(tag),m); } - void AddMethod(int inlet,const char *tag,bool (*m)(flext_base *,const t_symbol *&)) { AddMethod(inlet,MakeSymbol(tag),m); } - void AddMethod(int inlet,const char *tag,bool (*m)(flext_base *,float &)) { AddMethod(inlet,MakeSymbol(tag),m); } - void AddMethod(int inlet,const char *tag,bool (*m)(flext_base *,int &)) { AddMethod(inlet,MakeSymbol(tag),m); } - - //! Set Max/MSP style of distributing list elements over (message) inlets - static void SetDist(t_classid c,bool d = true); - //! Query whether lists are distributed - bool DoDist() const; - - -//! @} FLEXT_C_ADDMETHOD - - /*! \defgroup FLEXT_C_CADDMETHOD Method handling (class scope) - \internal - @{ - */ - - static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *)) { AddMethod(ClMeths(c),inlet,sym_bang,(methfun)m,a_null); } - static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,int,t_atom *)) { AddMethod(ClMeths(c),inlet,sym_list,(methfun)m,a_list,a_null); } - static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,int,const t_atom *)) { AddMethod(ClMeths(c),inlet,sym_list,(methfun)m,a_list,a_null); } - static void AddMethod(t_classid c,int inlet,const t_symbol *tag,bool (*m)(flext_base *)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_null); } // pure method - static void AddMethod(t_classid c,int inlet,const char *tag,bool (*m)(flext_base *)) { AddMethod(c,inlet,MakeSymbol(tag),m); } - static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,t_symbol *,int,t_atom *)) { AddMethod(ClMeths(c),inlet,sym_anything,(methfun)m,a_any,a_null); } // anything - static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,const t_symbol *,int,const t_atom *)) { AddMethod(ClMeths(c),inlet,sym_anything,(methfun)m,a_any,a_null); } // anything - static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,t_symbol *&)) { AddMethod(ClMeths(c),inlet,sym_symbol,(methfun)m,a_symbol,a_null); } // single symbol - static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,const t_symbol *&)) { AddMethod(ClMeths(c),inlet,sym_symbol,(methfun)m,a_symbol,a_null); } // single symbol - static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,float &)) { AddMethod(ClMeths(c),inlet,sym_float,(methfun)m,a_float,a_null); } // single float - static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,float &,float &)) { AddMethod(ClMeths(c),inlet,sym_list,(methfun)m,a_float,a_float,a_null); } // list of 2 floats - static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,float &,float &,float &)) { AddMethod(ClMeths(c),inlet,sym_list,(methfun)m,a_float,a_float,a_float,a_null); } // list of 3 floats -#if FLEXT_SYS == FLEXT_SYS_PD - static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,int &)) { AddMethod(ClMeths(c),inlet,sym_float,(methfun)m,a_int,a_null); } // single integer -#else - static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,int &)) { AddMethod(ClMeths(c),inlet,sym_int,(methfun)m,a_int,a_null); } // single integer -#endif - static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,int &,int &)) { AddMethod(ClMeths(c),inlet,sym_list,(methfun)m,a_int,a_int,a_null); } // list of 2 floats - static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,int &,int &,int &)) { AddMethod(ClMeths(c),inlet,sym_list,(methfun)m,a_int,a_int,a_int,a_null); } // list of 3 floats - static void AddMethod(t_classid c,int inlet,const t_symbol *tag,bool (*m)(flext_base *,int,t_atom *)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_list,a_null); } // method+gimme - static void AddMethod(t_classid c,int inlet,const t_symbol *tag,bool (*m)(flext_base *,int,const t_atom *)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_list,a_null); } // method+gimme - static void AddMethod(t_classid c,int inlet,const t_symbol *tag,bool (*m)(flext_base *,t_symbol *,int,t_atom *)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_any,a_null); } // method+gimme - static void AddMethod(t_classid c,int inlet,const t_symbol *tag,bool (*m)(flext_base *,const t_symbol *,int,const t_atom *)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_any,a_null); } // method+gimme - static void AddMethod(t_classid c,int inlet,const t_symbol *tag,bool (*m)(flext_base *,t_symbol *&)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_symbol,a_null); } // method+symbol - static void AddMethod(t_classid c,int inlet,const t_symbol *tag,bool (*m)(flext_base *,const t_symbol *&)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_symbol,a_null); } // method+symbol - static void AddMethod(t_classid c,int inlet,const t_symbol *tag,bool (*m)(flext_base *,float &)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_float,a_null); } // method+float - static void AddMethod(t_classid c,int inlet,const t_symbol *tag,bool (*m)(flext_base *,int &)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_int,a_null); } // method+int - static void AddMethod(t_classid c,int inlet,const char *tag,bool (*m)(flext_base *,int,t_atom *)) { AddMethod(c,inlet,MakeSymbol(tag),m); } - static void AddMethod(t_classid c,int inlet,const char *tag,bool (*m)(flext_base *,int,const t_atom *)) { AddMethod(c,inlet,MakeSymbol(tag),m); } - static void AddMethod(t_classid c,int inlet,const char *tag,bool (*m)(flext_base *,t_symbol *,int,t_atom *)) { AddMethod(c,inlet,MakeSymbol(tag),m); } - static void AddMethod(t_classid c,int inlet,const char *tag,bool (*m)(flext_base *,const t_symbol *,int,const t_atom *)) { AddMethod(c,inlet,MakeSymbol(tag),m); } - static void AddMethod(t_classid c,int inlet,const char *tag,bool (*m)(flext_base *,t_symbol *&)) { AddMethod(c,inlet,MakeSymbol(tag),m); } - static void AddMethod(t_classid c,int inlet,const char *tag,bool (*m)(flext_base *,const t_symbol *&)) { AddMethod(c,inlet,MakeSymbol(tag),m); } - static void AddMethod(t_classid c,int inlet,const char *tag,bool (*m)(flext_base *,float &)) { AddMethod(c,inlet,MakeSymbol(tag),m); } - static void AddMethod(t_classid c,int inlet,const char *tag,bool (*m)(flext_base *,int &)) { AddMethod(c,inlet,MakeSymbol(tag),m); } - -//! @} FLEXT_C_CADDMETHOD - -// --- bind/unbind --------------------------------------- - - /*! \defgroup FLEXT_C_BIND Methods for binding a flext class to a symbol - - @{ - */ - - //! Bind object to a symbol - bool Bind(const t_symbol *sym); - //! Unbind object from a symbol - bool Unbind(const t_symbol *sym); - - //! Bind object to a symbol (as string) - bool Bind(const char *sym) { return Bind(MakeSymbol(sym)); } - //! Unbind object from a symbol (as string) - bool Unbind(const char *sym) { return Unbind(MakeSymbol(sym)); } - - /*! \brief Bind a method to a symbol - \param sym Symbol to bind to - \param meth Function to bind - \param data User data that is passed to the function - \return true on success - */ - bool BindMethod(const t_symbol *sym,bool (*meth)(flext_base *obj,t_symbol *sym,int argc,t_atom *argv,void *data),void *data = NULL); - /*! \brief Unbind a method from a symbol - \param sym Symbol to unbind from (if NULL... unbind all functions) - \param meth Method to unbind (if NULL ... unbind all functions bound to symbol) - \param data returns data pointer specified with BindMethod - \return true on success - */ - bool UnbindMethod(const t_symbol *sym,bool (*meth)(flext_base *obj,t_symbol *sym,int argc,t_atom *argv,void *data) = NULL,void **data = NULL); - /*! \brief Get data of bound method of a symbol - \param sym Symbol to bind to - \param meth Function to bind - \param data Reference to returned user data - \return true on success (symbol/method combination was found) - */ - bool GetBoundMethod(const t_symbol *sym,bool (*meth)(flext_base *obj,t_symbol *sym,int argc,t_atom *argv,void *data),void *&data); - - //! \brief Bind a method to a symbol (as string) - bool BindMethod(const char *sym,bool (*meth)(flext_base *obj,t_symbol *sym,int argc,t_atom *argv,void *data),void *data = NULL) { return BindMethod(MakeSymbol(sym),meth,data); } - //! \brief Unbind a method from a symbol (as string) - bool UnbindMethod(const char *sym,bool (*meth)(flext_base *obj,t_symbol *sym,int argc,t_atom *argv,void *data) = NULL,void **data = NULL) { return UnbindMethod(MakeSymbol(sym),meth,data); } - //! \brief Get data of bound method of a symbol (as string) - bool GetBoundMethod(const char *sym,bool (*meth)(flext_base *obj,t_symbol *sym,int argc,t_atom *argv,void *data),void *&data) { return GetBoundMethod(MakeSymbol(sym),meth,data); } - - /*! Unbind all symbol bindings - \note Memory associated to data pointers passed by BindMethod will not be freed! - */ - bool UnbindAll(); - -//! @} FLEXT_C_BIND - - // --- thread stuff ----------------------------------------------- - -#ifdef FLEXT_THREADS - /*! \defgroup FLEXT_C_THREAD Thread handling - - @{ - */ - - //! Start a thread for this object - bool StartThread(void (*meth)(thr_params *p),thr_params *p,const char * = NULL) { p->cl = this; return flext::LaunchThread(meth,p); } - - //! Terminate all threads of this object - bool StopThreads(); -#endif // FLEXT_THREADS - -//! @} FLEXT_C_THREAD - -// xxx internal stuff xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - -public: // needed by VC++ 6 - - enum xlettype { - xlet_none = 0, - xlet_float,xlet_int,xlet_sym,xlet_list,xlet_any, - xlet_LIST,xlet_ANY, // use AtomList and AtomAnything - xlet_sig - }; - -protected: - - FLEXT_CLASSDEF(flext_base)(); - - /*! \brief Set up inlets and outlets, method and attribute lists - */ - virtual bool Init(); - - /*! \brief Deallocate all kinds of stuff - */ - virtual void Exit(); - - - /*! \defgroup FLEXT_C_ATTR Attribute handling methods (object scope) - @{ - */ - - void AddAttrib(const t_symbol *attr,bool (*get)(flext_base *,float &),bool (*set)(flext_base *,float &)) { AddAttrib(attr,a_float,(methfun)get,(methfun)set); } - void AddAttrib(const t_symbol *attr,bool (*get)(flext_base *,int &),bool (*set)(flext_base *,int &)) { AddAttrib(attr,a_int,(methfun)get,(methfun)set); } - void AddAttrib(const t_symbol *attr,bool (*get)(flext_base *,bool &),bool (*set)(flext_base *,bool &)) { AddAttrib(attr,a_bool,(methfun)get,(methfun)set); } - void AddAttrib(const t_symbol *attr,bool (*get)(flext_base *,const t_symbol *&),bool (*set)(flext_base *,const t_symbol *&)) { AddAttrib(attr,a_symbol,(methfun)get,(methfun)set); } - void AddAttrib(const t_symbol *attr,bool (*get)(flext_base *,t_symptr &),bool (*set)(flext_base *,t_symptr &)) { AddAttrib(attr,a_symbol,(methfun)get,(methfun)set); } - void AddAttrib(const t_symbol *attr,bool (*get)(flext_base *,AtomList *&),bool (*set)(flext_base *,AtomList *&)) { AddAttrib(attr,a_LIST,(methfun)get,(methfun)set); } - void AddAttrib(const t_symbol *attr,bool (*get)(flext_base *,AtomAnything *&),bool (*set)(flext_base *,AtomAnything *&)) { AddAttrib(attr,a_ANY,(methfun)get,(methfun)set); } - void AddAttrib(const char *attr,bool (*get)(flext_base *,float &),bool (*set)(flext_base *,float &)) { AddAttrib(MakeSymbol(attr),get,set); } - void AddAttrib(const char *attr,bool (*get)(flext_base *,int &),bool (*set)(flext_base *,int &)) { AddAttrib(MakeSymbol(attr),get,set); } - void AddAttrib(const char *attr,bool (*get)(flext_base *,bool &),bool (*set)(flext_base *,bool &)) { AddAttrib(MakeSymbol(attr),get,set); } - void AddAttrib(const char *attr,bool (*get)(flext_base *,const t_symbol *&),bool (*set)(flext_base *,const t_symbol *&)) { AddAttrib(MakeSymbol(attr),get,set); } - void AddAttrib(const char *attr,bool (*get)(flext_base *,t_symptr &),bool (*set)(flext_base *,t_symptr &)) { AddAttrib(MakeSymbol(attr),get,set); } - void AddAttrib(const char *attr,bool (*get)(flext_base *,AtomList *&),bool (*set)(flext_base *,AtomList *&)) { AddAttrib(MakeSymbol(attr),get,set); } - void AddAttrib(const char *attr,bool (*get)(flext_base *,AtomAnything *&),bool (*set)(flext_base *,AtomAnything *&)) { AddAttrib(MakeSymbol(attr),get,set); } - -//! @} FLEXT_C_ATTR - - /*! \defgroup FLEXT_C_CATTR Attribute handling methods (class scope) - @{ - */ - - static void AddAttrib(t_classid c,const t_symbol *attr,bool (*get)(flext_base *,float &),bool (*set)(flext_base *,float &)) { AddAttrib(c,attr,a_float,(methfun)get,(methfun)set); } - static void AddAttrib(t_classid c,const t_symbol *attr,bool (*get)(flext_base *,int &),bool (*set)(flext_base *,int &)) { AddAttrib(c,attr,a_int,(methfun)get,(methfun)set); } - static void AddAttrib(t_classid c,const t_symbol *attr,bool (*get)(flext_base *,bool &),bool (*set)(flext_base *,bool &)) { AddAttrib(c,attr,a_bool,(methfun)get,(methfun)set); } - static void AddAttrib(t_classid c,const t_symbol *attr,bool (*get)(flext_base *,const t_symbol *&),bool (*set)(flext_base *,const t_symbol *&)) { AddAttrib(c,attr,a_symbol,(methfun)get,(methfun)set); } - static void AddAttrib(t_classid c,const t_symbol *attr,bool (*get)(flext_base *,t_symptr &),bool (*set)(flext_base *,t_symptr &)) { AddAttrib(c,attr,a_symbol,(methfun)get,(methfun)set); } - static void AddAttrib(t_classid c,const t_symbol *attr,bool (*get)(flext_base *,AtomList *&),bool (*set)(flext_base *,AtomList *&)) { AddAttrib(c,attr,a_LIST,(methfun)get,(methfun)set); } - static void AddAttrib(t_classid c,const t_symbol *attr,bool (*get)(flext_base *,AtomAnything *&),bool (*set)(flext_base *,AtomAnything *&)) { AddAttrib(c,attr,a_ANY,(methfun)get,(methfun)set); } - static void AddAttrib(t_classid c,const char *attr,bool (*get)(flext_base *,float &),bool (*set)(flext_base *,float &)) { AddAttrib(c,MakeSymbol(attr),get,set); } - static void AddAttrib(t_classid c,const char *attr,bool (*get)(flext_base *,int &),bool (*set)(flext_base *,int &)) { AddAttrib(c,MakeSymbol(attr),get,set); } - static void AddAttrib(t_classid c,const char *attr,bool (*get)(flext_base *,bool &),bool (*set)(flext_base *,bool &)) { AddAttrib(c,MakeSymbol(attr),get,set); } - static void AddAttrib(t_classid c,const char *attr,bool (*get)(flext_base *,const t_symbol *&),bool (*set)(flext_base *,const t_symbol *&)) { AddAttrib(c,MakeSymbol(attr),get,set); } - static void AddAttrib(t_classid c,const char *attr,bool (*get)(flext_base *,t_symptr &),bool (*set)(flext_base *,t_symptr &)) { AddAttrib(c,MakeSymbol(attr),get,set); } - static void AddAttrib(t_classid c,const char *attr,bool (*get)(flext_base *,AtomList *&),bool (*set)(flext_base *,AtomList *&)) { AddAttrib(c,MakeSymbol(attr),get,set); } - static void AddAttrib(t_classid c,const char *attr,bool (*get)(flext_base *,AtomAnything *&),bool (*set)(flext_base *,AtomAnything *&)) { AddAttrib(c,MakeSymbol(attr),get,set); } - -//! @} FLEXT_C_CATTR - - //! Dump an attribute to the attribute outlet - bool DumpAttrib(const t_symbol *attr) const; - //! Dump an attribute to the attribute outlet - bool DumpAttrib(const char *attr) const { return DumpAttrib(MakeSymbol(attr)); } - - // check for attribute symbol @ - static int CheckAttrib(int argc,const t_atom *argv); - // check for attribute symbol @ - static int CheckAttrib(const AtomList &args,int offset = 0) { return CheckAttrib(args.Count()-offset,args.Atoms()+offset)+offset; } - - //! List attributes - bool ListAttrib() const; - //! List attributes - void ListAttrib(AtomList &a) const; - //! Get an attribute value - bool GetAttrib(const t_symbol *s,AtomList &a) const; - //! Set an attribute value - bool SetAttrib(const t_symbol *s,int argc,const t_atom *argv); - //! Set an attribute value - bool SetAttrib(const t_symbol *s,const AtomList &a) { return SetAttrib(s,a.Count(),a.Atoms()); } - - // get and set the attribute - bool BangAttrib(const t_symbol *a); - // get and set the attribute - bool BangAttrib(const char *a) { return BangAttrib(MakeSymbol(a)); } - // get and set all (both get- and settables) - bool BangAttribAll(); - // show/hide the attribute - bool ShowAttrib(const t_symbol *a,bool show) const; - // show/hide the attribute - bool ShowAttrib(const char *a,bool show) { return ShowAttrib(MakeSymbol(a),show); } - - //! List methods - void ListMethods(AtomList &a,int inlet = 0) const; - -/*! \addtogroup FLEXT_C_INOUT - @{ -*/ - - //! \brief get a code for a list of inlets or outlets - unsigned long XletCode(xlettype tp = xlet_none,...); // end list with 0 (= tp_none) !! - - /*! \brief Add some inlets by a special code representing the types - \remark use XletCode function to get code value - */ - void AddInlets(unsigned long code); - - //! \brief Add one or more inlet(s) - void AddInlet(xlettype tp,int mult = 1,const char *desc = NULL); - - /*! \brief Add some inlets by a special code representing the types - \remark use XletCode function to get code value - */ - void AddOutlets(unsigned long code); - - //! \brief Add one or more outlet(s) - void AddOutlet(xlettype tp,int mult = 1,const char *desc = NULL); - - //! \brief Set the description of an indexed inlet - void DescInlet(int ix,const char *desc); - - //! \brief Set the description of an indexed outlet - void DescOutlet(int ix,const char *desc); - -//! @} FLEXT_C_INOUT - - -// method handling - - public: - - class AttrItem; - - class Item - { - public: - Item(AttrItem *a): attr(a),nxt(NULL) {} - virtual ~Item(); - - bool IsAttr() const { return attr != NULL; } - - AttrItem *attr; - Item *nxt; - }; - - class ItemSet - :public TablePtrMap - { - public: - virtual ~ItemSet(); - virtual void clear(); - }; - - /*! This class holds hashed item entries - \note not thread-safe! - */ - class FLEXT_SHARE ItemCont - { - public: - ItemCont(); - ~ItemCont(); - - int Min() const { return -1; } - int Max() const { return size-2; } - - bool Contained(int i) const { return i+1 < size; } - - //! Add an entry - void Add(Item *it,const t_symbol *tag,int inlet = 0); - //! Remove an entry - bool Remove(Item *it,const t_symbol *tag,int inlet,bool free); - //! Find an entry list in the Item array - Item *FindList(const t_symbol *tag,int inlet = 0); - - //! Get list for an inlet - ItemSet &GetInlet(int inlet = 0) - { - FLEXT_ASSERT(inlet >= Min() && inlet <= Max()); - return *cont[inlet+1]; - } - - //! Get counter for total members (for index of new item) - int Members() const { return members; } - - protected: - - void Resize(int nsz); - - int members; - int memsize,size; - ItemSet **cont; - }; - - //! \brief This represents an item of the method list - class MethItem: - public Item - { - public: - MethItem(AttrItem *conn = NULL); - virtual ~MethItem(); - - void SetArgs(methfun fun,int argc,metharg *args); - - int index; - int argc; - metharg *args; - methfun fun; - }; - - //! \brief This represents an item of the attribute list - class AttrItem: - public Item - { - public: - AttrItem(const t_symbol *tag,metharg tp,methfun fun,int flags); - - enum { - afl_get = 0x01, afl_set = 0x02, - afl_getset = afl_get|afl_set, - afl_shown = 0x08 - }; - - bool IsGet() const { return (flags&afl_getset) == afl_get; } - bool IsSet() const { return (flags&afl_getset) == afl_set; } - bool IsShown() const { return (flags&afl_shown) != 0; } - bool BothExist() const { return counter != NULL; } - AttrItem *Counterpart() { return counter; } - - int index; - int flags; - metharg argtp; - methfun fun; - AttrItem *counter; - const t_symbol *tag; - }; - - //! Represent a data value of an attribute - class AttrData: - public flext_root - { - public: - AttrData(): flags(0) {} - - enum { afl_save = 0x01,afl_init = 0x02,afl_inited = 0x04 }; - - void SetSave(bool s) { if(s) flags |= afl_save; else flags &= ~afl_save; } - bool IsSaved() const { return (flags&afl_save) != 0; } - void SetInit(bool s) { if(s) flags |= afl_init; else flags &= ~afl_init; } - bool IsInit() const { return (flags&afl_init) != 0; } - void SetInitValue(int argc,const t_atom *argv) { init(argc,argv); flags |= afl_inited; } - void SetInitValue(const AtomList &l) { SetInitValue(l.Count(),l.Atoms()); } - bool IsInitValue() const { return (flags&afl_inited) != 0; } - const AtomList &GetInitValue() const { return init; } - - AtomList init; - int flags; - }; - - class AttrDataCont - :public TablePtrMap - { - public: - virtual ~AttrDataCont(); - virtual void clear(); - }; - - // these outlet functions don't check for thread but send directly to the real-time system - void ToSysBang(int n) const { outlet *o = GetOut(n); if(o) { CRITON(); outlet_bang((t_outlet *)o); CRITOFF(); } } - void ToSysFloat(int n,float f) const { outlet *o = GetOut(n); if(o) { CRITON(); outlet_float((t_outlet *)o,f); CRITOFF(); } } - void ToSysInt(int n,int f) const { outlet *o = GetOut(n); if(o) { CRITON(); outlet_flint((t_outlet *)o,f); CRITOFF(); } } - void ToSysSymbol(int n,const t_symbol *s) const { outlet *o = GetOut(n); if(o) { CRITON(); outlet_symbol((t_outlet *)o,const_cast(s)); CRITOFF(); } } - void ToSysString(int n,const char *s) const { ToSysSymbol(n,MakeSymbol(s)); } - void ToSysList(int n,int argc,const t_atom *argv) const { outlet *o = GetOut(n); if(o) { CRITON(); outlet_list((t_outlet *)o,const_cast(sym_list),argc,(t_atom *)argv); CRITOFF(); } } - void ToSysList(int n,const AtomList &list) const { ToSysList(n,list.Count(),list.Atoms()); } - void ToSysAnything(int n,const t_symbol *s,int argc,const t_atom *argv) const { outlet *o = GetOut(n); if(o) { CRITON(); outlet_anything((t_outlet *)o,const_cast(s),argc,(t_atom *)argv); CRITOFF(); } } - void ToSysAnything(int n,const AtomAnything &any) const { ToSysAnything(n,any.Header(),any.Count(),any.Atoms()); } - void ToSysAnything(int n,const t_symbol *s,const AtomList &list) const { ToSysAnything(n,s,list.Count(),list.Atoms()); } - - void ToSysBool(int n,bool f) const { ToSysInt(n,f?1:0); } - void ToSysAtom(int n,const t_atom &at) const; - - static void ToSysMsg(MsgBundle *mb); - - // add class method handlers - static void AddMessageMethods(t_class *c,bool dsp,bool dspin); - -private: - class pxbnd_object; -public: - - //! \brief This represents an item of the symbol-bound method list - class BindItem: - public Item - { - public: - BindItem(bool (*f)(flext_base *,t_symbol *s,int,t_atom *,void *),pxbnd_object *px); - virtual ~BindItem(); - - void Unbind(const t_symbol *s); - - bool (*fun)(flext_base *,t_symbol *s,int,t_atom *,void *); - pxbnd_object *px; - }; - - ItemCont *ThMeths() { if(!methhead) methhead = new ItemCont; return methhead; } - static ItemCont *ClMeths(t_classid c); - - //! \brief This is the central function to add message handlers. It is used by all other AddMethod incarnations. - static void AddMethod(ItemCont *ma,int inlet,const t_symbol *tag,methfun fun,metharg tp,...); - - ItemCont *ThAttrs() { return attrhead; } - static ItemCont *ClAttrs(t_classid c); - - static void AddAttrib(ItemCont *aa,ItemCont *ma,const t_symbol *attr,metharg tp,methfun gfun,methfun sfun); - void AddAttrib(const t_symbol *attr,metharg tp,methfun gfun,methfun sfun); - static void AddAttrib(t_classid c,const t_symbol *attr,metharg tp,methfun gfun,methfun sfun); - -private: - - static inline flext_base *thisObject(flext_hdr *c) { return FLEXT_CAST(c->data); } - - static void Setup(t_classid c); - - //! \brief This represents either an inlet or outlet during construction - class FLEXT_SHARE xlet { - public: - xlet(); - ~xlet(); - - xlettype tp; - char *desc; - - void Desc(const char *c); - }; - - static xlet inlist[]; - static xlet outlist[]; - - //! current message tag - static const t_symbol *curtag; - //! number of message and signal inlets/outlets - unsigned char incnt,outcnt,insigs,outsigs; - - outlet **outlets; - - union t_any { - float ft; - int it; - bool bt; - t_symbol *st; -#if FLEXT_SYS == FLEXT_SYS_PD - t_gpointer *pt; -#endif - void *vt; - }; - - typedef bool (*methfun_V)(flext_base *c,int argc,t_atom *argv); - typedef bool (*methfun_A)(flext_base *c,const t_symbol *s,int argc,t_atom *argv); - typedef bool (*methfun_0)(flext_base *c); - typedef bool (*methfun_1)(flext_base *c,t_any &); - typedef bool (*methfun_2)(flext_base *c,t_any &,t_any &); - typedef bool (*methfun_3)(flext_base *c,t_any &,t_any &,t_any &); - typedef bool (*methfun_4)(flext_base *c,t_any &,t_any &,t_any &,t_any &); - typedef bool (*methfun_5)(flext_base *c,t_any &,t_any &,t_any &,t_any &,t_any &); - - mutable ItemCont *methhead; - mutable ItemCont *bindhead; - - bool FindMeth(int inlet,const t_symbol *s,int argc,const t_atom *argv); - bool FindMethAny(int inlet,const t_symbol *s,int argc,const t_atom *argv); - bool TryMethTag(Item *lst,const t_symbol *tag,int argc,const t_atom *argv); - bool TryMethSym(Item *lst,const t_symbol *s); - bool TryMethAny(Item *lst,const t_symbol *s,int argc,const t_atom *argv); - - mutable ItemCont *attrhead; - mutable AttrDataCont *attrdata; - - AttrItem *FindAttrib(const t_symbol *tag,bool get,bool msg = false) const; - - bool InitAttrib(int argc,const t_atom *argv); - - bool DumpAttrib(const t_symbol *tag,AttrItem *a) const; - bool GetAttrib(const t_symbol *tag,AttrItem *a,AtomList &l) const; - bool SetAttrib(const t_symbol *tag,AttrItem *a,int argc,const t_atom *argv); - bool SetAttrib(const t_symbol *tag,AttrItem *a,const AtomList &l) { return SetAttrib(tag,a,l.Count(),l.Atoms()); } - // get and set the attribute - bool BangAttrib(const t_symbol *tag,AttrItem *a); - // show/hide the attribute - bool ShowAttrib(AttrItem *a,bool show) const; - - static bool cb_ListMethods(flext_base *c,int argc,const t_atom *argv); - static bool cb_ListAttrib(flext_base *c) { return c->ListAttrib(); } - - // queue stuff - - //! Start message queue - static void StartQueue(); -#if FLEXT_QMODE == 2 - //! Queue worker function - static void QWorker(thr_params *); -#endif - //! Flush messages in the queue - static void QFlush(flext_base *th = NULL); - -#if FLEXT_SYS == FLEXT_SYS_PD - - static void SetGfx(t_classid c); - -#ifndef FLEXT_NOATTREDIT - // attribute editor - static bool cb_AttrDialog(flext_base *c,int argc,const t_atom *argv); - static void cb_GfxProperties(flext_hdr *c, t_glist *); -#endif - -#ifdef FLEXT_ATTRHIDE - static void cb_GfxVis(flext_hdr *c, t_glist *gl, int vis); - static void cb_GfxSave(flext_hdr *c, t_binbuf *b); - static void cb_GfxSelect(flext_hdr *x, struct _glist *glist, int state); - - void BinbufArgs(t_binbuf *b,t_binbuf *args,bool withname,bool transdoll); - void BinbufAttr(t_binbuf *b,bool transdoll); -#endif - - static void cb_bang(flext_hdr *c); - static void cb_float(flext_hdr *c,t_float f); - static void cb_symbol(flext_hdr *c,const t_symbol *s); -// static void cb_pointer(fltext_hdr *c,const t_gpointer *p); - static void cb_anything(flext_hdr *c,const t_symbol *s,int argc,t_atom *argv); - - // proxy object (for additional inlets) - static t_class *px_class; - - struct px_object // no virtual table! - { - t_object obj; // MUST reside at memory offset 0 - flext_base *base; - int index; - - void init(flext_base *b,int ix) { base = b; index = ix; } - static void px_bang(px_object *c); - static void px_float(px_object *c,t_float f); - static void px_symbol(px_object *c,const t_symbol *s); -// static void px_pointer(px_object *c,const t_gpointer *p); - static void px_anything(px_object *c,const t_symbol *s,int argc,t_atom *argv); - }; - - static void cb_px_ft1(flext_hdr *c,t_float f); - static void cb_px_ft2(flext_hdr *c,t_float f); - static void cb_px_ft3(flext_hdr *c,t_float f); - static void cb_px_ft4(flext_hdr *c,t_float f); - static void cb_px_ft5(flext_hdr *c,t_float f); - static void cb_px_ft6(flext_hdr *c,t_float f); - static void cb_px_ft7(flext_hdr *c,t_float f); - static void cb_px_ft8(flext_hdr *c,t_float f); - static void cb_px_ft9(flext_hdr *c,t_float f); - -#elif FLEXT_SYS == FLEXT_SYS_MAX - typedef object px_object; - static void cb_bang(flext_hdr *c); - static void cb_float(flext_hdr *c,double f); - static void cb_int(flext_hdr *c,long v); - static void cb_anything(flext_hdr *c,const t_symbol *s,short argc,t_atom *argv); - - static void cb_px_in1(flext_hdr *c,long v); - static void cb_px_in2(flext_hdr *c,long v); - static void cb_px_in3(flext_hdr *c,long v); - static void cb_px_in4(flext_hdr *c,long v); - static void cb_px_in5(flext_hdr *c,long v); - static void cb_px_in6(flext_hdr *c,long v); - static void cb_px_in7(flext_hdr *c,long v); - static void cb_px_in8(flext_hdr *c,long v); - static void cb_px_in9(flext_hdr *c,long v); - - static void cb_px_ft1(flext_hdr *c,double f); - static void cb_px_ft2(flext_hdr *c,double f); - static void cb_px_ft3(flext_hdr *c,double f); - static void cb_px_ft4(flext_hdr *c,double f); - static void cb_px_ft5(flext_hdr *c,double f); - static void cb_px_ft6(flext_hdr *c,double f); - static void cb_px_ft7(flext_hdr *c,double f); - static void cb_px_ft8(flext_hdr *c,double f); - static void cb_px_ft9(flext_hdr *c,double f); -#endif - - px_object **inlets; - - // --------- symbol-bound proxy - - static t_class *pxbnd_class; - - class pxbnd_object: - public flext_root - // no virtual table! - { - public: - t_object obj; // MUST reside at memory offset 0 - flext_base *base; - BindItem *item; - void *data; - - void init(flext_base *b,BindItem *it,void *d) { base = b; item = it; data = d; } - static void px_method(pxbnd_object *c,const t_symbol *s,int argc,t_atom *argv); - }; - - //! create proxy class for symbol binding - static void SetupBindProxy(); - - // --------- - - //! set up inlet proxies - static void SetProxies(t_class *c,bool dsp); - - //! initialize inlets (according to class or object constructor definitions) - bool InitInlets(); - - //! initialize outlets (according to class or object constructor definitions) - bool InitOutlets(); - - // callback functions - - static void cb_loadbang(flext_hdr *c); - -#if FLEXT_SYS == FLEXT_SYS_MAX - char **indesc,**outdesc; - - static void cb_assist(flext_hdr *c,void *b,long msg,long arg,char *s); - static void cb_click (flext_hdr *c, Point pt, short mods); - - static void cb_dsp(flext_hdr *c,t_signal **s,short *count); -#elif FLEXT_SYS == FLEXT_SYS_PD - static void cb_click(flext_hdr *z,t_floatarg xpos,t_floatarg ypos,t_floatarg shift,t_floatarg ctrl,t_floatarg alt); - - static void cb_dsp(flext_hdr *c,t_signal **s); -#endif -}; - -#endif diff --git a/externals/grill/flext/source/flcontainers.h b/externals/grill/flext/source/flcontainers.h deleted file mode 100644 index 2b33c4e5..00000000 --- a/externals/grill/flext/source/flcontainers.h +++ /dev/null @@ -1,473 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flcontainers.h - \brief Lock-free container classes - - This code has been adapted from the MidiShare project (c)Grame - http://midishare.sourceforge.net -*/ - -#ifndef __FLCONTAINERS_H -#define __FLCONTAINERS_H - - -#include "flprefix.h" - - -// define that precautiously... -// it's faster without that but we can't really know... -#define __SMP__ - - -class FLEXT_SHARE Lifo -{ -public: - class Cell - { - friend class Lifo; - friend class Fifo; - private: - Cell *link; - }; - - inline Lifo() { Init(); } - - inline void Init() { ic = oc = 0; top = NULL; } - - inline Cell *Avail() { return (Cell *)top; } - -#if defined(_MSC_VER) && FLEXT_CPU == FLEXT_CPU_IA32 - #ifdef __SMP__ - #define LOCK lock - #else - #define LOCK - #endif - - inline void Push(Cell *cell) - { - __asm - { - push eax - push ebx - push ecx - push edx - push esi - mov esi, this - mov eax, dword ptr [esi] - mov ecx, cell - mov edx, dword ptr [esi+4] - _loop: - mov ebx, eax - inc ebx - mov [ecx], edx - LOCK cmpxchg8b qword ptr [esi] - jnz _loop - pop esi - pop edx - pop ecx - pop ebx - pop eax - } - } - - inline Cell *Pop() - { - __asm - { - push ebx - push ecx - push edx - push esi - mov esi, this - add esi, 4 /* point to top */ - mov edx, dword ptr [esi+4] - mov eax, dword ptr [esi] - test eax, eax - jz _end - _loop: - mov ebx, dword ptr [eax] - mov ecx, edx - inc ecx - LOCK cmpxchg8b qword ptr [esi] - jz _end - test eax, eax - jnz _loop - _end: - pop esi - pop edx - pop ecx - pop ebx - } - } - - inline size_t Size() const { return ic-oc; } -#elif defined(__GNUC__) && FLEXT_CPU == FLEXT_CPU_IA32 - #ifndef SMPLOCK - # ifdef __SMP__ - # define SMPLOCK "lock ; " - # else - # define SMPLOCK "" - # endif - #endif - - inline void Push(Cell *cl) - { - __asm__ __volatile__ ( - "# LFPUSH \n\t" - "pushl %%ebx \n\t" - "pushl %%ecx \n\t" - "movl 0(%%esi), %%eax \n\t" - "movl 4(%%esi), %%edx \n" - "1: \t" - "movl %%eax, %%ebx \n\t" - "incl %%ebx \n\t" - "movl %%edx, (%%ecx) \n\t" - SMPLOCK "cmpxchg8b (%%esi) \n\t" - "jnz 1b \n\t" - "popl %%ecx \n\t" - "popl %%ebx \n\t" - :/* no output */ - :"S" (this), "c" (cl) - :"memory", "eax", "edx"); - } - - inline Cell *Pop() - { - Cell *v=0; - __asm__ __volatile__ ( - "# LFPOP \n\t" - "pushl %%ebx \n\t" - "pushl %%ecx \n\t" - "movl 4(%%esi), %%edx \n\t" - "movl (%%esi), %%eax \n\t" - "testl %%eax, %%eax \n\t" - "jz 2f \n" - "1: \t" - "movl (%%eax), %%ebx \n\t" - "movl %%edx, %%ecx \n\t" - "incl %%ecx \n\t" - SMPLOCK "cmpxchg8b (%%esi) \n\t" - "jz 2f \n\t" - "testl %%eax, %%eax \n\t" - "jnz 1b \n" - "2: \t" - "popl %%ecx \n\t" - "popl %%ebx \n\t" - :"=a" (v) - :"S" (&this->top) - :"memory", "edx"); - return v; - } - - inline size_t Size() const - { - size_t n; - __asm__ __volatile__ ( - "# LFSIZE \n\t" - "movl 8(%%esi), %%edx \n\t" - "movl (%%esi), %%eax \n\t" - "subl %%edx, %%eax \n\t" - :"=a" (n) - :"S" (this) - :"memory", "edx"); - return n; - } -#elif 0 //defined(__GNUC__) && FLEXT_CPU == FLEXT_CPU_X86_64 -/* attention - this only works for EMT64 or newer revisions of AMD 64-bit cpus */ - #ifndef SMPLOCK - # ifdef __SMP__ - # define SMPLOCK "lock ; " - # else - # define SMPLOCK "" - # endif - #endif - - inline void Push(Cell *cl) - { - __asm__ __volatile__ ( - "# LFPUSH \n\t" - "push %%rbx \n\t" - "push %%rcx \n\t" - "mov 0(%%rsi), %%rax \n\t" - "mov 8(%%rsi), %%rdx \n" - "1: \t" - "mov %%rax, %%rbx \n\t" - "inc %%rbx \n\t" - "mov %%rdx, (%%rcx) \n\t" - SMPLOCK "cmpxchg16b (%%rsi) \n\t" - "jnz 1b \n\t" - "pop %%rcx \n\t" - "pop %%rbx \n\t" - :/* no output */ - :"S" (this), "c" (cl) - :"memory", "rax", "rdx"); - } - - inline Cell *Pop() - { - Cell *v=0; - __asm__ __volatile__ ( - "# LFPOP \n\t" - "push %%rbx \n\t" - "push %%rcx \n\t" - "mov 8(%%rsi), %%rdx \n\t" - "mov (%%rsi), %%rax \n\t" - "test %%rax, %%rax \n\t" - "jz 2f \n" - "1: \t" - "mov (%%rax), %%rbx \n\t" - "mov %%rdx, %%rcx \n\t" - "inc %%rcx \n\t" - SMPLOCK "cmpxchg16b (%%rsi) \n\t" - "jz 2f \n\t" - "test %%rax, %%rax \n\t" - "jnz 1b \n" - "2: \t" - "pop %%rcx \n\t" - "pop %%rbx \n\t" - :"=a" (v) - :"S" (&this->top) - :"memory", "rdx"); - return v; - } - - inline size_t Size() const - { - size_t n; - __asm__ __volatile__ ( - "# LFSIZE \n\t" - "mov 16(%%rsi), %%rdx \n\t" - "mov (%%rsi), %%rax \n\t" - "sub %%rdx, %%rax \n\t" - :"=a" (n) - :"S" (this) - :"memory", "rdx"); - return n; - } - -#elif defined(__GNUC__) && FLEXT_CPU == FLEXT_CPU_PPC - inline void Push(register Cell *cl) - { - register volatile long t1; - register long t2=0; - asm volatile ( - "# LFPUSH \n" - "0: \n" - " lwarx %0, %3, %1 \n" - " stw %0, 0(%2) \n" - " sync \n" - " stwcx. %2, %3, %1 \n" - " bne- 0b \n" - "0: \n" - " lwarx %0, %3, %4 \n" - " addi %0, %0, 1 \n" - " sync \n" - " stwcx. %0, %3, %4 \n" - " bne- 0b \n" - : "=r" (t1) - : "r" (&this->top), "r" (cl), "r" (t2), "r" (&this->oc), "0" (t1) - : "r0" /* prevents using r0 because of the ambiguity of 'addi' coding: */ - /* gcc version 2.95.3 20010315 (release - Linux-Mandrake 8.0 for PPC) */ - /* compiles the instruction "addi 0, 0, n" as li 0, n */ - ); - } - - inline Cell *Pop() - { - register Cell *result; - register volatile long a, b; - register long c=0; - asm volatile ( - "# LFPOP \n" - "0: \n" - " lwarx %4, %1, %2 \n" /* creates a reservation on lf */ - " cmpwi %4, 0 \n" /* test if the lifo is empty */ - " beq- 1f \n" - " lwz %5, 0(%4) \n" /* next cell in b */ - " sync \n" /* synchronize instructions */ - " stwcx. %5, %1, %2 \n" /* if the reservation is not altered */ - /* modify lifo top */ - " bne- 0b \n" /* otherwise: loop and try again */ - "0: \n" - " lwarx %5, %1, %3 \n" /* creates a reservation on lf->count */ - " addi %5, %5, -1 \n" /* dec count */ - " sync \n" /* synchronize instructions */ - " stwcx. %5, %1, %3 \n" /* conditionnal store */ - " bne- 0b \n" - "1: \n" - " mr %0, %4 \n" - :"=r" (result), "=r" (c) - : "r" (&this->top), "r" (&this->oc), "r" (a), "r" (b), "1" (c) - : "r0" /* prevents using r0 because of the ambiguity of 'addi' coding: */ - /* gcc version 2.95.3 20010315 (release - Linux-Mandrake 8.0 for PPC) */ - /* compiles the instruction "addi 0, 0, n" as li 0, n */ - ); - return result; - } - - inline size_t Size() const { return oc; } - -#else - // no lock free code available for this compiler/platform - - inline void Push(Cell *c) - { -#ifdef FLEXT_THREADS - mutex.Lock(); -#endif - c->link = (Cell *)top; - top = c; - ++oc; -#ifdef FLEXT_THREADS - mutex.Unlock(); -#endif - } - - inline Cell *Pop() - { - if(top) { - Cell *r; -#ifdef FLEXT_THREADS - mutex.Lock(); -#endif - r = (Cell *)top; - top = r->link; - --oc; -#ifdef FLEXT_THREADS - mutex.Unlock(); -#endif - return r; - } - else - return NULL; - } - - inline size_t Size() const { return oc; } - -private: -#ifdef FLEXT_THREADS - flext::ThrMutex mutex; -#endif - -#endif - -private: - // don't change order! - volatile size_t ic; // input (push) count - volatile Cell *top; // top of the stack - volatile size_t oc; // output (pop) count -#ifdef __POWERPC__ - size_t unused[5]; // lifo size must be at least 32 bytes - // to avoid livelock in multiprocessor -#endif -}; - -template -class TypedLifo - : public Lifo -{ -public: - inline T *Avail() { return static_cast(Lifo::Avail()); } - inline void Push(T *c) { Lifo::Push(static_cast(c)); } - inline T *Pop() { return static_cast(Lifo::Pop()); } -}; - -template -class PooledLifo - : public TypedLifo -{ -public: - inline T *New() { T *n = reuse.Pop(); return n?n:new T; } - inline size_t Size() const { return TypedLifo::Size(); } - inline void Free(T *p) { if(reuse.Size() < Size()*M+O) reuse.Push(p); else delete p; } -private: - TypedLifo reuse; -}; - - -class FLEXT_SHARE Fifo -{ -public: - typedef Lifo::Cell Cell; - - void Init() { in.Init(); out.Init(); } - - inline size_t Size() const { return in.Size()+out.Size(); } - - inline void Put(Cell *cl) { in.Push(cl); } - - Cell *Get() - { - Cell *v1 = out.Pop(); - if(!v1) { - v1 = in.Pop(); - if(v1) - for(Cell *v2; (v2 = in.Pop()) != NULL; v1 = v2) - out.Push(v1); - } - return v1; - } - - Cell *Avail() - { - Cell *v1 = out.Avail(); - if(v1) - return v1; - else { - for(Cell *v2; (v2 = in.Pop()) != NULL; ) - out.Push(v2); - return out.Avail(); - } - } - - Cell *Clear() - { - Cell *first = Get(); - if(!first) return NULL; - - Cell *next,*cur = first; - while((next = Get()) != NULL) { - cur->link = next; - cur = next; - } - cur->link = NULL; - - Init(); - return first; - } - - Lifo in,out; -}; - -template -class TypedFifo - : public Fifo -{ -public: - inline T *Avail() { return static_cast(Fifo::Avail()); } - inline void Put(T *c) { Fifo::Put(static_cast(c)); } - inline T *Get() { return static_cast(Fifo::Get()); } - inline T *Clear() { return static_cast(Fifo::Clear()); } -}; - -template -class PooledFifo - : public TypedFifo -{ -public: - inline T *New() { T *n = reuse.Pop(); return n?n:new T; } - inline size_t Size() const { return TypedFifo::Size(); } - inline void Free(T *p) { if(reuse.Size() < Size()*M+O) reuse.Push(p); else delete p; } -private: - TypedLifo reuse; -}; - -#endif diff --git a/externals/grill/flext/source/flcwmax-thr.h b/externals/grill/flext/source/flcwmax-thr.h deleted file mode 100644 index 4167be9f..00000000 --- a/externals/grill/flext/source/flcwmax-thr.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2003 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flcwmax-thr.h - \brief Prefix file for CodeWarrior projects - OS 9 threaded version. -*/ - -#ifndef _FLEXT_CW_MAX_THR_H -#define _FLEXT_CW_MAX_THR_H - -#define FLEXT_THREADS - -/* - old CodeWarrior version (<= 6) don't have sigset_t defined which - is needed for pthreads -*/ -#if defined(__MWERKS__) && (__MWERKS__ == 1) // read __MWERKS__ numbering starts with CW7 - typedef unsigned int sigset_t; - #define _CW_NOPRECOMP // no precompiled headers -#endif - -#include "flcwmax.h" - -#endif diff --git a/externals/grill/flext/source/flcwmax-x-thr.h b/externals/grill/flext/source/flcwmax-x-thr.h deleted file mode 100644 index 93b78289..00000000 --- a/externals/grill/flext/source/flcwmax-x-thr.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2003 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flcwmax-x-thr.h - \brief Prefix file for CodeWarrior projects - OS X threaded version. -*/ - -#ifndef _FLEXT_CW_MAX_X_THR_H -#define _FLEXT_CW_MAX_X_THR_H - -#define FLEXT_THREADS - -/* - old CodeWarrior version (<= 6) don't have sigset_t defined which - is needed for pthreads -*/ -#if defined(__MWERKS__) && (__MWERKS__ == 1) // read __MWERKS__ numbering starts with CW7 - typedef unsigned int sigset_t; - #define _CW_NOPRECOMP // no precompiled headers -#endif - -#include "flcwmax-x.h" - -#endif diff --git a/externals/grill/flext/source/flcwmax-x.h b/externals/grill/flext/source/flcwmax-x.h deleted file mode 100644 index e1e340d2..00000000 --- a/externals/grill/flext/source/flcwmax-x.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2003 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flcwmax-x.h - \brief Prefix file for CodeWarrior projects - OS X version. -*/ - -#ifndef _FLEXT_CW_MAX_X_H -#define _FLEXT_CW_MAX_X_H - -//#define TARGET_API_MAC_CARBON 1 -#define _POSIX_C_SOURCE -#define _POSIX_SOURCE - -#include "flcwmax.h" - -#endif diff --git a/externals/grill/flext/source/flcwmax.h b/externals/grill/flext/source/flcwmax.h deleted file mode 100644 index 4d108e2e..00000000 --- a/externals/grill/flext/source/flcwmax.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2003 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flcwmax.h - \brief Prefix file for CodeWarrior projects - OS 9 version. -*/ - -#ifndef _FLEXT_CW_MAX_H -#define _FLEXT_CW_MAX_H - -#ifndef __MWERKS__ - #error "This header file is for CodeWarrior only." -#endif - -#define FLEXT_SYS 1 -#define FLEXT_USE_SIMD - -#ifndef _CW_NOPRECOMP - #include -#endif - -#if /*__option(sym) ||*/ !__option(opt_dead_code) - #pragma message("Optimization disabled -> Compiling a debug version (with FLEXT_DEBUG)") - #define FLEXT_DEBUG -#endif - -/* #define _LOG */ - -#endif diff --git a/externals/grill/flext/source/flcwpd-x-thr.h b/externals/grill/flext/source/flcwpd-x-thr.h deleted file mode 100644 index d3075069..00000000 --- a/externals/grill/flext/source/flcwpd-x-thr.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2003 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/* This is the prefix file for CodeWarrior projects - OS X version */ - -#ifndef _FLEXT_CW_PD_X_THR_H -#define _FLEXT_CW_PD_X_THR_H - -#define FLEXT_THREADS - -#if 0 -/* - old CodeWarrior version (<= 6) don't have sigset_t defined which - is needed for pthreads -*/ -#if defined(__MWERKS__) && (__MWERKS__ <= 0x6000) - typedef unsigned int sigset_t; - #define _CW_NOPRECOMP // no precompiled headers -#endif -#endif - -#include "flcwpd-x.h" - -#endif diff --git a/externals/grill/flext/source/flcwpd-x.h b/externals/grill/flext/source/flcwpd-x.h deleted file mode 100644 index f6b5192b..00000000 --- a/externals/grill/flext/source/flcwpd-x.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2003 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/* This is the prefix file for CodeWarrior projects - OS X version */ - -#ifndef _FLEXT_CW_PD_X_H -#define _FLEXT_CW_PD_X_H - -#ifndef __MWERKS__ - #error "This header file is for CodeWarrior only." -#endif - -#define FLEXT_SYS 2 -#define FLEXT_USE_SIMD - -#define TARGET_API_MAC_CARBON 1 -#define _POSIX_C_SOURCE - -#ifndef _CW_NOPRECOMP -// #include -// #include -#endif - -#if __option(sym) || !__option(opt_dead_code) - #define FLEXT_DEBUG -#endif - -/* #define _LOG */ - -#endif diff --git a/externals/grill/flext/source/fldefs.h b/externals/grill/flext/source/fldefs.h deleted file mode 100644 index fd31506b..00000000 --- a/externals/grill/flext/source/fldefs.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file fldefs.h - \brief This file includes all the #define header files -*/ - -#ifndef __FLEXT_DEFS_H -#define __FLEXT_DEFS_H - -/*! \defgroup FLEXT_DEFS Definitions for basic flext functionality - @{ -*/ - -/*! \brief Switch for compilation of derived virtual classes - \remark These need dynamic type casts (and RTTI, naturally) - \ingroup FLEXT_GLOBALS -*/ -#ifdef FLEXT_VIRT -#define FLEXT_CAST dynamic_cast -#else -#define FLEXT_CAST static_cast -#endif - -//! @} FLEXT_DEFS - -#include "fldefs_hdr.h" - -#include "fldefs_setup.h" - - -// ==================================================================================== - -/*! \defgroup FLEXT_D_METHOD Declarations for flext methods - @{ -*/ - -#include "fldefs_methcb.h" -#include "fldefs_meththr.h" -#include "fldefs_methadd.h" -#include "fldefs_methbind.h" -#include "fldefs_methcall.h" - -//! @} FLEXT_D_METHOD - - - -#ifdef FLEXT_ATTRIBUTES - -/*! \defgroup FLEXT_D_ATTRIB Attribute definition - \note These have to reside inside the class declaration - @{ -*/ - -#include "fldefs_attrcb.h" -#include "fldefs_attrvar.h" -#include "fldefs_attradd.h" - -//! @} FLEXT_D_ATTRIB - -#endif // FLEXT_ATTRIBUTES - -#endif // __FLEXT_DEFS_H diff --git a/externals/grill/flext/source/fldefs_attradd.h b/externals/grill/flext/source/fldefs_attradd.h deleted file mode 100644 index de48b0a4..00000000 --- a/externals/grill/flext/source/fldefs_attradd.h +++ /dev/null @@ -1,121 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file fldefs_attradd.h - \brief This file contains all #defines for actual usage - -*/ - -#ifndef __FLEXT_DEFS_ATTRADD_H -#define __FLEXT_DEFS_ATTRADD_H - - -/*! \defgroup FLEXT_D_CADDATTR Announce object attributes at class scope - \ingroup FLEXT_D_ATTRIB - \note These can only be used at class construction time - @{ -*/ - -//! Add handler for a gettable attribute -#define FLEXT_CADDATTR_GET(CL,NAME,GFUN) \ -\ -AddAttrib(CL,flext::MakeSymbol(NAME),(FLEXT_GET_PRE(GFUN)),NULL) - -//! Add handler for a settable attribute -#define FLEXT_CADDATTR_SET(CL,NAME,SFUN) \ -\ -AddAttrib(CL,flext::MakeSymbol(NAME),NULL,(FLEXT_SET_PRE(SFUN))) - -//! Add handlers for a both get- and settable attribute -#define FLEXT_CADDATTR_VAR(CL,NAME,GFUN,SFUN) \ -\ -AddAttrib(CL,flext::MakeSymbol(NAME),(FLEXT_GET_PRE(GFUN)),(FLEXT_SET_PRE(SFUN))) - -//! Add handlers for a both get- and settable attribute -#define FLEXT_CADDATTR_VAR1(CL,NAME,FUN) \ -\ -AddAttrib(CL,flext::MakeSymbol(NAME),(FLEXT_GET_PRE(FUN)),(FLEXT_SET_PRE(FUN))) - - -//! Add handler for a gettable enum attribute -#define FLEXT_CADDATTR_GET_E(CL,NAME,GFUN) \ -\ -AddAttrib(CL,flext::MakeSymbol(NAME),(bool (*)(flext_base *,int &))(FLEXT_GET_PRE(GFUN)),NULL) - -//! Add handler for a settable enum attribute -#define FLEXT_CADDATTR_SET_E(CL,NAME,SFUN) \ -\ -AddAttrib(CL,flext::MakeSymbol(NAME),NULL,(bool (*)(flext_base *,int &))(FLEXT_SET_PRE(SFUN))) - -//! Add handlers for a both get- and settable enum attribute -#define FLEXT_CADDATTR_VAR_E(CL,NAME,GFUN,SFUN) \ -\ -AddAttrib(CL,flext::MakeSymbol(NAME),(bool (*)(flext_base *,int &))(FLEXT_GET_PRE(GFUN)),(bool (*)(flext_base *,int &))(FLEXT_SET_PRE(SFUN))) - -//! Add handlers for a both get- and settable enum attribute -#define FLEXT_CADDATTR_VAR1_E(CL,NAME,FUN) \ -\ -AddAttrib(CL,flext::MakeSymbol(NAME),(bool (*)(flext_base *,int &))(FLEXT_GET_PRE(FUN)),(bool (*)(flext_base *,int &))(FLEXT_SET_PRE(FUN))) - -//! @} FLEXT_D_CADDATTR - - -/*! \defgroup FLEXT_D_ADDATTR Announce object attributes - \ingroup FLEXT_D_ATTRIB - \note These can only be used at object construction time - \note (in constructor or in Init() function before call to parent's Init()) - @{ -*/ - -//! Add handler for a gettable attribute -#define FLEXT_ADDATTR_GET(NAME,GFUN) \ -\ -AddAttrib(flext::MakeSymbol(NAME),(FLEXT_GET_PRE(GFUN)),NULL) - -//! Add handler for a settable attribute -#define FLEXT_ADDATTR_SET(NAME,SFUN) \ -\ -AddAttrib(flext::MakeSymbol(NAME),NULL,(FLEXT_SET_PRE(SFUN))) - -//! Add handlers for a both get- and settable attribute -#define FLEXT_ADDATTR_VAR(NAME,GFUN,SFUN) \ -\ -AddAttrib(flext::MakeSymbol(NAME),(FLEXT_GET_PRE(GFUN)),(FLEXT_SET_PRE(SFUN))) - -//! Add handlers for a both get- and settable attribute -#define FLEXT_ADDATTR_VAR1(NAME,FUN) \ -\ -AddAttrib(flext::MakeSymbol(NAME),(FLEXT_GET_PRE(FUN)),(FLEXT_SET_PRE(FUN))) - - -//! Add handler for a gettable enum attribute -#define FLEXT_ADDATTR_GET_E(NAME,GFUN) \ -\ -AddAttrib(flext::MakeSymbol(NAME),(bool (*)(flext_base *,int &))(FLEXT_GET_PRE(GFUN)),NULL) - -//! Add handler for a settable enum attribute -#define FLEXT_ADDATTR_SET_E(NAME,SFUN) \ -\ -AddAttrib(flext::MakeSymbol(NAME),NULL,(bool (*)(flext_base *,int &))(FLEXT_SET_PRE(SFUN))) - -//! Add handlers for a both get- and settable enum attribute -#define FLEXT_ADDATTR_VAR_E(NAME,GFUN,SFUN) \ -\ -AddAttrib(flext::MakeSymbol(NAME),(bool (*)(flext_base *,int &))(FLEXT_GET_PRE(GFUN)),(bool (*)(flext_base *,int &))(FLEXT_SET_PRE(SFUN))) - -//! Add handlers for a both get- and settable enum attribute -#define FLEXT_ADDATTR_VAR1_E(NAME,FUN) \ -\ -AddAttrib(flext::MakeSymbol(NAME),(bool (*)(flext_base *,int &))(FLEXT_GET_PRE(FUN)),(bool (*)(flext_base *,int &))(FLEXT_SET_PRE(FUN))) - -//! @} FLEXT_D_ADDATTR - - -#endif diff --git a/externals/grill/flext/source/fldefs_attrcb.h b/externals/grill/flext/source/fldefs_attrcb.h deleted file mode 100644 index 13ca8014..00000000 --- a/externals/grill/flext/source/fldefs_attrcb.h +++ /dev/null @@ -1,158 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file fldefs_attrcb.h - \brief This file contains all #defines for actual usage - -*/ - -#ifndef __FLEXT_DEFS_ATTRCB_H -#define __FLEXT_DEFS_ATTRCB_H - - - -/*! \brief Declare a attribute set function - \internal -*/ -#define FLEXT_CALLSET_(FUN,TP) \ -static bool FLEXT_SET_PRE(FUN)(flext_base *c,TP &arg) \ -{ FLEXT_CAST(c)->FUN(arg); return true; } - -/*! \brief Declare a attribute get function - \internal -*/ -#define FLEXT_CALLGET_(FUN,TP) \ -static bool FLEXT_GET_PRE(FUN)(flext_base *c,TP &arg) \ -{ FLEXT_CAST(c)->FUN(arg); return true; } - - - -/*! \defgroup FLEXT_DA_CALLSET Definition of attribute set handlers - \ingroup FLEXT_D_ATTRIB - @{ -*/ - -//! Declare a set function for a float attribute -#define FLEXT_CALLSET_F(SFUN) \ -\ -FLEXT_CALLSET_(SFUN,float) - -//! Declare a set function for an integer attribute -#define FLEXT_CALLSET_I(SFUN) \ -\ -FLEXT_CALLSET_(SFUN,int) - -//! Declare a set function for a boolean attribute -#define FLEXT_CALLSET_B(SFUN) \ -\ -FLEXT_CALLSET_(SFUN,bool) -/* -static bool FLEXT_SET_PRE(FUN)(flext_base *c,int &arg) \ -{ bool b = arg != 0; FLEXT_CAST(c)->FUN(b); return true; } -*/ - -//! Declare a set function for an enum attribute -#define FLEXT_CALLSET_E(SFUN,TP) \ -\ -FLEXT_CALLSET_(SFUN,TP) - -//! Declare a set function for a symbol attribute -#define FLEXT_CALLSET_S(FUN) \ -static bool FLEXT_SET_PRE(FUN)(flext_base *c,const t_symbol *&arg) \ -{ FLEXT_CAST(c)->FUN(arg); return true; } - -//! Declare a set function for a variable list attribute -#define FLEXT_CALLSET_V(FUN) \ -static bool FLEXT_SET_PRE(FUN)(flext_base *c,AtomList *&arg) \ -{ FLEXT_CAST(c)->FUN(*arg); return true; } - -//! @} FLEXT_DA_CALLSET - -/*! \defgroup FLEXT_DA_CALLGET Definition of attribute get handlers - \ingroup FLEXT_D_ATTRIB - @{ -*/ - -//! Declare a get function for a float attribute -#define FLEXT_CALLGET_F(GFUN) \ -\ -FLEXT_CALLGET_(GFUN,float) - -//! Declare a get function for an integer attribute -#define FLEXT_CALLGET_I(GFUN) \ -\ -FLEXT_CALLGET_(GFUN,int) - -//! Declare a get function for a boolean attribute -#define FLEXT_CALLGET_B(GFUN) \ -\ -FLEXT_CALLGET_(GFUN,bool) -/* -static bool FLEXT_GET_PRE(FUN)(flext_base *c,int &arg) \ -{ bool b; FLEXT_CAST(c)->FUN(b); arg = b?1:0; return true; } -*/ - -//! Declare a get function for an enum attribute -#define FLEXT_CALLGET_E(GFUN,TP) \ -\ -FLEXT_CALLGET_(GFUN,TP) - -//! Declare a get function for a symbol attribute -#define FLEXT_CALLGET_S(FUN) \ -static bool FLEXT_GET_PRE(FUN)(flext_base *c,const t_symbol *&arg) \ -{ FLEXT_CAST(c)->FUN(arg); return true; } - -//! Declare a get function for a variable list attribute -#define FLEXT_CALLGET_V(FUN) \ -static bool FLEXT_GET_PRE(FUN)(flext_base *c,AtomList *&arg) \ -{ FLEXT_CAST(c)->FUN(*arg); return true; } - -//! @} FLEXT_DA_CALLGET - - -/*! \defgroup FLEXT_DA_CALLVAR Definition of attribute transfer handlers (both get and set) - \ingroup FLEXT_D_ATTRIB - @{ -*/ - -//! Declare both get and set functions for a float attribute -#define FLEXT_CALLVAR_F(GFUN,SFUN) \ -\ -FLEXT_CALLGET_F(GFUN) FLEXT_CALLSET_F(SFUN) - -//! Declare both get and set functions for an integer attribute -#define FLEXT_CALLVAR_I(GFUN,SFUN) \ -\ -FLEXT_CALLGET_I(GFUN) FLEXT_CALLSET_I(SFUN) - -//! Declare both get and set functions for a symbol attribute -#define FLEXT_CALLVAR_S(GFUN,SFUN) \ -\ -FLEXT_CALLGET_S(GFUN) FLEXT_CALLSET_S(SFUN) - -//! Declare both get and set functions for a boolean attribute -#define FLEXT_CALLVAR_B(GFUN,SFUN) \ -\ -FLEXT_CALLGET_B(GFUN) FLEXT_CALLSET_B(SFUN) - -//! Declare both get and set functions for an enum attribute -#define FLEXT_CALLVAR_E(GFUN,SFUN,TP) \ -\ -FLEXT_CALLGET_E(GFUN,TP) FLEXT_CALLSET_E(SFUN,TP) - -//! Declare both get and set functions for a variable list attribute -#define FLEXT_CALLVAR_V(GFUN,SFUN) \ -\ -FLEXT_CALLGET_V(GFUN) FLEXT_CALLSET_V(SFUN) - -//! @} FLEXT_DA_CALLVAR - - -#endif diff --git a/externals/grill/flext/source/fldefs_attrvar.h b/externals/grill/flext/source/fldefs_attrvar.h deleted file mode 100644 index e996b460..00000000 --- a/externals/grill/flext/source/fldefs_attrvar.h +++ /dev/null @@ -1,158 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file fldefs_attrvar.h - \brief This file contains all #defines for actual usage - -*/ - -#ifndef __FLEXT_DEFS_ATTRVAR_H -#define __FLEXT_DEFS_ATTRVAR_H - - -/*! \brief Declare an implicit attribute set function - \internal -*/ -#define FLEXT_ATTRSET_(VAR,TP) \ -static bool FLEXT_SET_PRE(VAR)(flext_base *c,TP &arg) \ -{ FLEXT_CAST(c)->VAR = arg; return true; } - -/*! \brief Declare an implicit attribute get function - \internal -*/ -#define FLEXT_ATTRGET_(VAR,TP) \ -static bool FLEXT_GET_PRE(VAR)(flext_base *c,TP &arg) \ -{ arg = (TP)FLEXT_CAST(c)->VAR; return true; } - - - -/*! \defgroup FLEXT_DA_ATTRSET Definition of implicit attribute set handlers - \ingroup FLEXT_D_ATTRIB - @{ -*/ - -//! Declare an implicit set function for a float attribute -#define FLEXT_ATTRSET_F(VAR) \ -\ -FLEXT_ATTRSET_(VAR,float) - -//! Declare an implicit set function for an integer attribute -#define FLEXT_ATTRSET_I(VAR) \ -\ -FLEXT_ATTRSET_(VAR,int) - -//! Declare an implicit set function for a symbol attribute -#define FLEXT_ATTRSET_S(VAR) \ -\ -FLEXT_ATTRSET_(VAR,const t_symbol *) - -//! Declare an implicit set function for a boolean attribute -#define FLEXT_ATTRSET_B(VAR) \ -\ -FLEXT_ATTRSET_(VAR,bool) -/* -static bool FLEXT_SET_PRE(VAR)(flext_base *c,int &arg) \ -{ FLEXT_CAST(c)->VAR = arg != 0; return true; } -*/ - -//! Declare an implicit set function for an enum attribute -#define FLEXT_ATTRSET_E(VAR,TP) \ -\ -FLEXT_ATTRSET_(VAR,TP) - -//! Declare an implicit set function for a variable list attribute -#define FLEXT_ATTRSET_V(VAR) \ -static bool FLEXT_SET_PRE(VAR)(flext_base *c,AtomList *&arg) \ -{ FLEXT_CAST(c)->VAR = *arg; return true; } - -//! @} FLEXT_DA_ATTRSET - -/*! \defgroup FLEXT_DA_ATTRGET Definition of implicit attribute get handlers - \ingroup FLEXT_D_ATTRIB - @{ -*/ - -//! Declare an implicit get function for a float attribute -#define FLEXT_ATTRGET_F(VAR) \ -\ -FLEXT_ATTRGET_(VAR,float) - -//! Declare an implicit get function for an integer attribute -#define FLEXT_ATTRGET_I(VAR) \ -\ -FLEXT_ATTRGET_(VAR,int) - -//! Declare an implicit get function for a symbol attribute -#define FLEXT_ATTRGET_S(VAR) \ -\ -FLEXT_ATTRGET_(VAR,const t_symbol *) - -//! Declare an implicit get function for a boolean attribute -#define FLEXT_ATTRGET_B(VAR) \ -\ -FLEXT_ATTRGET_(VAR,bool) -/* -static bool FLEXT_GET_PRE(VAR)(flext_base *c,int &arg) \ -{ arg = FLEXT_CAST(c)->VAR?1:0; return true; } -*/ - -//! Declare an implicit get function for an enum attribute -#define FLEXT_ATTRGET_E(VAR,TP) \ -\ -FLEXT_ATTRGET_(VAR,TP) - -//! Declare an implicit get function for a variable list attribute -#define FLEXT_ATTRGET_V(VAR) \ -static bool FLEXT_GET_PRE(VAR)(flext_base *c,AtomList *&arg) \ -{ *arg = FLEXT_CAST(c)->VAR; return true; } - -//! @} FLEXT_DA_ATTRGET - - -/*! \defgroup FLEXT_DA_ATTRVAR Definition of implicit attribute transfer handlers (both get and set) - \ingroup FLEXT_D_ATTRIB - @{ -*/ - -//! Declare both implicit get and set functions for a float attribute -#define FLEXT_ATTRVAR_F(VAR) \ -\ -FLEXT_ATTRGET_F(VAR) FLEXT_ATTRSET_F(VAR) - -//! Declare both implicit get and set functions for an integer attribute -#define FLEXT_ATTRVAR_I(VAR) \ -\ -FLEXT_ATTRGET_I(VAR) FLEXT_ATTRSET_I(VAR) - -//! Declare both implicit get and set functions for a symbol attribute -#define FLEXT_ATTRVAR_S(VAR) \ -\ -FLEXT_ATTRGET_S(VAR) FLEXT_ATTRSET_S(VAR) - -//! Declare both implicit get and set functions for a boolean attribute -#define FLEXT_ATTRVAR_B(VAR) \ -\ -FLEXT_ATTRGET_B(VAR) FLEXT_ATTRSET_B(VAR) - -//! Declare both implicit get and set functions for an enum attribute -#define FLEXT_ATTRVAR_E(VAR,TP) \ -\ -FLEXT_ATTRGET_(VAR,TP) FLEXT_ATTRSET_(VAR,TP) - -//! Declare both implicit get and set functions for a variable list attribute -#define FLEXT_ATTRVAR_V(VAR) \ -\ -FLEXT_ATTRGET_V(VAR) FLEXT_ATTRSET_V(VAR) - - -//! @} FLEXT_DA_ATTRVAR - - -#endif diff --git a/externals/grill/flext/source/fldefs_hdr.h b/externals/grill/flext/source/fldefs_hdr.h deleted file mode 100644 index 01bcd477..00000000 --- a/externals/grill/flext/source/fldefs_hdr.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file fldefs_hdr.h - \brief This file contains all #defines for actual usage - -*/ - -#ifndef __FLEXT_DEFS_HEADER_H -#define __FLEXT_DEFS_HEADER_H - - -/*! \defgroup FLEXT_D_HEADER Flext class header - \note One (and only one!) of these definitions is compulsory for the class declaration. - \note It has to be placed somewhere in the class definition (not necessarily in a public section). - - @{ -*/ - -/*! \brief Plain flext class header - \param NEW_CLASS name of the current C++ class - \param PARENT_CLASS name of the base C++ class (e.g. flext_base or flext_dsp) -*/ -#define FLEXT_HEADER(NEW_CLASS,PARENT_CLASS) \ -\ -FLEXT_REALHDR(NEW_CLASS, PARENT_CLASS) - -#define FLEXT_HEADER_T(NEW_CLASS,PARENT_CLASS) \ -\ -FLEXT_REALHDR_T(NEW_CLASS, PARENT_CLASS) - -/*! \brief Flext class header with setup function - \param NEW_CLASS name of the current C++ class - \param PARENT_CLASS name of the base C++ class (e.g. flext_base or flext_dsp) - \param SETUPFUN setup function, of type "void (*setupfn)(t_class *)" - - The setup function is called after class creation. It corresponds to the - original PD "[object]_setup" function, apart from the - fact that all necessary class initializations have already been taken care of by flext. - The setup function can e.g. be used for a message to the console upon first creation of an object. -*/ -#define FLEXT_HEADER_S(NEW_CLASS, PARENT_CLASS, SETUPFUN)\ -\ -FLEXT_REALHDR_S(NEW_CLASS, PARENT_CLASS, SETUPFUN) - -#define FLEXT_HEADER_TS(NEW_CLASS, PARENT_CLASS, SETUPFUN)\ -\ -FLEXT_REALHDR_TS(NEW_CLASS, PARENT_CLASS, SETUPFUN) - - -//! @} FLEXT_D_HEADER - - -#endif diff --git a/externals/grill/flext/source/fldefs_methadd.h b/externals/grill/flext/source/fldefs_methadd.h deleted file mode 100644 index 0798f702..00000000 --- a/externals/grill/flext/source/fldefs_methadd.h +++ /dev/null @@ -1,232 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file fldefs_methadd.h - \brief This file contains all #defines for actual usage - -*/ - -#ifndef __FLEXT_DEFS_METHADD_H -#define __FLEXT_DEFS_METHADD_H - - -/*! \defgroup FLEXT_D_CADDMETHOD Add flext methods within class scope - \ingroup FLEXT_D_METHOD - \note These can only be used at class construction time - @{ -*/ - -/*! Add a method handler for bang - \note This is for compatibility - better use the method below -*/ -#define FLEXT_CADDBANG(CL,IX,M_FUN) \ -\ -AddMethod(CL,IX,FLEXT_CALL_PRE(M_FUN)) - -//! Add a handler for a method with either no, list or anything arguments -#define FLEXT_CADDMETHOD(CL,IX,M_FUN) \ -\ -AddMethod(CL,IX,FLEXT_CALL_PRE(M_FUN)) - -//! Add a a handler for a method with implicit arguments -#define FLEXT_CADDMETHOD_(CL,IX,M_TAG,M_FUN) \ -\ -AddMethod(CL,IX,flext::MakeSymbol(M_TAG),FLEXT_CALL_PRE(M_FUN)) - -//! Add a handler for a method with 1 enum type argument -#define FLEXT_CADDMETHOD_E(CL,IX,M_TAG,M_FUN) \ -\ -AddMethod(ClMeths(CL),IX,flext::MakeSymbol(M_TAG),(methfun)(FLEXT_CALL_PRE(M_FUN)),a_int,a_null) - -//! Add a handler for a method with 1 argument -#define FLEXT_CADDMETHOD_1(CL,IX,M_TAG,M_FUN,TP1) \ -\ -AddMethod(ClMeths(CL),IX,flext::MakeSymbol(M_TAG),(methfun)(FLEXT_CALL_PRE(M_FUN)),FLEXTARG(TP1),a_null) - -//! Add a handler for a method with 2 arguments -#define FLEXT_CADDMETHOD_2(CL,IX,M_TAG,M_FUN,TP1,TP2) \ -\ -AddMethod(ClMeths(CL),IX,flext::MakeSymbol(M_TAG),(methfun)(FLEXT_CALL_PRE(M_FUN)),FLEXTARG(TP1),FLEXTARG(TP2),a_null) - -//! Add a handler for a method with 3 arguments -#define FLEXT_CADDMETHOD_3(CL,IX,M_TAG,M_FUN,TP1,TP2,TP3) \ -\ -AddMethod(ClMeths(CL),IX,flext::MakeSymbol(M_TAG),(methfun)(FLEXT_CALL_PRE(M_FUN)),FLEXTARG(TP1),FLEXTARG(TP2),FLEXTARG(TP3),a_null) - -//! Add a handler for a method with 4 arguments -#define FLEXT_CADDMETHOD_4(CL,IX,M_TAG,M_FUN,TP1,TP2,TP3,TP4) \ -\ -AddMethod(ClMeths(CL),IX,flext::MakeSymbol(M_TAG),(methfun)(FLEXT_CALL_PRE(M_FUN)),FLEXTARG(TP1),FLEXTARG(TP2),FLEXTARG(TP3),FLEXTARG(TP4),a_null) - -//! Add a handler for a method with 5 arguments -#define FLEXT_CADDMETHOD_5(CL,IX,M_TAG,M_FUN,TP1,TP2,TP3,TP4,TP5) \ -\ -AddMethod(ClMeths(CL),IX,flext::MakeSymbol(M_TAG),(methfun)(FLEXT_CALL_PRE(M_FUN)),FLEXTARG(TP1),FLEXTARG(TP2),FLEXTARG(TP3),FLEXTARG(TP4),FLEXTARG(TP5),a_null) - - -// Shortcuts - -//! Add a handler for a method with a boolean argument -#define FLEXT_CADDMETHOD_B(CL,IX,M_TAG,M_FUN) \ -\ -FLEXT_CADDMETHOD_1(CL,IX,flext::MakeSymbol(M_TAG),M_FUN,bool) - -//! Add a handler for a method with 1 float argument -#define FLEXT_CADDMETHOD_F(CL,IX,M_TAG,M_FUN) \ -\ -FLEXT_CADDMETHOD_1(CL,IX,flext::MakeSymbol(M_TAG),M_FUN,float) - -//! Add a handler for a method with 2 float arguments -#define FLEXT_CADDMETHOD_FF(CL,IX,M_TAG,M_FUN) \ -\ -FLEXT_CADDMETHOD_2(CL,IX,flext::MakeSymbol(M_TAG),M_FUN,float,float) - -//! Add a handler for a method with 3 float arguments -#define FLEXT_CADDMETHOD_FFF(CL,IX,M_TAG,M_FUN) \ -\ -FLEXT_CADDMETHOD_3(CL,IX,flext::MakeSymbol(M_TAG),M_FUN,float,float,float) - -//! Add a handler for a method with 1 integer argument -#define FLEXT_CADDMETHOD_I(CL,IX,M_TAG,M_FUN) \ -\ -FLEXT_CADDMETHOD_1(CL,IX,flext::MakeSymbol(M_TAG),M_FUN,int) - -//! Add a handler for a method with 2 integer arguments -#define FLEXT_CADDMETHOD_II(CL,IX,M_TAG,M_FUN) \ -\ -FLEXT_CADDMETHOD_2(CL,IX,flext::MakeSymbol(M_TAG),M_FUN,int,int) - -//! Add a handler for a method with 3 integer arguments -#define FLEXT_CADDMETHOD_III(CL,IX,M_TAG,M_FUN) \ -\ -FLEXT_CADDMETHOD_3(CL,IX,flext::MakeSymbol(M_TAG),M_FUN,int,int,int) - -//! @} FLEXT_D_CADDMETHOD - - -/*! \defgroup FLEXT_D_ADDMETHOD Add flext methods - \ingroup FLEXT_D_METHOD - \note These can only be used at object construction time - \note (in constructor or in Init() function before call to parent's Init()) - @{ -*/ - -//! Set timer callback -#define FLEXT_ADDTIMER(TMR,M_FUN) \ -\ -TMR.SetCallback(*this,FLEXT_CALL_PRE(M_FUN)) - -//! Enable list element distribution over inlets (if no better handler found) -#define FLEXT_ADDDIST() \ -\ -SetDist(true) - -//! Add a method handler for bang -#define FLEXT_ADDBANG(IX,M_FUN) \ -\ -AddMethod(IX,"bang",FLEXT_CALL_PRE(M_FUN)) - -//! Add a handler for a method with either no, list or anything arguments -#define FLEXT_ADDMETHOD(IX,M_FUN) \ -AddMethod(IX,FLEXT_CALL_PRE(M_FUN)) - -/*! \brief Add a handler for a method with a (variable argument) list - \deprecated This definition obscures that _ indicates the usage of a message tag - use FLEXT_ADDMETHOD instead - \note This is already covered by FLEXT_ADDMETHOD, but here for the sake of clarity -*/ -#define FLEXT_ADDMETHOD_V(IX,M_FUN) \ -\ -AddMethod(IX,FLEXT_CALL_PRE(M_FUN)) - -/*! \brief Add a handler for a method with an anything argument - \deprecated This definition obscures that _ indicates the usage of a message tag - use FLEXT_ADDMETHOD instead - \note This is already covered by FLEXT_ADDMETHOD, but here for the sake of clarity -*/ -#define FLEXT_ADDMETHOD_A(IX,M_FUN) \ -\ -AddMethod(IX,FLEXT_CALL_PRE(M_FUN)) - -//! Add a a handler for a tagged method with implicit arguments -#define FLEXT_ADDMETHOD_(IX,M_TAG,M_FUN) \ -\ -AddMethod(IX,flext::MakeSymbol(M_TAG),FLEXT_CALL_PRE(M_FUN)) - -//! Add a handler for a method with 1 enum type argument -#define FLEXT_ADDMETHOD_E(IX,M_TAG,M_FUN) \ -\ -AddMethod(ThMeths(),IX,flext::MakeSymbol(M_TAG),(methfun)(FLEXT_CALL_PRE(M_FUN)),a_int,a_null) - -//! Add a handler for a method with 1 argument -#define FLEXT_ADDMETHOD_1(IX,M_TAG,M_FUN,TP1) \ -\ -AddMethod(ThMeths(),IX,flext::MakeSymbol(M_TAG),(methfun)(FLEXT_CALL_PRE(M_FUN)),FLEXTARG(TP1),a_null) - -//! Add a handler for a method with 2 arguments -#define FLEXT_ADDMETHOD_2(IX,M_TAG,M_FUN,TP1,TP2) \ -\ -AddMethod(ThMeths(),IX,flext::MakeSymbol(M_TAG),(methfun)(FLEXT_CALL_PRE(M_FUN)),FLEXTARG(TP1),FLEXTARG(TP2),a_null) - -//! Add a handler for a method with 3 arguments -#define FLEXT_ADDMETHOD_3(IX,M_TAG,M_FUN,TP1,TP2,TP3) \ -\ -AddMethod(ThMeths(),IX,flext::MakeSymbol(M_TAG),(methfun)(FLEXT_CALL_PRE(M_FUN)),FLEXTARG(TP1),FLEXTARG(TP2),FLEXTARG(TP3),a_null) - -//! Add a handler for a method with 4 arguments -#define FLEXT_ADDMETHOD_4(IX,M_TAG,M_FUN,TP1,TP2,TP3,TP4) \ -\ -AddMethod(ThMeths(),IX,flext::MakeSymbol(M_TAG),(methfun)(FLEXT_CALL_PRE(M_FUN)),FLEXTARG(TP1),FLEXTARG(TP2),FLEXTARG(TP3),FLEXTARG(TP4),a_null) - -//! Add a handler for a method with 5 arguments -#define FLEXT_ADDMETHOD_5(IX,M_TAG,M_FUN,TP1,TP2,TP3,TP4,TP5) \ -\ -AddMethod(ThMeths(),IX,flext::MakeSymbol(M_TAG),(methfun)(FLEXT_CALL_PRE(M_FUN)),FLEXTARG(TP1),FLEXTARG(TP2),FLEXTARG(TP3),FLEXTARG(TP4),FLEXTARG(TP5),a_null) - - -// Shortcuts - -//! Add a handler for a method with a boolean argument -#define FLEXT_ADDMETHOD_B(IX,M_TAG,M_FUN) \ -\ -FLEXT_ADDMETHOD_1(IX,flext::MakeSymbol(M_TAG),M_FUN,bool) - -//! Add a handler for a method with 1 float argument -#define FLEXT_ADDMETHOD_F(IX,M_TAG,M_FUN) \ -\ -FLEXT_ADDMETHOD_1(IX,flext::MakeSymbol(M_TAG),M_FUN,float) - -//! Add a handler for a method with 2 float arguments -#define FLEXT_ADDMETHOD_FF(IX,M_TAG,M_FUN) \ -\ -FLEXT_ADDMETHOD_2(IX,flext::MakeSymbol(M_TAG),M_FUN,float,float) - -//! Add a handler for a method with 3 float arguments -#define FLEXT_ADDMETHOD_FFF(IX,M_TAG,M_FUN) \ -\ -FLEXT_ADDMETHOD_3(IX,flext::MakeSymbol(M_TAG),M_FUN,float,float,float) - -//! Add a handler for a method with 1 integer argument -#define FLEXT_ADDMETHOD_I(IX,M_TAG,M_FUN) \ -\ -FLEXT_ADDMETHOD_1(IX,flext::MakeSymbol(M_TAG),M_FUN,int) - -//! Add a handler for a method with 2 integer arguments -#define FLEXT_ADDMETHOD_II(IX,M_TAG,M_FUN) \ -\ -FLEXT_ADDMETHOD_2(IX,flext::MakeSymbol(M_TAG),M_FUN,int,int) - -//! Add a handler for a method with 3 integer arguments -#define FLEXT_ADDMETHOD_III(IX,M_TAG,M_FUN) \ -\ -FLEXT_ADDMETHOD_3(IX,flext::MakeSymbol(M_TAG),M_FUN,int,int,int) - - -//! @} FLEXT_D_ADDMETHOD - -#endif diff --git a/externals/grill/flext/source/fldefs_methbind.h b/externals/grill/flext/source/fldefs_methbind.h deleted file mode 100644 index 46dd8186..00000000 --- a/externals/grill/flext/source/fldefs_methbind.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file fldefs_methbind.h - \brief This file contains all #defines for actual usage - -*/ - -#ifndef __FLEXT_DEFS_METHBIND_H -#define __FLEXT_DEFS_METHBIND_H - - -/*! \defgroup FLEXT_D_BINDMETHOD Bind flext methods to symbols - @{ -*/ - -/*! \brief Bind a handler for a method with an anything argument to a symbol -*/ -#define FLEXT_BINDMETHOD(SYM,M_FUN,DATA) \ -\ -BindMethod(SYM,FLEXT_CALL_PRE(M_FUN),DATA) - -/*! \brief Unbind any handler for a method from a symbol - \note Memory associated to the DATA parameter of FLEXT_BINDMETHOD will *not* be freed here. -*/ -#define FLEXT_UNBINDMETHOD(SYM) \ -\ -UnbindMethod(SYM) - -/*! \brief Unbind any handler for a method from a symbol and return user data pointer by DATA - \note Memory associated to the DATA parameter of FLEXT_BINDMETHOD will *not* be freed here. -*/ -#define FLEXT_UNBINDMETHOD_X(SYM,DATA) \ -\ -UnbindMethod(SYM,&DATA) - - -//! @} FLEXT_D_BINDMETHOD - - -#endif diff --git a/externals/grill/flext/source/fldefs_methcall.h b/externals/grill/flext/source/fldefs_methcall.h deleted file mode 100644 index 1602faf0..00000000 --- a/externals/grill/flext/source/fldefs_methcall.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file fldefs_methbind.h - \brief This file contains all #defines for actual usage - -*/ - -#ifndef __FLEXT_DEFS_METHCALL_H -#define __FLEXT_DEFS_METHCALL_H - - -/*! \defgroup FLEXT_D_CALLMETHOD Call flext methods manually - \ingroup FLEXT_D_METHOD - @{ -*/ - -//! Call a (already defined) method with no arguments -#define FLEXT_CALLMETHOD(M_FUN) \ -\ -FLEXT_CALL_PRE(M_FUN)(this) - -//! Call a (already defined) method with variable list arguments -#define FLEXT_CALLMETHOD_V(M_FUN,ARGC,ARGV) \ -\ -FLEXT_CALL_PRE(M_FUN)(this,ARGC,(t_atom *)(ARGV)) - -//! Call a (already defined) method with anything arguments -#define FLEXT_CALLMETHOD_A(M_FUN,HDR,ARGC,ARGV) \ -\ -FLEXT_CALL_PRE(M_FUN)(this,(t_symbol *)(HDR),ARGC,(t_atom *)(ARGV)) - -//! Call a (already defined) method with a data package (void *) -#define FLEXT_CALLMETHOD_X(M_FUN,DATA) \ -\ -FLEXT_CALL_PRE(M_FUN)(this,DATA) - -//! Call a (already defined) method with 1 enum type argument -#define FLEXT_CALLMETHOD_E(M_FUN,ARG) \ -\ -FLEXT_CALL_PRE(M_FUN)(this,ARG) - -//! Call a (already defined) method with 1 argument -#define FLEXT_CALLMETHOD_1(M_FUN,ARG) \ -\ -FLEXT_CALL_PRE(M_FUN)(this,ARG) - -//! Call a (already defined) method with 2 arguments -#define FLEXT_CALLMETHOD_2(M_FUN,ARG1,ARG2) \ -\ -FLEXT_CALL_PRE(M_FUN)(this,ARG1,ARG2) - -//! Call a (already defined) method with 3 arguments -#define FLEXT_CALLMETHOD_3(M_FUN,ARG1,ARG2,ARG3) \ -\ -FLEXT_CALL_PRE(M_FUN)(this,ARG1,ARG2,ARG3) - -//! Call a (already defined) method with 4 arguments -#define FLEXT_CALLMETHOD_4(M_FUN,ARG1,ARG2,ARG3,ARG4) \ -\ -FLEXT_CALL_PRE(M_FUN)(this,ARG1,ARG2,ARG3,ARG4) - -//! Call a (already defined) method with 5 arguments -#define FLEXT_CALLMETHOD_5(M_FUN,ARG1,ARG2,ARG3,ARG4,ARG5) \ -\ -FLEXT_CALL_PRE(M_FUN)(this,ARG1,ARG2,ARG3,ARG4,ARG5) - -//! @} FLEXT_D_CALLMETHOD - - -#endif diff --git a/externals/grill/flext/source/fldefs_methcb.h b/externals/grill/flext/source/fldefs_methcb.h deleted file mode 100644 index c1112b85..00000000 --- a/externals/grill/flext/source/fldefs_methcb.h +++ /dev/null @@ -1,129 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file fldefs_methcb.h - \brief This file contains all #defines for actual usage - -*/ - -#ifndef __FLEXT_DEFS_METHCB_H -#define __FLEXT_DEFS_METHCB_H - - -/*! \defgroup FLEXT_D_CALLBACK Declare callbacks for class methods - \ingroup FLEXT_D_METHOD - @{ -*/ - -//! Set up a method callback with no arguments -#define FLEXT_CALLBACK(M_FUN) \ -static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c) \ -{ FLEXT_CAST(c)->M_FUN(); return true; } - -//! Set up a method callback for an anything argument -#define FLEXT_CALLBACK_A(M_FUN) \ -static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,t_symbol *s,int argc,t_atom *argv) \ -{ FLEXT_CAST(c)->M_FUN(s,argc,argv); return true; } - -//! Set up a method callback for a variable argument list -#define FLEXT_CALLBACK_V(M_FUN) \ -static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,int argc,t_atom *argv) \ -{ FLEXT_CAST(c)->M_FUN(argc,argv); return true; } - -//! Set up a method callback for a data package (void *) argument -#define FLEXT_CALLBACK_X(M_FUN) \ -static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,void *data) \ -{ FLEXT_CAST(c)->M_FUN(data); return true; } - -//! Set up a method callback for an anything argument and a data package (e.g. for symbol-bound methods). -#define FLEXT_CALLBACK_AX(M_FUN) \ -static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,t_symbol *s,int argc,t_atom *argv,void *data) \ -{ FLEXT_CAST(c)->M_FUN(s,argc,argv,data); return true; } - -//! Set up a timer callback -#define FLEXT_CALLBACK_T(M_FUN) \ -\ -FLEXT_CALLBACK_X(M_FUN) - -//! Set up a method callback for a boolean argument -#define FLEXT_CALLBACK_B(M_FUN) \ -static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,int &arg1) \ -{ FLEXT_CAST(c)->M_FUN(arg1 != 0); return true; } - -//! Set up a method callback for 1 argument -#define FLEXT_CALLBACK_1(M_FUN,TP1) \ -static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1) \ -{ FLEXT_CAST(c)->M_FUN(arg1); return true; } - -//! Set up a method callback for 2 arguments -#define FLEXT_CALLBACK_2(M_FUN,TP1,TP2) \ -static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1,TP2 &arg2) \ -{ FLEXT_CAST(c)->M_FUN(arg1,arg2); return true; } - -//! Set up a method callback for 3 arguments -#define FLEXT_CALLBACK_3(M_FUN,TP1,TP2,TP3) \ -static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1,TP2 &arg2,TP3 &arg3) \ -{ FLEXT_CAST(c)->M_FUN(arg1,arg2,arg3); return true; } - -//! Set up a method callback for 4 arguments -#define FLEXT_CALLBACK_4(M_FUN,TP1,TP2,TP3,TP4) \ -static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1,TP2 &arg2,TP3 &arg3,TP4 &arg4) \ -{ FLEXT_CAST(c)->M_FUN(arg1,arg2,arg3,arg4); return true; } - -//! Set up a method callback for 5 arguments -#define FLEXT_CALLBACK_5(M_FUN,TP1,TP2,TP3,TP4,TP5) \ -static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1,TP2 &arg2,TP3 &arg3,TP4 &arg4,TP5 &arg5) \ -{ FLEXT_CAST(c)->M_FUN(arg1,arg2,arg3,arg4,arg5); return true; } - - -// Shortcuts - -//! Set up a method callback for 1 float argument -#define FLEXT_CALLBACK_F(M_FUN) \ -\ -FLEXT_CALLBACK_1(M_FUN,float) - -//! Set up a method callback for 2 float arguments -#define FLEXT_CALLBACK_FF(M_FUN) \ -\ -FLEXT_CALLBACK_2(M_FUN,float,float) - -//! Set up a method callback for 3 float arguments -#define FLEXT_CALLBACK_FFF(M_FUN) \ -\ -FLEXT_CALLBACK_3(M_FUN,float,float,float) - -//! Set up a method callback for 1 integer argument -#define FLEXT_CALLBACK_I(M_FUN) \ -\ -FLEXT_CALLBACK_1(M_FUN,int) - -//! Set up a method callback for 2 integer arguments -#define FLEXT_CALLBACK_II(M_FUN) \ -\ -FLEXT_CALLBACK_2(M_FUN,int,int) - -//! Set up a method callback for 3 integer arguments -#define FLEXT_CALLBACK_III(M_FUN) \ -\ -FLEXT_CALLBACK_3(M_FUN,int,int,int) - -//! Set up a method callback for 1 symbol argument -#define FLEXT_CALLBACK_S(M_FUN) \ -\ -FLEXT_CALLBACK_1(M_FUN,t_symptr) - - -//! \deprecated -#define FLEXT_CALLBACK_G FLEXT_CALLBACK_V - -//! @} FLEXT_D_CALLBACK - -#endif diff --git a/externals/grill/flext/source/fldefs_meththr.h b/externals/grill/flext/source/fldefs_meththr.h deleted file mode 100644 index f68aa507..00000000 --- a/externals/grill/flext/source/fldefs_meththr.h +++ /dev/null @@ -1,273 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file fldefs_meththr.h - \brief This file contains all #defines for actual usage - -*/ - -#ifndef __FLEXT_DEFS_METHTHR_H -#define __FLEXT_DEFS_METHTHR_H - - -#ifdef FLEXT_THREADS - - -/*! \defgroup FLEXT_D_THREAD Declare threaded method callbacks - @{ -*/ - -//! Set up a threaded method callback with no arguments -#define FLEXT_THREAD(M_FUN) \ -static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c) { \ - thr_params *p = new thr_params; \ - return c->StartThread(FLEXT_THR_PRE(M_FUN),p,#M_FUN); \ -} \ -static void FLEXT_THR_PRE(M_FUN)(thr_params *p) { \ - thisType *th = FLEXT_CAST(p->cl); \ - bool ok = th->PushThread(); \ - delete p; \ - if(ok) { \ - th->M_FUN(); \ - th->PopThread(); \ - } \ -} - -//! Set up a threaded method callback for an anything argument -#define FLEXT_THREAD_A(M_FUN) \ -static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,t_symbol *s,int argc,t_atom *argv) { \ - thr_params *p = new thr_params; p->set_any(s,argc,argv); \ - return c->StartThread(FLEXT_THR_PRE(M_FUN),p,#M_FUN); \ -} \ -static void FLEXT_THR_PRE(M_FUN)(thr_params *p) { \ - thisType *th = FLEXT_CAST(p->cl); \ - bool ok = th->PushThread(); \ - AtomAnything *args = p->var[0]._any; \ - delete p; \ - if(ok) { \ - th->M_FUN(args->Header(),args->Count(),args->Atoms()); \ - th->PopThread(); \ - } \ - delete args; \ -} - -//! Set up a threaded method callback for a variable argument list -#define FLEXT_THREAD_V(M_FUN) \ -static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,int argc,t_atom *argv) { \ - thr_params *p = new thr_params; p->set_list(argc,argv); \ - return c->StartThread(FLEXT_THR_PRE(M_FUN),p,#M_FUN); \ -} \ -static void FLEXT_THR_PRE(M_FUN)(thr_params *p) { \ - thisType *th = FLEXT_CAST(p->cl); \ - bool ok = th->PushThread(); \ - AtomList *args = p->var[0]._list; \ - delete p; \ - if(ok) { \ - th->M_FUN(args->Count(),args->Atoms()); \ - th->PopThread(); \ - } \ - delete args; \ -} - -/*! \brief Set up a threaded method callback for an arbitrary data struct. - \note Data is pure... no destructor is called upon delete -*/ -#define FLEXT_THREAD_X(M_FUN) \ -static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,void *data) { \ - thr_params *p = new thr_params; p->var[0]._ext = data; \ - return c->StartThread(FLEXT_THR_PRE(M_FUN),p,#M_FUN); \ -} \ -static void FLEXT_THR_PRE(M_FUN)(thr_params *p) { \ - thisType *th = FLEXT_CAST(p->cl); \ - bool ok = th->PushThread(); \ - void *data = p->var[0]._ext; \ - delete p; \ - if(ok) { \ - th->M_FUN(data); \ - th->PopThread(); \ - } \ - /* delete (char *)data; */ \ -} - -//! Set up a threaded method callback for a boolean argument -#define FLEXT_THREAD_B(M_FUN) \ -static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,int &arg1) { \ - thr_params *p = new thr_params; p->var[0]._bool = arg1 != 0; \ - return c->StartThread(FLEXT_THR_PRE(M_FUN),p,#M_FUN); \ -} \ -static void FLEXT_THR_PRE(M_FUN)(thr_params *p) { \ - thisType *th = FLEXT_CAST(p->cl); \ - bool ok = th->PushThread(); \ - bool b = p->var[0]._bool; \ - delete p; \ - if(ok) { \ - th->M_FUN(b); \ - th->PopThread(); \ - } \ -} - -//! Set up a threaded method callback for 1 argument -#define FLEXT_THREAD_1(M_FUN,TP1) \ -static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1) { \ - thr_params *p = new thr_params(1); \ - p->var[0]._ ## TP1 = arg1; \ - return c->StartThread(FLEXT_THR_PRE(M_FUN),p,#M_FUN); \ -} \ -static void FLEXT_THR_PRE(M_FUN)(thr_params *p) { \ - thisType *th = FLEXT_CAST(p->cl); \ - bool ok = th->PushThread(); \ - const TP1 v1 = p->var[0]._ ## TP1; \ - delete p; \ - if(ok) { \ - th->M_FUN(v1); \ - th->PopThread(); \ - } \ -} - -//! Set up a threaded method callback for 2 arguments -#define FLEXT_THREAD_2(M_FUN,TP1,TP2) \ -static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1,TP2 &arg2) { \ - thr_params *p = new thr_params(2); \ - p->var[0]._ ## TP1 = arg1; \ - p->var[1]._ ## TP2 = arg2; \ - return c->StartThread(FLEXT_THR_PRE(M_FUN),p,#M_FUN); \ -} \ -static void FLEXT_THR_PRE(M_FUN)(thr_params *p) { \ - thisType *th = FLEXT_CAST(p->cl); \ - bool ok = th->PushThread(); \ - const TP1 v1 = p->var[0]._ ## TP1; \ - const TP1 v2 = p->var[1]._ ## TP2; \ - delete p; \ - if(ok) { \ - th->M_FUN(v1,v2); \ - th->PopThread(); \ - } \ -} - -//! Set up a threaded method callback for 3 arguments -#define FLEXT_THREAD_3(M_FUN,TP1,TP2,TP3) \ -static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1,TP2 &arg2,TP3 &arg3) { \ - thr_params *p = new thr_params(3); \ - p->var[0]._ ## TP1 = arg1; \ - p->var[1]._ ## TP2 = arg2; \ - p->var[2]._ ## TP3 = arg3; \ - return c->StartThread(FLEXT_THR_PRE(M_FUN),p,#M_FUN); \ -} \ -static void FLEXT_THR_PRE(M_FUN)(thr_params *p) { \ - thisType *th = FLEXT_CAST(p->cl); \ - bool ok = th->PushThread(); \ - const TP1 v1 = p->var[0]._ ## TP1; \ - const TP2 v2 = p->var[1]._ ## TP2; \ - const TP3 v3 = p->var[2]._ ## TP3; \ - delete p; \ - if(ok) { \ - th->M_FUN(v1,v2,v3); \ - th->PopThread(); \ - } \ -} - -//! Set up a threaded method callback for 4 arguments -#define FLEXT_THREAD_4(M_FUN,TP1,TP2,TP3,TP4) \ -static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1,TP2 &arg2,TP3 &arg3,TP4 &arg4) { \ - thr_params *p = new thr_params(4); \ - p->var[0]._ ## TP1 = arg1; \ - p->var[1]._ ## TP2 = arg2; \ - p->var[2]._ ## TP3 = arg3; \ - p->var[3]._ ## TP4 = arg4; \ - return c->StartThread(FLEXT_THR_PRE(M_FUN),p,#M_FUN); \ -} \ -static void FLEXT_THR_PRE(M_FUN)(thr_params *p) { \ - thisType *th = FLEXT_CAST(p->cl); \ - bool ok = th->PushThread(); \ - const TP1 v1 = p->var[0]._ ## TP1; \ - const TP2 v2 = p->var[1]._ ## TP2; \ - const TP3 v3 = p->var[2]._ ## TP3; \ - const TP4 v4 = p->var[3]._ ## TP4; \ - delete p; \ - if(ok) { \ - th->M_FUN(v1,v2,v3,v4); \ - th->PopThread(); \ - } \ -} - -//! Set up a threaded method callback for 5 arguments -#define FLEXT_THREAD_5(M_FUN,TP1,TP2,TP3,TP4,TP5) \ -static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1,TP2 &arg2,TP3 &arg3,TP4 &arg4,TP5 &arg5) { \ - thr_params *p = new thr_params(5); \ - p->var[0]._ ## TP1 = arg1; \ - p->var[1]._ ## TP2 = arg2; \ - p->var[2]._ ## TP3 = arg3; \ - p->var[3]._ ## TP4 = arg4; \ - p->var[4]._ ## TP5 = arg5; \ - return c->StartThread(FLEXT_THR_PRE(M_FUN),p,#M_FUN); \ -} \ -static void FLEXT_THR_PRE(M_FUN)(thr_params *p) { \ - thisType *th = FLEXT_CAST(p->cl); \ - bool ok = th->PushThread(); \ - const TP1 v1 = p->var[0]._ ## TP1; \ - const TP2 v2 = p->var[1]._ ## TP2; \ - const TP3 v3 = p->var[2]._ ## TP3; \ - const TP4 v4 = p->var[3]._ ## TP4; \ - const TP5 v5 = p->var[4]._ ## TP5; \ - delete p; \ - if(ok) { \ - th->M_FUN(v1,v2,v3,v4,v5); \ - th->PopThread(); \ - } \ -} - - -//! Shortcuts - -//! Set up a threaded method callback for 1 float argument -#define FLEXT_THREAD_F(M_FUN) \ -\ -FLEXT_THREAD_1(M_FUN,float) - -//! Set up a threaded method callback for 2 float arguments -#define FLEXT_THREAD_FF(M_FUN) \ -\ -FLEXT_THREAD_2(M_FUN,float,float) - -//! Set up a threaded method callback for 3 float arguments -#define FLEXT_THREAD_FFF(M_FUN) \ -\ -FLEXT_THREAD_3(M_FUN,float,float,float) - -//! Set up a threaded method callback for 1 integer argument -#define FLEXT_THREAD_I(M_FUN) \ -\ -FLEXT_THREAD_1(M_FUN,int) - -//! Set up a threaded method callback for 2 integer arguments -#define FLEXT_THREAD_II(M_FUN) \ -\ -FLEXT_THREAD_2(M_FUN,int,int) - -//! Set up a threaded method callback for 3 integer arguments -#define FLEXT_THREAD_III(M_FUN) \ -\ -FLEXT_THREAD_3(M_FUN,int,int,int) - -//! Set up a threaded method callback for 1 symbol argument -#define FLEXT_THREAD_S(M_FUN) \ -\ -FLEXT_THREAD_1(M_FUN,t_symptr) - -// deprecated -#define FLEXT_THREAD_G FLEXT_THREAD_V - -//! @} FLEXT_D_THREAD - - -#endif // FLEXT_THREADS - - -#endif diff --git a/externals/grill/flext/source/fldefs_setup.h b/externals/grill/flext/source/fldefs_setup.h deleted file mode 100644 index 17455b39..00000000 --- a/externals/grill/flext/source/fldefs_setup.h +++ /dev/null @@ -1,337 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file fldefs_setup.h - \brief This file contains all #defines for actual usage - -*/ - -#ifndef __FLEXT_DEFS_SETUP_H -#define __FLEXT_DEFS_SETUP_H - -// ==================================================================================== - -/*! \defgroup FLEXT_D_INSTANCE Class instantiation - \note For stand-alone externals (not part of a library) the name of your class - \note is of importance! It must be the same as the external (excluded an eventual ~ (tilde)) - - There are additional parameters that can be included in the NAME field of FLEXT_NEW etc.: - - - There may be additional names (aliases) appened, separated by spaces - - There may be a help path prepended, separated by a colon - - This help path doesn't work for Max/MSP. There you'll have to use a object mapping file (Max/MSP version >= 4.2) - - @{ -*/ - - -/*! \defgroup FLEXT_D_NEW Stand-alone class instantiation - Makes an actual instance of a stand-alone class. -*/ - -/*! \defgroup FLEXT_D_NEW_DSP Dsp class instantiation - Makes an actual instance of a dsp (aka "tilde") class (with signal processing). -*/ - -/*! \defgroup FLEXT_D_LIB Library class instantiation - Makes an actual instance of a class which is part of an object library (and not stand-alone). -*/ - -/*! \defgroup FLEXT_D_LIB_DSP Dsp library class instantiation - Makes an actual instance of a dsp (aka "tilde") class with signal processing - which is part of an object library (and not stand-alone). -*/ - -// NO ARGUMENTS -// ---------------------------------------- - -/*! \brief Implementation of a flext class with no arguments - \ingroup FLEXT_D_NEW - \param NAME the object's actual name(s) as a string (like "*", "trigger", "noise~", etc.) - \param NEW_CLASS the object's C++ class name -*/ -#define FLEXT_NEW(NAME,NEW_CLASS) \ -\ -REAL_NEW(NAME,NEW_CLASS,0,0,0) - -/*! \brief Implementation of a flext dsp class with no arguments - \ingroup FLEXT_D_NEW_DSP -*/ -#define FLEXT_NEW_DSP(NAME,NEW_CLASS) \ -\ -REAL_NEW(NAME,NEW_CLASS,1,0,0) - -/*! \brief Implementation of a flext dsp class with no arguments and no dsp inlet - \ingroup FLEXT_D_NEW_DSP -*/ -#define FLEXT_NEW_DSP0(NAME,NEW_CLASS) \ -\ -REAL_NEW(NAME,NEW_CLASS,1,1,0) - -/*! \brief Implementation of a flext class (part of a library) with no arguments - \ingroup FLEXT_D_LIB -*/ -#define FLEXT_LIB(NAME,NEW_CLASS) \ -\ -REAL_NEW(NAME,NEW_CLASS,0,0,1) - -/*! \brief Implementation of a flext dsp class (part of a library) with no arguments - \ingroup FLEXT_D_LIB_DSP -*/ -#define FLEXT_LIB_DSP(NAME,NEW_CLASS) \ -\ -REAL_NEW(NAME,NEW_CLASS,1,0,1) - -/*! \brief Implementation of a flext dsp class (part of a library) with no arguments and no dsp inlet - \ingroup FLEXT_D_LIB_DSP -*/ -#define FLEXT_LIB_DSP0(NAME,NEW_CLASS) \ -\ -REAL_NEW(NAME,NEW_CLASS,1,1,1) - - -// VARIABLE ARGUMENT LIST -// ---------------------------------------- - -/*! \brief Implementation of a flext class with a variable argument list - \ingroup FLEXT_D_NEW -*/ -#define FLEXT_NEW_V(NAME,NEW_CLASS) \ -\ -REAL_NEW_V(NAME,NEW_CLASS,0,0,0) - -/*! \brief Implementation of a flext dsp class with a variable argument list - \ingroup FLEXT_D_NEW_DSP -*/ -#define FLEXT_NEW_DSP_V(NAME,NEW_CLASS) \ -\ -REAL_NEW_V(NAME,NEW_CLASS,1,0,0) - -/*! \brief Implementation of a flext dsp class with a variable argument list and no dsp inlet - \ingroup FLEXT_D_NEW_DSP -*/ -#define FLEXT_NEW_DSP0_V(NAME,NEW_CLASS) \ -\ -REAL_NEW_V(NAME,NEW_CLASS,1,1,0) - -/*! \brief Implementation of a flext class (part of a library) with a variable argument list - \ingroup FLEXT_D_LIB -*/ -#define FLEXT_LIB_V(NAME,NEW_CLASS) \ -\ -REAL_NEW_V(NAME,NEW_CLASS, 0,0,1) - -/*! \brief Implementation of a flext dsp class (part of a library) with a variable argument list - \ingroup FLEXT_D_LIB_DSP -*/ -#define FLEXT_LIB_DSP_V(NAME,NEW_CLASS) \ -\ -REAL_NEW_V(NAME,NEW_CLASS, 1,0,1) - -/*! \brief Implementation of a flext dsp class (part of a library) with a variable argument list and no dsp inlet - \ingroup FLEXT_D_LIB_DSP -*/ -#define FLEXT_LIB_DSP0_V(NAME,NEW_CLASS) \ -\ -REAL_NEW_V(NAME,NEW_CLASS, 1,1,1) - - -// ONE ARGUMENT -// ---------------------------------------- - -/*! \brief Implementation of a flext class with one argument - \ingroup FLEXT_D_NEW -*/ -#define FLEXT_NEW_1(NAME,NEW_CLASS, TYPE) \ -\ -REAL_NEW_1(NAME,NEW_CLASS, 0,0,0, TYPE) - -/*! \brief Implementation of a flext dsp class with one argument - \ingroup FLEXT_D_NEW_DSP -*/ -#define FLEXT_NEW_DSP_1(NAME,NEW_CLASS, TYPE) \ -\ -REAL_NEW_1(NAME,NEW_CLASS, 1,0,0, TYPE) - -/*! \brief Implementation of a flext dsp class with one argument and no dsp inlet - \ingroup FLEXT_D_NEW_DSP -*/ -#define FLEXT_NEW_DSP0_1(NAME,NEW_CLASS, TYPE) \ -\ -REAL_NEW_1(NAME,NEW_CLASS, 1,1,0, TYPE) - -/*! \brief Implementation of a flext class (part of a library) with one argument - \ingroup FLEXT_D_LIB -*/ -#define FLEXT_LIB_1(NAME,NEW_CLASS, TYPE) \ -\ -REAL_NEW_1(NAME,NEW_CLASS, 0,0,1, TYPE) - -/*! \brief Implementation of a flext dsp class (part of a library) with one argument - \ingroup FLEXT_D_LIB_DSP -*/ -#define FLEXT_LIB_DSP_1(NAME,NEW_CLASS, TYPE) \ -\ -REAL_NEW_1(NAME,NEW_CLASS, 1,0,1, TYPE) - -/*! \brief Implementation of a flext dsp class (part of a library) with one argument and no dsp inlet - \ingroup FLEXT_D_LIB_DSP -*/ -#define FLEXT_LIB_DSP0_1(NAME,NEW_CLASS, TYPE) \ -\ -REAL_NEW_1(NAME,NEW_CLASS, 1,1,1, TYPE) - - -// TWO ARGUMENTS -// ---------------------------------------- - -/*! \brief Implementation of a flext class with 2 arguments - \ingroup FLEXT_D_NEW -*/ -#define FLEXT_NEW_2(NAME,NEW_CLASS, TYPE1, TYPE2) \ -\ -REAL_NEW_2(NAME,NEW_CLASS, 0,0,0, TYPE1, TYPE2) - -/*! \brief Implementation of a flext dsp class with 2 arguments - \ingroup FLEXT_D_NEW_DSP -*/ -#define FLEXT_NEW_DSP_2(NAME,NEW_CLASS, TYPE1, TYPE2) \ -\ -REAL_NEW_2(NAME,NEW_CLASS, 1,0,0, TYPE1, TYPE2) - -/*! \brief Implementation of a flext dsp class with 2 arguments and no dsp inlet - \ingroup FLEXT_D_NEW_DSP -*/ -#define FLEXT_NEW_DSP0_2(NAME,NEW_CLASS, TYPE1, TYPE2) \ -\ -REAL_NEW_2(NAME,NEW_CLASS, 1,1,0, TYPE1, TYPE2) - -/*! \brief Implementation of a flext class (part of a library) with 2 arguments - \ingroup FLEXT_D_LIB -*/ -#define FLEXT_LIB_2(NAME,NEW_CLASS, TYPE1, TYPE2) \ -\ -REAL_NEW_2(NAME,NEW_CLASS, 0,0,1, TYPE1, TYPE2) - -/*! \brief Implementation of a flext dsp class (part of a library) with 2 arguments - \ingroup FLEXT_D_LIB_DSP -*/ -#define FLEXT_LIB_DSP_2(NAME,NEW_CLASS, TYPE1, TYPE2) \ -\ -REAL_NEW_2(NAME,NEW_CLASS, 1,0,1, TYPE1, TYPE2) - -/*! \brief Implementation of a flext dsp class (part of a library) with 2 arguments and no dsp inlet - \ingroup FLEXT_D_LIB_DSP -*/ -#define FLEXT_LIB_DSP0_2(NAME,NEW_CLASS, TYPE1, TYPE2) \ -\ -REAL_NEW_2(NAME,NEW_CLASS, 1,1,1, TYPE1, TYPE2) - - -// THREE ARGUMENTS -// ---------------------------------------- - -/*! \brief Implementation of a flext class with 3 arguments - \ingroup FLEXT_D_NEW -*/ -#define FLEXT_NEW_3(NAME,NEW_CLASS, TYPE1, TYPE2, TYPE3) \ -\ -REAL_NEW_3(NAME,NEW_CLASS, 0,0,0, TYPE1, TYPE2, TYPE3) - -/*! \brief Implementation of a flext dsp class with 3 arguments - \ingroup FLEXT_D_NEW_DSP -*/ -#define FLEXT_NEW_DSP_3(NAME,NEW_CLASS, TYPE1, TYPE2, TYPE3) \ -\ -REAL_NEW_3(NAME,NEW_CLASS, 1,0,0, TYPE1, TYPE2, TYPE3) - -/*! \brief Implementation of a flext dsp class with 3 arguments and no dsp inlet - \ingroup FLEXT_D_NEW_DSP -*/ -#define FLEXT_NEW_DSP0_3(NAME,NEW_CLASS, TYPE1, TYPE2, TYPE3) \ -\ -REAL_NEW_3(NAME,NEW_CLASS, 1,1,0, TYPE1, TYPE2, TYPE3) - -/*! \brief Implementation of a flext class (part of a library) with 3 arguments - \ingroup FLEXT_D_LIB -*/ -#define FLEXT_LIB_3(NAME,NEW_CLASS, TYPE1, TYPE2, TYPE3) \ -\ -REAL_NEW_3(NAME,NEW_CLASS, 0,0,1, TYPE1, TYPE2, TYPE3) - -/*! \brief Implementation of a flext dsp class (part of a library) with 3 arguments - \ingroup FLEXT_D_LIB_DSP -*/ -#define FLEXT_LIB_DSP_3(NAME,NEW_CLASS, TYPE1, TYPE2, TYPE3) \ -\ -REAL_NEW_3(NAME,NEW_CLASS, 1,0,1, TYPE1, TYPE2, TYPE3) - -/*! \brief Implementation of a flext dsp class (part of a library) with 3 arguments and no dsp inlet - \ingroup FLEXT_D_LIB_DSP -*/ -#define FLEXT_LIB_DSP0_3(NAME,NEW_CLASS, TYPE1, TYPE2, TYPE3) \ -\ -REAL_NEW_3(NAME,NEW_CLASS, 1,1,1, TYPE1, TYPE2, TYPE3) - - -// deprecated stuff - -/*! \defgroup FLEXT_D_DEPRECATED Deprecated definitions - \deprecated - @{ -*/ - -#define FLEXT_NEW_G FLEXT_NEW_V - -#define FLEXT_NEW_TILDE FLEXT_NEW_DSP -#define FLEXT_NEW_TILDE_G FLEXT_NEW_DSP_V -#define FLEXT_NEW_TILDE_1 FLEXT_NEW_DSP_1 -#define FLEXT_NEW_TILDE_2 FLEXT_NEW_DSP_2 -#define FLEXT_NEW_TILDE_3 FLEXT_NEW_DSP_3 - -#define FLEXT_LIB_G FLEXT_LIB_V - -#define FLEXT_LIB_TILDE FLEXT_LIB_DSP -#define FLEXT_LIB_TILDE_G FLEXT_LIB_DSP_V -#define FLEXT_LIB_TILDE_1 FLEXT_LIB_DSP_1 -#define FLEXT_LIB_TILDE_2 FLEXT_LIB_DSP_2 -#define FLEXT_LIB_TILDE_3 FLEXT_LIB_DSP_3 - -#define FLEXT_TILDE_SETUP FLEXT_DSP_SETUP - -//! @} FLEXT_D_DEPRECATED - - -/*! \defgroup FLEXT_D_LIBRARY Definitions for library objects - @{ -*/ - -/*! \brief Specify that to declare the library itself. - \note If you have a library this is compulsory (to register all the objects of the library) -*/ -#define FLEXT_LIB_SETUP(NAME,SETUPFUN) REAL_LIB_SETUP(NAME,SETUPFUN) - -/*! \brief Register an object in the library. - \note This is used in the library setup function -*/ -#define FLEXT_SETUP(cl) REAL_SETUP(cl,0) - -/*! \brief Register a DSP object in the library. - \note This is used in the library setup function -*/ -#define FLEXT_DSP_SETUP(cl) REAL_SETUP(cl,1) - -//! @} FLEXT_D_LIBRARY - - -//! @} FLEXT_D_INSTANCE - - -#endif diff --git a/externals/grill/flext/source/fldoxygen.h b/externals/grill/flext/source/fldoxygen.h deleted file mode 100644 index 96343528..00000000 --- a/externals/grill/flext/source/fldoxygen.h +++ /dev/null @@ -1,216 +0,0 @@ -#ifndef __FLEXT_DOXYGEN_H -#define __FLEXT_DOXYGEN_H - -/*! \file fldoxygen.h - \brief Doxygen definitions - \remark There is no code in here, just documentation stuff. -*/ - -/*! - -\mainpage flext - a C++ layer for cross-platform development of PD and Max/MSP objects - -\section INTRO Introduction - -Currently there exist two widely used modular systems for real-time audio that can be -extended by self-written objects (so called "externals"):
-Max/MSP (http://www.cycling74.com) and Pure Data (http://www.pure-data.org) . - -Both come with APIs that are not very different (as they share their origin), but as well not quite the same. -Flext seeks to provide a unifying interface for the APIs of those real-time systems while also -concentrating on making use of the advantages of the object orientation of the C++ language. - -Consequently, flext allows to write externals (or libraries of a number of these), that can -be compiled for both systems (with various compilers on a few platforms) without changes to the -source code. -Flext also tries to overcome some limitations of the real-time systems and introduces new features. - -The advantages of flext are: -
    -
  • Identical source code for PD and Max/MSP objects on a number of platforms -
  • Better readability of code compared to straight C externals -
  • Faster development, more robust coding -
  • Sharing of common methods and data by using base classes -
  • Transparent use of threads for methods -
  • Libraries of externals in Max/MSP -
  • More than 3 typed creation arguments possible for Max/MSP -
  • Any input to any object's inlet (with the exception of signal streams) -
  • Control of the object state by use of Max/Jitter-like "attributes" -
- -Naturally there are some cons, too: -
    -
  • Introduces a small overhead to speed of message handling -
  • Overhead in object size (due to possibly unneeded library code) when statically linked -
- -Currently, flext supports -
    -
  • PD on Windows with Microsoft Visual C++, Borland C++ and gcc(cygwin) compilers -
  • PD on Linux with gcc -
  • PD on Mac OSX with gcc (makefile or Xcode) -
  • Max/MSP on Mac OS9 and OSX with Metrowerks CodeWarrior -
- -\section LICENSE License - -Flext is covered by the GPL. - -flext - C++ layer for Max/MSP and pd (pure data) externals
-Copyright (C) 2001-2005 Thomas Grill - -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. - -In the official flext distribution, the GNU General Public License is -in the file gpl.txt
-Also see the file license.txt for notes on -referenced works and their license texts. - -\section DOWNLOAD Download - -Download the latest flext version from http://grrrr.org/ext/flext .
-Alternatively, you can check out the cvs version from http://sourceforge.net/projects/pure-data . - -\section USAGE Usage - -As a developer, you should know the C++ language, how to use a makefile (especially necessary for linux) -and how to steer your compiler.
-Flext can be compiled as a static library which has then to be linked to the code of your external. -For most applications you won't have to use any of the native PD or Max/MSP API functions as they are all -encapsulated by flext. - -So let's come to the point... how does a typical flext object look like? - -This is the object "attr1", one of the flext tutorial examples: - -\verbatim -// enable attribute processing -#define FLEXT_ATTRIBUTES 1 - -// include flext header -#include - -// check for appropriate flext version -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 400) -#error You need at least flext version 0.4.0 -#endif -\endverbatim - -With these lines, all the necessary definitions from the flext package have been included. - -\verbatim -class attr1: - public flext_base -{ - FLEXT_HEADER(attr1,flext_base) -\endverbatim - -A flext class is simply defined by inheriting from the flext_base (see also \ref FLEXT_CLASS) -or flext_dsp (see also \ref FLEXT_DSP) classes. -Additionally some information has to be added using FLEXT_HEADER (see \ref FLEXT_D_HEADER) - -\verbatim -public: - // constructor - attr1(); -\endverbatim - -Normally the constructor takes the creation arguments of an object. Here there are none. - -\verbatim -protected: - void m_trigger(float f); - - // stored argument - float arg; -\endverbatim - -These are methods and data elements for internal class usage. Flext doesn't know about them -as long as they are not registered. - -\verbatim -private: - // callback for method "m_trigger" (with one float argument) - FLEXT_CALLBACK_F(m_trigger); - - // define attribute callbacks for variable "arg" (with GET and SET properties) - FLEXT_ATTRVAR_F(arg); -}; -\endverbatim - -For each method that shall be exposed to the realtime-system (for receiving messages) and -every attribute (for setting and getting values) callbacks have to be set up. -The functions in the groups \ref FLEXT_D_CALLBACK and \ref FLEXT_D_ATTRIB allow for their -convenient definition. - -\verbatim -// instantiate the class -FLEXT_NEW("attr1",attr1) -\endverbatim - -With FLEXT_NEW the class is registered for the real-time system. -The number of creation arguments and their types must be taken into account here. -There are several variants depending on whether a message oriented (see \ref FLEXT_D_NEW) -or a DSP object (see \ref FLEXT_D_NEW_DSP) is created and whether it resides in a object library -(see \ref FLEXT_D_LIB and \ref FLEXT_D_LIB_DSP).
- -\verbatim -attr1::attr1(): - arg(0) // initialize argument -{ - // define inlets - AddInAnything(); // first inlet of type anything (index 0) - - // define outlets - AddOutFloat(); // one float outlet (has index 0) -\endverbatim - -Every inlet and outlet that the object shall have has to be registered. -This is done with the functions in \ref FLEXT_C_IO_ADD. - -\verbatim - // register methods - FLEXT_ADDMETHOD(0,m_trigger); // register method (for floats) "m_trigger" for inlet 0 - - FLEXT_ADDATTR_VAR1("arg",arg); // register attribute "arg" with variable arg -} -\endverbatim - -Likewise, every method (called by a message) (see \ref FLEXT_D_ADDMETHOD) and every -attribute (see \ref FLEXT_D_ADDATTR) exposed to the system has to be registered. -Here the registration at instance creation is shown - there's another way by registering at -class setup level, which is more efficient but can only be used if the methods or attributes -used are known beforehand (see \ref FLEXT_D_CADDMETHOD and \ref FLEXT_D_CADDATTR). - -\verbatim -void attr1::m_trigger(float f) -{ - float res = arg+f; - - // output value to outlet - ToOutFloat(0,res); // (0 stands for the outlet index 0) -} -\endverbatim - -This is a method that is triggered with a message. It does some calculation and then outputs -a value to an outlet. There are numerous functions (see \ref FLEXT_C_IO_OUT) supporting -that functionality. - -Be sure to work through the examples provided with the flext tutorial. These should give you -an overview about the possibilities of flext. -The "modules" link at the top of the page leads to a complete reference -of flext functions and classes. - -*/ - -#endif diff --git a/externals/grill/flext/source/fldsp.cpp b/externals/grill/flext/source/fldsp.cpp deleted file mode 100644 index e741c22a..00000000 --- a/externals/grill/flext/source/fldsp.cpp +++ /dev/null @@ -1,118 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file fldsp.cpp - \brief Implementation of the flext dsp base class. -*/ - -#include "flext.h" -#include "flinternal.h" -#include - -// === flext_dsp ============================================== - -void flext_dsp::Setup(t_classid id) -{ -#if FLEXT_SYS == FLEXT_SYS_PD -// add_method1(c,cb_enable,"enable",A_FLOAT); - AddMethod(id,0,MakeSymbol("enable"),&cb_enable); -#endif -} - -flext_dsp::FLEXT_CLASSDEF(flext_dsp)() - : srate(sys_getsr()),blksz(sys_getblksize()) - , vecs(NULL) -#if FLEXT_SYS != FLEXT_SYS_MAX - , dspon(true) -#endif -{} - -void flext_dsp::Exit() -{ - flext_base::Exit(); - - if(vecs) delete[] vecs; -} - - -t_int *flext_dsp::dspmeth(t_int *w) -{ - flext_dsp *obj = (flext_dsp *)(size_t)w[1]; - -#if FLEXT_SYS == FLEXT_SYS_MAX - if(!obj->thisHdr()->z_disabled) -#else - if(LIKELY(obj->dspon)) -#endif - { - flext_base::indsp = true; - obj->CbSignal(); - flext_base::indsp = false; - } - return w+2; -} - -void flext_dsp::SetupDsp(t_signal **sp) -{ - int i; - int in = CntInSig(); - int out = CntOutSig(); -#if FLEXT_SYS == FLEXT_SYS_PD - // min. 1 input channel! (CLASS_MAININLET in pd...) - if(!in) in = 1; -#endif - - // store current dsp parameters - srate = sp[0]->s_sr; - blksz = sp[0]->s_n; // is this guaranteed to be the same as sys_getblksize() ? - - // store in and out signal vectors - - if((in+out) && !vecs) - vecs = new t_signalvec[in+out]; - - for(i = 0; i < in; ++i) - vecs[i] = sp[i]->s_vec; - for(i = 0; i < out; ++i) - vecs[in+i] = sp[in+i]->s_vec; - - // with the following call derived classes can do their eventual DSP setup - if(CbDsp()) { - // set the DSP function - dsp_add((t_dspmethod)dspmeth,1,this); - } -} - -void flext_dsp::m_dsp(int /*n*/,t_signalvec const * /*insigs*/,t_signalvec const * /*outsigs*/) {} - -bool flext_dsp::CbDsp() -{ - // invoke legacy method - m_dsp(Blocksize(),InSig(),OutSig()); - return true; -} - -// this function will be overridden anyway - the probably useless default is clearing all outputs -void flext_dsp::m_signal(int n,t_sample *const * /*insigs*/,t_sample *const *outs) -{ - for(int i = 0; i < CntOutSig(); ++i) ZeroSamples(outs[i],n); -} - -void flext_dsp::CbSignal() -{ - // invoke legacy method - m_signal(Blocksize(),InSig(),OutSig()); -} - - -#if FLEXT_SYS == FLEXT_SYS_PD -//void flext_dsp::cb_enable(flext_hdr *c,t_float on) { thisObject(c)->dspon = on != 0; } -bool flext_dsp::cb_enable(flext_base *b,float &on) { static_cast(b)->dspon = on != 0; return true; } -#endif diff --git a/externals/grill/flext/source/fldsp.h b/externals/grill/flext/source/fldsp.h deleted file mode 100644 index f4c6f470..00000000 --- a/externals/grill/flext/source/fldsp.h +++ /dev/null @@ -1,184 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file fldsp.h - \brief Declares the flext dsp class - -*/ - -#ifndef __FLDSP_H -#define __FLDSP_H - -// include the header file declaring the base classes -#include "flext.h" - - -// === flext_dsp ================================================== - -class FLEXT_SHARE FLEXT_CLASSDEF(flext_dsp); -typedef class FLEXT_SHARE FLEXT_CLASSDEF(flext_dsp) flext_dsp; - - -/*! \brief Flext dsp enabled base object -*/ -class FLEXT_SHARE FLEXT_CLASSDEF(flext_dsp): - public flext_base -{ - FLEXT_HEADER_S(FLEXT_CLASSDEF(flext_dsp),flext_base,Setup) - - friend class FLEXT_SHARE FLEXT_CLASSDEF(flext_base); - -public: - -/*! \defgroup FLEXT_DSP Flext dsp class - - @{ -*/ - -/*! \defgroup FLEXT_C_DSP Basic dsp functionality - - @{ -*/ - - //! returns current sample rate - float Samplerate() const { return srate; } - - //! returns current block (aka vector) size - int Blocksize() const { return blksz; } - - //! returns array of input vectors (CntInSig() vectors) - t_sample *const *InSig() const { return vecs; } - - //! returns input vector - t_sample *InSig(int i) const { return InSig()[i]; } - - //! returns array of output vectors (CntOutSig() vectors) - // \todo cache that returned pointer - t_sample *const *OutSig() const - { - int i = CntInSig(); - // in PD we have at least one actual dsp in vector -#if FLEXT_SYS == FLEXT_SYS_PD - return vecs+(i?i:1); -#elif FLEXT_SYS == FLEXT_SYS_MAX - return vecs+i; -#else -#error -#endif - } - - //! returns output vector - t_sample *OutSig(int i) const { return OutSig()[i]; } - - //! typedef describing a signal vector - typedef t_sample *t_signalvec; - -//! @} - -// --- inheritable virtual methods -------------------------------- - -/*! \defgroup FLEXT_C_DSP_VIRTUAL Flext virtual dsp functions - - @{ -*/ - /*! \brief Called on every dsp init. - \note Don't expect any valid data in the signal vectors! - flext_dsp::CbDsp should not be called by the derived class - - \return true (default)... use DSP, false, don't use DSP - */ - virtual bool CbDsp(); - - /*! \brief Called with every signal vector - here you do the dsp calculation - flext_dsp::CbSignal fills all output vectors with silence - */ - virtual void CbSignal(); - - - /*! \brief Deprecated method for CbSignal - \deprecated - \param n: frames (aka samples) in one signal vector - \param insigs: array of input vectors (get number with function CntInSig()) - \param outsigs: array of output vectors (get number with function CntOutSig()) - */ - virtual void m_dsp(int n,t_signalvec const *insigs,t_signalvec const *outsigs); - - /*! \brief Deprecated method for CbSignal - \deprecated - \param n: frames (aka samples) in one signal vector - \param insigs: array of input vectors (get number with function CntInSig()) - \param outsigs: array of output vectors (get number with function CntOutSig()) - */ - virtual void m_signal(int n,t_sample *const *insigs,t_sample *const *outsigs); - -//! @} - - -/*! \defgroup FLEXT_C_DSP_INOUT Flext dsp in-/outlet functions - \note These must be called in the class' constructor - - @{ -*/ -// --- inlet/outlet stuff ----------------------------------------- - - /*! \brief Add signal inlet(s) - \param m Number of inlets to add - */ - void AddInSignal(int m = 1) { AddInlet(xlet_sig,m); } - - /*! \brief Add signal inlet (with description) - \param desc Description of inlet - */ - void AddInSignal(const char *desc) { AddInlet(xlet_sig,1,desc); } - - /*! \brief Add signal outlet(s) - \param m Number of inlets to add - */ - void AddOutSignal(int m = 1) { AddOutlet(xlet_sig,m); } - - /*! \brief Add signal outlet (with description) - \param desc Description of outlet - */ - void AddOutSignal(const char *desc) { AddOutlet(xlet_sig,1,desc); } - -//! @} - -//! @} - -protected: - - FLEXT_CLASSDEF(flext_dsp)(); - - virtual void Exit(); - -private: - - // not static, could be different in different patchers.. - float srate; - int blksz; - t_signalvec *vecs; - - // setup function - static void Setup(t_classid c); - -#if FLEXT_SYS == FLEXT_SYS_PD - static bool cb_enable(flext_base *c,float &on); - bool dspon; -#endif - - static inline flext_dsp *thisObject(flext_hdr *c) { return FLEXT_CAST(c->data); } - - void SetupDsp(t_signal **sp); - - // dsp stuff - static t_int *dspmeth(t_int *w); -}; - -#endif diff --git a/externals/grill/flext/source/flext.cpp b/externals/grill/flext/source/flext.cpp deleted file mode 100644 index 4a8e65e2..00000000 --- a/externals/grill/flext/source/flext.cpp +++ /dev/null @@ -1,261 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flext.cpp - \brief Implementation of the flext base class. -*/ - -#include "flext.h" -#include "flinternal.h" -#include "fldsp.h" -#include - -// === flext_base ============================================ - -const t_symbol *flext_base::curtag = NULL; - -flext_base::FLEXT_CLASSDEF(flext_base)() - : incnt(0),outcnt(0) - , insigs(0),outsigs(0) -#if FLEXT_SYS == FLEXT_SYS_PD || FLEXT_SYS == FLEXT_SYS_MAX - ,outlets(NULL),inlets(NULL) -#endif -#if FLEXT_SYS == FLEXT_SYS_MAX - ,indesc(NULL),outdesc(NULL) -#endif -{ - FLEXT_LOG1("%s - flext logging is on",thisName()); - - methhead = NULL; - bindhead = NULL; - - if(HasAttributes()) { - // initialize when attribute processing is enabled - attrhead = new ItemCont; - attrdata = new AttrDataCont; - } - else { - attrhead = NULL; - attrdata = NULL; - } -} - -/*! This virtual function is called after the object has been created, that is, - after the constructor has been processed. - It creates the inlets and outlets and the message and attribute lists. - \note You can override it in your own class, but be sure to call it, - \note otherwise no inlets/outlets will be created - \note All inlet, outlets, method and attribute declarations must be made before a call to Init! - \remark Creation of inlets/outlets can't be done upon declaration, as Max/MSP needs creation - \remark in reverse. -*/ -bool flext_base::Init() -{ - bool ok = flext_obj::Init(); - - if(ok) ok = InitInlets() && InitOutlets(); - - if(ok) { -#if FLEXT_SYS == FLEXT_SYS_MAX - // according to the Max/MSP SDK this should be prior to any inlet creation, BUT - // that doesn't seem to be true... multiple signal ins and additional inlets don't seem to work then - if(NeedDSP()) dsp_setup(thisHdr(),CntInSig()); // signal inlets -#endif - - if(HasAttributes() && m_holdaargc && m_holdaargv) { - // initialize creation attributes - ok = InitAttrib(m_holdaargc,m_holdaargv); - } - } - - return ok; -} - - -/*! This virtual function is called before the destructor. - We do this because here we can still call virtual methods. -*/ -void flext_base::Exit() -{ -#if FLEXT_SYS == FLEXT_SYS_MAX - // according to David Z. one should do that first... - if(NeedDSP()) dsp_free(thisHdr()); -#endif - -#if FLEXT_SYS == FLEXT_SYS_PD && !defined(FLEXT_NOATTREDIT) - // attribute editor window may still be open -> close it - gfxstub_deleteforkey(thisHdr()); -#endif - -#ifdef FLEXT_THREADS - StopThreads(); -#endif - - // send remaining pending messages for this object - QFlush(this); - - // delete message lists - if(bindhead) delete bindhead; // ATTENTION: the object must free all memory associated to bindings itself - if(methhead) delete methhead; - if(attrhead) delete attrhead; - if(attrdata) delete attrdata; - -#if FLEXT_SYS == FLEXT_SYS_PD || FLEXT_SYS == FLEXT_SYS_MAX - if(outlets) delete[] outlets; - - if(inlets) { - FLEXT_ASSERT(incnt > 1); - for(int ix = 1; ix < incnt; ++ix) - if(inlets[ix-1]) { - // release proxy object -#if FLEXT_SYS == FLEXT_SYS_PD - pd_free(&inlets[ix-1]->obj.ob_pd); -#elif FLEXT_SYS == FLEXT_SYS_MAX - freeobject((object *)inlets[ix-1]); -#endif - } - delete[] inlets; - } -#endif - -#if FLEXT_SYS == FLEXT_SYS_MAX - if(indesc) { - for(int i = 0; i < incnt; ++i) if(indesc[i]) delete[] indesc[i]; - delete[] indesc; - } - if(outdesc) { - for(int i = 0; i < outcnt; ++i) if(outdesc[i]) delete[] outdesc[i]; - delete[] outdesc; - } -#endif - - flext_obj::Exit(); -} - - -void flext_base::AddMessageMethods(t_class *c,bool dsp,bool dspin) -{ - add_loadbang(c,cb_loadbang); - -#if FLEXT_SYS == FLEXT_SYS_PD - class_addmethod(c,(t_method)cb_click,gensym("click"),A_FLOAT,A_FLOAT,A_FLOAT,A_FLOAT,A_FLOAT,A_NULL); -#elif FLEXT_SYS == FLEXT_SYS_MAX - add_assist(c,cb_assist); - add_dblclick(c,cb_click); -#endif - - SetProxies(c,dsp); - StartQueue(); - - if(dsp) { -#if FLEXT_SYS == FLEXT_SYS_MAX - add_dsp(c,cb_dsp); - dsp_initclass(); -#elif FLEXT_SYS == FLEXT_SYS_PD - if(dspin) - CLASS_MAINSIGNALIN(c,flext_hdr,defsig); // float messages going into the left inlet are converted to signal - add_dsp(c,cb_dsp); -#else -#error Platform not supported! -#endif - } -} - - -/*! Set up proxy classes and basic methods at class creation time - This ensures that they are processed before the registered flext messages -*/ -void flext_base::Setup(t_classid id) -{ - t_class *c = getClass(id); - -#if FLEXT_SYS == FLEXT_SYS_MAX - if(!IsLib(id)) -#endif - AddMessageMethods(c,IsDSP(id),HasDSPIn(id)); - - if(HasAttributes(id)) { - AddMethod(id,0,"getattributes",cb_ListAttrib); - AddMethod(id,0,"getmethods",cb_ListMethods); - -#if FLEXT_SYS == FLEXT_SYS_PD && !defined(FLEXT_NOATTREDIT) - AddMethod(id,0,"attributedialog",cb_AttrDialog); -#endif - } - -#if FLEXT_SYS == FLEXT_SYS_PD - SetGfx(id); -#endif -} - -void flext_base::cb_loadbang(flext_hdr *c) { thisObject(c)->CbLoadbang(); } - -void flext_base::m_loadbang() {} -void flext_base::CbLoadbang() { m_loadbang(); } - -void flext_base::CbClick() {} - -#if FLEXT_SYS == FLEXT_SYS_PD -void flext_base::cb_click(flext_hdr *c,t_floatarg xpos,t_floatarg ypos,t_floatarg shift,t_floatarg ctrl,t_floatarg alt) -{ - if(shift) thisObject(c)->CbClick(); -} -#endif - -#if FLEXT_SYS == FLEXT_SYS_MAX -void flext_base::cb_click(flext_hdr *c, Point pt, short mods) -{ - thisObject(c)->CbClick(); -} - -void flext_base::cb_assist(flext_hdr *c,void * /*b*/,long msg,long arg,char *s) -{ - flext_base *th = thisObject(c); - - switch(msg) { - case 1: //ASSIST_INLET: - if(arg < th->incnt && th->indesc[arg]) strcpy(s,th->indesc[arg]); - break; - case 2: //ASSIST_OUTLET: - if(arg < th->outcnt) { - if(th->outdesc[arg]) strcpy(s,th->outdesc[arg]); - } - else - if(arg == th->outcnt && th->HasAttributes()) strcpy(s,"Attributes"); - break; - } -} -#endif - -#if FLEXT_SYS == FLEXT_SYS_MAX -void flext_base::cb_dsp(flext_hdr *c,t_signal **sp,short *count) -#else -void flext_base::cb_dsp(flext_hdr *c,t_signal **sp) -#endif -{ - flext_base *bobj = thisObject(c); - -#if FLEXT_SYS == FLEXT_SYS_MAX - // we must extra-check here if it is really a DSP object - // obviously, for objects that are part of a library, one dsp_initclass enables DSP for all - if(!bobj->IsDSP()) return; -#endif - - flext_dsp *obj; -#ifdef FLEXT_DEBUG - obj = dynamic_cast(bobj); -#else - obj = static_cast(bobj); -#endif - - FLEXT_ASSERT(obj); - obj->SetupDsp(sp); -} - diff --git a/externals/grill/flext/source/flext.h b/externals/grill/flext/source/flext.h deleted file mode 100644 index 71a35ea6..00000000 --- a/externals/grill/flext/source/flext.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flext.h - \brief This is the main flext include file. - - The basic definitions are set here and the necessary header files are included -*/ - -#ifndef __FLEXT_H -#define __FLEXT_H - - -/*! \defgroup FLEXT_GLOBAL Flext global definitions - @{ -*/ - -//! \brief flext version number -#define FLEXT_VERSION 501 - -//! \brief flext version string -#define FLEXT_VERSTR "0.5.1pre" - -//! @} - - -// determine System/OS/CPU -#include "flprefix.h" - -// include headers necessary for multi-threading -#ifdef FLEXT_THREADS - #if FLEXT_THREADS == FLEXT_THR_POSIX - extern "C" { - #include - #include - } - #elif FLEXT_THREADS == FLEXT_THR_MP - #include - #elif FLEXT_THREADS == FLEXT_THR_WIN32 - #if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x500 - #include - #include - #else - #error "Win32 threading model only supported for Win2000/XP or newer" - #endif - #else - #error "Thread model not supported" - #endif -#endif - - -// include all the flext interface definitions -#include "fldefs.h" - -// include the basic flext object classes -#include "flclass.h" - -// include the flext dsp class -#include "fldsp.h" - -#endif // FLEXT_H diff --git a/externals/grill/flext/source/flfeatures.h b/externals/grill/flext/source/flfeatures.h deleted file mode 100644 index efb198d0..00000000 --- a/externals/grill/flext/source/flfeatures.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flfeatures.h - \brief Detect version-specific features. -*/ - -#ifndef __FLFEATURES_H -#define __FLFEATURES_H - -// check if PD API supports buffer dirty time -#if defined(PD_DEVEL_VERSION) && defined(PD_MAJOR_VERSION) && defined(PD_MINOR_VERSION) -#if PD_MINOR_VERSION >= 36 && PD_MINOR_VERSION <= 38 -// array locks have been removed in devel_0_39 - #define _FLEXT_HAVE_PD_GARRAYLOCKS -#endif -#if PD_MINOR_VERSION >= 36 - #define _FLEXT_HAVE_PD_GARRAYUPDATETIME -#endif -#endif - -#if defined(MAC_VERSION) || defined(WIN_VERSION) - // not for OS9 - #define _FLEXT_HAVE_MAX_INUSEFLAG -#endif - -#endif diff --git a/externals/grill/flext/source/flinternal.h b/externals/grill/flext/source/flinternal.h deleted file mode 100644 index d0d76eba..00000000 --- a/externals/grill/flext/source/flinternal.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flinternal.h - \brief Definitions for internal flext usage - \internal - - Here, a few shortcuts for common Max/MSP or PD library calls and type definitions - are declared -*/ - -#ifndef __FLEXT_INTERNALS_H -#define __FLEXT_INTERNALS_H - -#include "flstdc.h" - - -#if FLEXT_SYS == FLEXT_SYS_PD - -#define object_new(clss) pd_new(clss) -#define object_free(obj) pd_free(&(obj)->ob_pd) - - - -#define add_dsp(clss,meth) class_addmethod(clss, (t_method)meth,gensym("dsp"),A_NULL) -#define add_bang(clss,meth) class_addbang(clss, (t_method)meth) -#define add_float(clss,meth) class_addfloat(clss, (t_method)meth) -#define add_floatn(clss,meth,n) class_addmethod(clss, (t_method)meth,gensym("ft" #n),A_FLOAT,A_NULL) -#define add_flint(clss,meth) class_addfloat(clss, (t_method)meth) -#define add_flintn(clss,meth,n) class_addmethod(clss, (t_method)meth,gensym("ft" #n),A_FLOAT,A_NULL) -#define add_method(clss,meth,text) class_addmethod(clss, (t_method)meth, gensym(text), A_NULL) -#define add_methodG(clss,meth,text) class_addmethod(clss, (t_method)meth, gensym(text), A_GIMME,A_NULL) -#define add_method1(clss,meth,text,a1) class_addmethod(clss, (t_method)meth, gensym(text), a1,A_NULL) -#define add_method2(clss,meth,text,a1,a2) class_addmethod(clss, (t_method)meth, gensym(text), a1,a2,A_NULL) -#define add_method3(clss,meth,text,a1,a2,a3) class_addmethod(clss, (t_method)meth, gensym(text), a1,a2,a3,A_NULL) -#define add_method4(clss,meth,text,a1,a2,a3,a4) class_addmethod(clss, (t_method)meth, gensym(text), a1,a2,a3,a4,A_NULL) -#define add_method5(clss,meth,text,a1,a2,a3,a5) class_addmethod(clss, (t_method)meth, gensym(text), a1,a2,a3,a4,a5,A_NULL) -#define add_loadbang(clss,meth) class_addmethod(clss,(t_method)meth, gensym("loadbang"), A_CANT, A_NULL) -#define add_anything(clss,meth) class_addanything(clss,meth) - - -#define newout_signal(clss) outlet_new(clss,const_cast(flext::sym_signal)) -#define newout_float(clss) outlet_new(clss,const_cast(flext::sym_float)) -#define newout_flint(clss) outlet_new(clss,const_cast(flext::sym_float)) -#define newout_list(clss) outlet_new(clss,const_cast(flext::sym_list)) -#define newout_symbol(clss) outlet_new(clss,const_cast(flext::sym_symbol)) -#define newout_anything(clss) outlet_new(clss,const_cast(flext::sym_anything)) - -#define outlet_flint(o,v) outlet_float(o,(float)(v)) - -typedef t_perfroutine t_dspmethod; - -#define qelem_new clock_new -#define qelem_free clock_free -#define qelem_set clock_delay -#define qelem_front clock_delay -#define qelem_unset clock_unset - -#define CRITON() -#define CRITOFF() - - -#elif FLEXT_SYS == FLEXT_SYS_MAX - -typedef void t_outlet; - - -#define object_new(clss) newobject(clss) -#define object_free(obj) freeobject((object *)(obj)) - -#define add_dsp(clss,meth) addmess((method)meth,"dsp",A_CANT,A_NOTHING) -#define add_bang(clss,meth) addbang((method)meth) -#define add_float(clss,meth) addfloat((method)meth) -#define add_floatn(clss,meth,n) addftx((method)meth,n) -#define add_flint(clss,meth) addint((method)meth) -#define add_flintn(clss,meth,n) addinx((method)meth,n) -#define add_method(clss,meth,text) addmess((method)meth, text, A_NOTHING) -#define add_methodG(clss,meth,text) addmess((method)meth, text, A_GIMME,A_NOTHING) -#define add_method1(clss,meth,text,a1) addmess((method)meth, text, a1,A_NOTHING) -#define add_method2(clss,meth,text,a1,a2) addmess((method)meth, text, a1,a2,A_NOTHING) -#define add_method3(clss,meth,text,a1,a2,a3) addmess((method)meth, text, a1,a2,a3,A_NOTHING) -#define add_method4(clss,meth,text,a1,a2,a3,a4) addmess((method)meth, text, a1,a2,a3,a4,A_NOTHING) -#define add_method5(clss,meth,text,a1,a2,a3,a5) addmess((method)meth, text, a1,a2,a3,a4,a5,A_NOTHING) -#define add_anything(clss,meth) addmess((method)meth, "anything", A_GIMME,A_NOTHING) - -#define add_assist(clss,meth) addmess((method)meth, "assist", A_CANT, A_NULL) -#define add_loadbang(clss,meth) addmess((method)meth, "loadbang", A_CANT, A_NULL) -#define add_dblclick(clss,meth) addmess((method)meth, "dblclick", A_CANT, A_NULL) - -#define newout_signal(clss) outlet_new(clss,"signal") -#define newout_float(clss) outlet_new(clss,"float") -#define newout_flint(clss) outlet_new(clss,"int") -#define newout_list(clss) outlet_new(clss,"list") -#define newout_symbol(clss) outlet_new(clss,"symbol") -#define newout_anything(clss) outlet_new(clss,0) - -#define outlet_flint(o,v) outlet_int(o,(int)(v)) -#define outlet_symbol(o,s) outlet_anything(o,s,0,NULL) - -typedef t_perfroutine t_dspmethod; - -#define CRITON() short state = lockout_set(1) -#define CRITOFF() lockout_set(state) - - -#elif FLEXT_SYS == FLEXT_SYS_JMAX - - -#endif - - -#endif diff --git a/externals/grill/flext/source/flitem.cpp b/externals/grill/flext/source/flitem.cpp deleted file mode 100644 index 1ae65fa8..00000000 --- a/externals/grill/flext/source/flitem.cpp +++ /dev/null @@ -1,127 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flitem.cpp - \brief Processing of method and attribute lists. -*/ - -#include "flext.h" -#include - -flext_base::ItemSet::~ItemSet() { clear(); } - -void flext_base::ItemSet::clear() -{ - for(iterator it(*this); it; ++it) delete it.data(); - TablePtrMap::clear(); -} - - -flext_base::Item::~Item() -{ - if(nxt) delete nxt; -} - -flext_base::ItemCont::ItemCont(): - members(0),memsize(0),size(0),cont(NULL) -{} - -flext_base::ItemCont::~ItemCont() -{ - if(cont) { - for(int i = 0; i < size; ++i) delete cont[i]; - delete[] cont; - } -} - -void flext_base::ItemCont::Resize(int nsz) -{ - if(nsz > memsize) { - int nmemsz = nsz+10; // increment maximum allocation size - ItemSet **ncont = new ItemSet *[nmemsz]; // make new array - if(cont) { - memcpy(ncont,cont,size*sizeof(*cont)); // copy existing entries - delete[] cont; - } - cont = ncont; // set current array - memsize = nmemsz; // set new allocation size - } - - // make new items - while(size < nsz) cont[size++] = new ItemSet; -} - -void flext_base::ItemCont::Add(Item *item,const t_symbol *tag,int inlet) -{ - FLEXT_ASSERT(tag); - - if(!Contained(inlet)) Resize(inlet+2); - ItemSet &set = GetInlet(inlet); - Item *lst = set.find(tag); - if(!lst) { - Item *old = set.insert(tag,lst = item); - FLEXT_ASSERT(!old); - } - else - for(;;) - if(!lst->nxt) { lst->nxt = item; break; } - else lst = lst->nxt; - members++; -} - -bool flext_base::ItemCont::Remove(Item *item,const t_symbol *tag,int inlet,bool free) -{ - FLEXT_ASSERT(tag); - - if(Contained(inlet)) { - ItemSet &set = GetInlet(inlet); - Item *lit = set.find(tag); - for(Item *prv = NULL; lit; prv = lit,lit = lit->nxt) { - if(lit == item) { - if(prv) prv->nxt = lit->nxt; - else if(lit->nxt) { - Item *old = set.insert(tag,lit->nxt); - FLEXT_ASSERT(!old); - } - else { - Item *l = set.remove(tag); - FLEXT_ASSERT(l == lit); - } - - lit->nxt = NULL; - if(free) delete lit; - return true; - } - } - } - return false; -} - -flext_base::Item *flext_base::ItemCont::FindList(const t_symbol *tag,int inlet) -{ - FLEXT_ASSERT(tag); - return Contained(inlet)?GetInlet(inlet).find(tag):NULL; -} - -// --- class item lists (methods and attributes) ---------------- - -/* -typedef TablePtrMap ClassMap; - -static ClassMap classarr[2]; - -flext_base::ItemCont *flext_base::GetClassArr(t_classid c,int ix) -{ - ClassMap &map = classarr[ix]; - ItemCont *cont = map.find(c); - if(!cont) map.insert(c,cont = new ItemCont); - return cont; -} -*/ diff --git a/externals/grill/flext/source/fllib.cpp b/externals/grill/flext/source/fllib.cpp deleted file mode 100644 index 3b196f55..00000000 --- a/externals/grill/flext/source/fllib.cpp +++ /dev/null @@ -1,578 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file fllib.cpp - \brief Code for handling of object (and library) creation functions. -*/ - -#include "flext.h" -#include "flinternal.h" - -#include -#include -#include -#include - -#define ALIASDEL ',' - -#define ALIASSLASHES ":/\\" -#if FLEXT_OS == FLEXT_OS_MAC - #define ALIASSLASH ':' -#elif FLEXT_OS == FLEXT_OS_WIN - #if FLEXT_SYS == FLEXT_SYS_PD - #define ALIASSLASH '/' - #elif FLEXT_SYS == FLEXT_SYS_MAX - #define ALIASSLASH '/' - #else - #error "Undefined" - #endif -#else - // default to "/" - #define ALIASSLASH '/' -#endif - -//! Extract space-delimited words from a string -static const char *extract(const char *name,int ix = 0) -{ - char tmp[1024]; - const char *n = name; - - const char *del = strchr(name,ALIASDEL); - - if(del) { -#if 0 - char *t = tmp; - while(n < del && (isspace(*n) || strchr(ALIASSLASHES,*n))) ++n; - while(n < del && !isspace(*n)) { - char c = *(n++); - *(t++) = strchr(ALIASSLASHES,c)?ALIASSLASH:c; - } - while(*t == ALIASSLASH && t > tmp) --t; - *t = 0; -#endif - if(ix < 0) { - // eat white space in front of help definition - ++del; - while(*del && isspace(*del)) ++del; - return del; - } - - strncpy(tmp,name,del-name); - tmp[del-name] = 0; - n = tmp; - } - else if(ix < 0) - return NULL; // no explicit help name - - while(*n && isspace(*n)) ++n; - - for(int i = 0; n && *n; ++i) { - if(i == ix) { - char *t = tmp; - - for(; *n && !isspace(*n); ++t,++n) *t = *n; - *t = 0; - return *tmp?tmp:NULL; - } - else { - while(*n && !isspace(*n)) ++n; - while(*n && isspace(*n)) ++n; - } - } - - return NULL; -} - - -//! Check if object's name ends with a tilde -bool flext::chktilde(const char *objname) -{ -// int stplen = strlen(setupfun); - bool tilde = true; //!strncmp(setupfun,"_tilde",6); - - if((objname[strlen(objname)-1] == '~'?1:0)^(tilde?1:0)) { - if(tilde) - error("flext: %s (no trailing ~) is defined as a tilde object",objname); - else - error("flext::check_tilde: %s is no tilde object",objname); - return true; - } - else - return false; -} - -// this class stands for one library of objects -// there can be more if flext is a shared library -class flext_library -{ -public: - flext_library(const t_symbol *nm) - : name(nm) -#if FLEXT_SYS == FLEXT_SYS_MAX - , clss(NULL),dsp(false) -#endif - {} - - const t_symbol *name; -#if FLEXT_SYS == FLEXT_SYS_MAX - t_class *clss; - bool dsp; -#endif -}; - -// this class stands for one registered object -// it holds the class, type flags, constructor and destructor of the object and the creation arg types -// it will never be destroyed -class flext_class: - public flext_root -{ -public: - flext_class(t_class *&cl,flext_obj *(*newf)(int,t_atom *),void (*freef)(flext_hdr *)); - - t_class *const &clss; - - flext_obj *(*newfun)(int,t_atom *); - void (*freefun)(flext_hdr *c); - - int argc; - int *argv; - - flext_library *lib; - bool dsp:1,noi:1,attr:1,dist:1; - - flext_base::ItemCont meths,attrs; -}; - -flext_class::flext_class(t_class *&cl,flext_obj *(*newf)(int,t_atom *),void (*freef)(flext_hdr *)): - clss(cl), - newfun(newf),freefun(freef), - argc(0),argv(NULL) - , dist(false) -{} - -typedef TablePtrMap LibMap; -// static initialization (with constructor) doesn't work for Codewarrior -static LibMap *libnames = NULL; - -//! Store or retrieve registered classes -static flext_class *FindName(const t_symbol *s,flext_class *o = NULL) -{ - if(!libnames) libnames = new LibMap; - flext_class *cl = libnames->find(s); - if(!cl && o) - libnames->insert(s,cl = o); - return cl; -} - - -t_class *flext_obj::getClass(t_classid cl) { return cl->clss; } -bool flext_obj::HasAttributes(t_classid cl) { return cl->attr; } -bool flext_obj::IsDSP(t_classid cl) { return cl->dsp; } -bool flext_obj::HasDSPIn(t_classid cl) { return !cl->noi; } -bool flext_obj::IsLib(t_classid cl) { return cl->lib != NULL; } - -bool flext_obj::HasAttributes() const { return clss->attr; } -bool flext_obj::IsDSP() const { return clss->dsp; } -bool flext_obj::HasDSPIn() const { return !clss->noi; } -bool flext_obj::IsLib() const { return clss->lib != NULL; } - -#if FLEXT_SYS == FLEXT_SYS_MAX -bool flext_obj::NeedDSP() const { return clss->dsp || (clss->lib && clss->lib->dsp); } -#endif - -static flext_library *curlib = NULL; - -void flext_obj::lib_init(const char *name,void setupfun()) -{ - // make new library instance - curlib = new flext_library(MakeSymbol(name)); - - flext::Setup(); - - // first register all classes - try { - setupfun(); - } - catch(std::exception &x) { - error("%s - %s",name,x.what()); - return; - } - catch(char *txt) { - error("%s - %s",name,txt); - return; - } - catch(...) { - error("%s - Unknown exception at library setup",name); - return; - } - -#if FLEXT_SYS == FLEXT_SYS_MAX - // then see if we got DSP classes - - // for Max/MSP, the library is represented by a special object (class) registered at startup - // all objects in the library are clones of that library object - they share the same class - ::setup( - (t_messlist **)&curlib->clss, - (t_newmethod)obj_new,(t_method)obj_free, - sizeof(flext_hdr),NULL,A_GIMME,A_NULL); - - // for all classes in library add methods - flext_base::AddMessageMethods(curlib->clss,curlib->dsp,true); -#endif - - curlib = NULL; -} - -void flext_obj::obj_add(bool lib,bool dsp,bool noi,bool attr,const char *idname,const char *names,void setupfun(t_classid),flext_obj *(*newfun)(int,t_atom *),void (*freefun)(flext_hdr *),int argtp1,...) -{ - // get first possible object name - const t_symbol *nsym = MakeSymbol(extract(names)); - -#ifdef FLEXT_DEBUG - if(dsp) chktilde(GetString(nsym)); -#endif - - if(lib) { - FLEXT_ASSERT(curlib); -#if FLEXT_SYS == FLEXT_SYS_MAX - curlib->dsp |= dsp; -#endif - } - else { - FLEXT_ASSERT(!curlib); -// process_attributes = attr; - } - - // set dynamic class pointer - t_class **cl = -#if FLEXT_SYS == FLEXT_SYS_MAX - lib?&curlib->clss: -#endif - new t_class *; - - // register object class -#if FLEXT_SYS == FLEXT_SYS_PD - *cl = ::class_new( - (t_symbol *)nsym, - (t_newmethod)obj_new,(t_method)obj_free, - sizeof(flext_hdr),CLASS_DEFAULT,A_GIMME,A_NULL); -#elif FLEXT_SYS == FLEXT_SYS_MAX - if(!lib) { - ::setup( - (t_messlist **)cl, - (t_newmethod)obj_new,(t_method)obj_free, - sizeof(flext_hdr),NULL,A_GIMME,A_NULL); - // attention: in Max/MSP the *cl variable is not initialized after that call. - // just the address is stored, the initialization then occurs with the first object instance! - } -#else -#error Platform not implemented -#endif - - // make new dynamic object - flext_class *lo = new flext_class(*cl,newfun,freefun); - lo->lib = curlib; - lo->dsp = dsp; - lo->noi = noi; - lo->attr = attr; - -// post("ADDCLASS %s,%s = %p -> LIBOBJ %p -> %p (lib=%i,dsp=%i)",idname,names,*cl,lo,lo->clss,lib?1:0,dsp?1:0); - - // parse the argument type list and store it with the object - if(argtp1 == FLEXTTPN_VAR) - lo->argc = -1; - else { - int argtp,i; - va_list marker; - - // parse a first time and count only - va_start(marker,argtp1); - for(argtp = argtp1; argtp != FLEXTTPN_NULL; ++lo->argc) argtp = (int)va_arg(marker,int); - va_end(marker); - - lo->argv = new int[lo->argc]; - - // now parse and store - va_start(marker,argtp1); - for(argtp = argtp1,i = 0; i < lo->argc; ++i) { - lo->argv[i] = argtp; - argtp = (int)va_arg(marker,int); - } - va_end(marker); - } - - // get unique class id - t_classid clid = lo; - - // make help reference - const char *helptxt = extract(names,-1); - if(helptxt) { - const char *sl = strchr(helptxt,'/'); - if(sl && !sl[1]) - // helptxt is only the path (path with trailing /) - flext_obj::DefineHelp(clid,idname,helptxt,dsp); - else - // helptxt is path and patch name - flext_obj::DefineHelp(clid,helptxt,NULL,dsp); - } - - for(int ix = 0; ; ++ix) { - // in this loop register all the possible aliases of the object - - const char *c = ix?extract(names,ix):GetString(nsym); - if(!c || !*c) break; - - // add to name list - const t_symbol *lsym = MakeSymbol(c); - FindName(lsym,lo); - -#if FLEXT_SYS == FLEXT_SYS_PD - if(ix > 0) - // in PD the first name is already registered with class creation - ::class_addcreator((t_newmethod)obj_new,(t_symbol *)lsym,A_GIMME,A_NULL); -#elif FLEXT_SYS == FLEXT_SYS_MAX - if(ix > 0 || lib) - // in Max/MSP the first alias gets its name from the name of the object file, - // unless it is a library (then the name can be different) - ::alias(const_cast(c)); -#else -#error -#endif - } - - try { - // call class setup function - setupfun(clid); - } - catch(std::exception &x) { - error("%s: %s",idname,x.what()); - } - catch(char *txt) { - error("%s: %s",idname,txt); - } - catch(...) { - error("%s - Unknown exception while initializing class",idname); - } -} - - -#define NEWARGS 256 // must be larger than FLEXT_NEWARGS = 5 - -typedef flext_obj *(*libfun)(int,t_atom *); - -#if FLEXT_SYS == FLEXT_SYS_MAX -flext_hdr *flext_obj::obj_new(const t_symbol *s,short _argc_,t_atom *argv) -#else -flext_hdr *flext_obj::obj_new(const t_symbol *s,int _argc_,t_atom *argv) -#endif -{ - flext_hdr *obj = NULL; - flext_class *lo = FindName(s); - if(lo) { -// post("NEWOBJ %s = %p -> %p",GetString(s),lo,lo->clss); - - bool ok = true; - t_atom args[NEWARGS]; - - int argc = _argc_; - if(lo->attr) { - argc = flext_base::CheckAttrib(argc,argv); - } - - if(lo->argc >= 0) { -#ifdef FLEXT_DEBUG - if(lo->argc > FLEXT_MAXNEWARGS) { ERRINTERNAL(); ok = false; } -#endif - - int misnum = 0; - if(argc > lo->argc) { ok = false; misnum = 1; } - - for(int i = 0; ok && i < lo->argc; ++i) { - switch(lo->argv[i]) { -#if FLEXT_SYS != FLEXT_SYS_PD - case FLEXTTPN_INT: - case FLEXTTPN_DEFINT: - if(i >= argc) - if(lo->argv[i] == FLEXTTPN_DEFINT) SetInt(args[i],0); - else { misnum = -1,ok = false; break; } - else if(IsInt(argv[i])) args[i] = argv[i]; - else if(IsFloat(argv[i])) SetInt(args[i],(int)GetFloat(argv[i])); - else ok = false; - break; -#endif - case FLEXTTPN_FLOAT: - case FLEXTTPN_DEFFLOAT: - if(i >= argc) - if(lo->argv[i] == FLEXTTPN_DEFFLOAT) SetFloat(args[i],0); - else { misnum = -1,ok = false; break; } - else if(IsInt(argv[i])) SetFloat(args[i],(float)GetInt(argv[i])); - else if(IsFloat(argv[i])) args[i] = argv[i]; - else ok = false; - break; - case FLEXTTPN_SYM: - case FLEXTTPN_DEFSYM: - // \todo shall we analyze the patcher args????... should already be done! - if(i >= argc) - if(lo->argv[i] == FLEXTTPN_DEFSYM) SetSymbol(args[i],sym__); - else { misnum = -1,ok = false; break; } - else if(IsSymbol(argv[i])) -// SetSymbol(args[i],GetParamSym(GetSymbol(argv[i]),NULL)); - args[i] = argv[i]; - else ok = false; - break; - } - } - - if(!ok) - if(misnum) - error("%s: %s creation arguments",GetString(s),misnum < 0?"Not enough":"Too many"); - else - error("%s: Creation arguments do not match",GetString(s)); - } - - - if(ok) { - try { -#if FLEXT_SYS == FLEXT_SYS_PD - obj = (flext_hdr *)::pd_new(lo->clss); -#elif FLEXT_SYS == FLEXT_SYS_MAX - obj = (flext_hdr *)::newobject(lo->clss); -#else -#error -#endif - - flext_obj::m_holder = obj; - flext_obj::m_holdclass = lo; - flext_obj::m_holdname = s; - flext_obj::initing = true; - flext_obj::init_ok = true; - - // get actual flext object (newfun calls "new flext_obj()") - if(lo->argc >= 0) - obj->data = lo->newfun(lo->argc,args); - else - obj->data = lo->newfun(argc,argv); - - flext_obj::m_holder = NULL; - flext_obj::m_holdclass = NULL; - flext_obj::m_holdname = NULL; - - ok = obj->data && - // check constructor exit flag - flext_obj::init_ok; - - if(ok) { - if(lo->attr) { - // DON'T convert eventual patcher args here... this is done by the actual attribute stuff - // so that the initial $- or #- be preserved! - - // store creation args for attribute initialization (inside flext_base::Init()) - flext_obj::m_holdaargc = _argc_-argc; - flext_obj::m_holdaargv = argv+argc; - } - else { - flext_obj::m_holdaargc = 0; - flext_obj::m_holdaargv = NULL; - } - - // call virtual init function - // here, inlets, outlets, methods and attributes can be set up - ok = obj->data->Init(); - - flext_obj::initing = false; - - // call another virtual init function - if(ok) ok = obj->data->Finalize(); - - flext_obj::m_holdaargc = 0; - flext_obj::m_holdaargv = NULL; - } - - } //try - catch(std::exception &x) { - error("%s - Exception while creating object: %s",GetString(s),x.what()); - ok = false; - } - catch(char *txt) { - error("%s - Exception while creating object: %s",GetString(s),txt); - ok = false; - } - catch(...) { - error("%s - Unknown exception while creating object",GetString(s)); - ok = false; - } - - flext_obj::initing = false; - - if(!ok) { - // there was some init error, free object - lo->freefun(obj); - obj = NULL; - } - } - } -#ifdef FLEXT_DEBUG - else -#if FLEXT_SYS == FLEXT_SYS_MAX - // in Max/MSP an object with the name of the library exists, even if not explicitly declared! -// if(!lo->lib || s != lo->lib->name) -#endif - error("Class %s not found in library!",s->s_name); -#endif - - return obj; -} - -void flext_obj::obj_free(flext_hdr *h) -{ - flext_hdr *hdr = (flext_hdr *)h; - const t_symbol *name = hdr->data->thisNameSym(); - flext_class *lcl = FindName(name); - - if(lcl) { - try { - flext_obj::exiting = true; - - // call virtual exit function - hdr->data->Exit(); - - // now call object destructor and deallocate - lcl->freefun(hdr); - } //try - catch(std::exception &x) { - error("%s - Exception while destroying object: %s",GetString(name),x.what()); - } - catch(char *txt) { - error("%s - Exception while destroying object: %s",GetString(name),txt); - } - catch(...) { - error("%s - Unknown exception while destroying object",GetString(name)); - } - - flext_obj::exiting = false; - } -#ifdef FLEXT_DEBUG - else -#if FLEXT_SYS == FLEXT_SYS_MAX - // in Max/MSP an object with the name of the library exists, even if not explicitely declared! -// if(!lo->lib || s != lo->lib->name) -#endif - error("Class %s not found in library!",name); -#endif -} - - -t_class *flext_obj::thisClass() const { FLEXT_ASSERT(x_obj); return thisClassId()->clss; } - -void flext_base::SetDist(t_classid c,bool d) { c->dist = d; } -bool flext_base::DoDist() const { return thisClassId()->dist; } - -flext_base::ItemCont *flext_base::ClMeths(t_classid c) { return &c->meths; } -flext_base::ItemCont *flext_base::ClAttrs(t_classid c) { return &c->attrs; } diff --git a/externals/grill/flext/source/flmap.cpp b/externals/grill/flext/source/flmap.cpp deleted file mode 100644 index 5afcf51c..00000000 --- a/externals/grill/flext/source/flmap.cpp +++ /dev/null @@ -1,249 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flmap.cpp - \brief flext container classes. -*/ - -#include "flext.h" -#include "flmap.h" - -TableAnyMap::~TableAnyMap() { clear(); } - -void TableAnyMap::clear() -{ - if(left) { _delmap(left); left = NULL; } - if(right) { _delmap(right); right = NULL; } - n = 0; -} - - -void *TableAnyMap::_set(int tsize,size_t k,void *t) -{ - FLEXT_ASSERT(n); - - if(n < tsize) { - // fall through - } - else if(k < data[0].key) - return _toleft(tsize,k,t); - else if(k > data[tsize-1].key) - return _toright(tsize,k,t); - - int ix = _tryix(k); - if(ix >= n) { - FLEXT_ASSERT(ix == n); - // after last entry - data[n++](k,t); - return NULL; - } - - size_t dk = data[ix].key; - if(k == dk) { - // update data in existing slot (same key) - void *a = data[ix].value; - data[ix] = t; - return a; - } - else { - // insert new slot by shifting the higher ones - FLEXT_ASSERT(k < dk); - void *a; - if(n == tsize) - a = _toright(tsize,data[tsize-1]); - else { - ++n; - a = NULL; - } - - Data *tg = data+ix; - for(Data *d = data+n-1; d > tg; d--) d[0] = d[-1]; - (*tg)(k,t); - return a; - } -} - -void *TableAnyMap::_find(int tsize,size_t k) const -{ - FLEXT_ASSERT(n); - if(n < tsize) { - // fall through - } - else if(k < data[0].key) - return left?left->_find(tsize,k):NULL; - else if(k > data[n-1].key) - return right?right->_find(tsize,k):NULL; - - const int ix = _tryix(k); - return ix < n && data[ix].key == k?data[ix].value:NULL; -} - -#ifdef FLEXT_DEBUG -void TableAnyMap::_check(int tsize) -{ - FLEXT_ASSERT(n); - - size_t k = data[0].key; - for(int i = 1; i < n; ++i) { - size_t k2 = data[i].key; - FLEXT_ASSERT(k < k2); - k = k2; - } - - if(left || right) FLEXT_ASSERT(n == tsize); - - if(left) { - FLEXT_ASSERT(flext::MemCheck(left)); - left->_check(tsize); - } - if(right) { - FLEXT_ASSERT(flext::MemCheck(right)); - right->_check(tsize); - } -} -#endif - -void *TableAnyMap::_remove(int tsize,size_t k) -{ - FLEXT_ASSERT(n); - if(n < tsize) { - // fall through - } - else if(k < data[0].key) { - void *r = left?left->_remove(tsize,k):NULL; - if(r) _eraseempty(left); - return r; - } - else if(k > data[n-1].key) { - void *r = right?right->_remove(tsize,k):NULL; - if(r) _eraseempty(right); - return r; - } - - const int ix = _tryix(k); - if(ix >= n || data[ix].key != k) - return NULL; - else { - // found key in this map - void *ret = data[ix].value; - - Data dt; - bool fnd,ins = false; - if(n >= tsize) { - // if this table is full get fill-in elements from branches - if(left) { - // try to get biggest element from left branch - left->_getbig(dt); - _eraseempty(left); - fnd = true,ins = true; - } - else if(right) { - // try to get smallest element from right branch - right->_getsmall(dt); - _eraseempty(right); - fnd = true; - } - else - fnd = false; - } - else fnd = false; - - if(ins) { - // insert smaller element from left - for(int i = ix; i; --i) data[i] = data[i-1]; - data[0] = dt; - } - else { - // shift elements - for(int i = ix+1; i < n; ++i) data[i-1] = data[i]; - // insert bigger element from right or reduce table size - if(fnd) - data[n-1] = dt; - else - --n; - } - - return ret; - } -} - -void TableAnyMap::_getbig(Data &dt) -{ - FLEXT_ASSERT(n); - - if(right) { - right->_getbig(dt); - _eraseempty(right); - } - else { - dt = data[n-1]; - if(left) { - for(int i = n-1; i; --i) data[i] = data[i-1]; - left->_getbig(data[0]); - _eraseempty(left); - } - else - --n; - } -} - -void TableAnyMap::_getsmall(Data &dt) -{ - FLEXT_ASSERT(n); - - if(left) { - left->_getsmall(dt); - _eraseempty(left); - } - else { - dt = data[0]; - for(int i = 1; i < n; ++i) data[i-1] = data[i]; - if(right) { - right->_getsmall(data[n-1]); - _eraseempty(right); - } - else - --n; - } -} - -void TableAnyMap::iterator::forward() -{ - FLEXT_ASSERT(map || ix >= map->n); - - if(++ix >= map->n) { - TableAnyMap *nmap; - - // we reached the end of the slots - if(map->right) { - // climb up one - map = map->right; - leftmost(); - ix = 0; - } - else { - // fall back - for(;;) { - nmap = map->parent; - if(!nmap) break; // no parent - if(nmap->left == map) { - // ok, we are in front of the slots now - ix = 0; - map = nmap; - break; - } - else { - FLEXT_ASSERT(nmap->right == map); - ix = (map = nmap)->n; - } - } - } - } -} diff --git a/externals/grill/flext/source/flmap.h b/externals/grill/flext/source/flmap.h deleted file mode 100644 index 796e9549..00000000 --- a/externals/grill/flext/source/flmap.h +++ /dev/null @@ -1,255 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flmap.h - \brief special map class (faster and less memory-consuming than std::map) -*/ - -#ifndef __FLMAP_H -#define __FLMAP_H - -#include "flprefix.h" - -/*! \defgroup FLEXT_SUPPORT Flext support classes - @{ -*/ - -class FLEXT_SHARE TableAnyMap -{ -public: - - virtual TableAnyMap *_newmap(TableAnyMap *parent) = 0; - virtual void _delmap(TableAnyMap *map) = 0; - - struct Data { - void operator()(size_t k,void *v) { key = k,value = v; } - void operator =(void *v) { value = v; } - - size_t key; - void *value; - }; - -protected: - // constructor and destructor are protected so that they can't be directly instantiated - - TableAnyMap(TableAnyMap *p,Data *dt) - : data(dt) - , parent(p),left(0),right(0) - , n(0) - {} - - virtual ~TableAnyMap(); - -public: - -#if 0 // set 1 for asserting the map structure (very cpu-intensive!) - void check(int tsize) { if(n) _check(tsize); } -#else -// void check(int tsize) {} -#endif - - void *insert(int tsize,size_t k,void *t) - { - void *r; - if(LIKELY(n)) - r = _set(tsize,k,t); - else { - data[n++](k,t); - r = 0; - } -// check(tsize); - return r; - } - - void *find(int tsize,size_t k) const { return LIKELY(n)?_find(tsize,k):0; } - - void *remove(int tsize,size_t k) - { - void *r = LIKELY(n)?_remove(tsize,k):0; -// check(tsize); - return r; - } - - virtual void clear(); - - class FLEXT_SHARE iterator - { - public: - iterator(): map(0) {} - iterator(const TableAnyMap &m): map(&m),ix(0) { leftmost(); } - iterator(const iterator &it): map(it.map),ix(it.ix) {} - - iterator &operator =(const iterator &it) { map = it.map,ix = it.ix; return *this; } - - operator bool() const { return map && ix < map->n; } - - // no checking here! - void *data() const { return map->data[ix].value; } - size_t key() const { return map->data[ix].key; } - - iterator &operator ++() { forward(); return *this; } - - protected: - void leftmost() - { - // search smallest branch (go left as far as possible) - const TableAnyMap *nmap; - while((nmap = map->left) != 0) map = nmap; - } - - void forward(); - - // pointers to map and index within - const TableAnyMap *map; - int ix; - }; - - void _init(size_t k,void *t) { data[0](k,t); n = 1; } - - void *_toleft(int tsize,size_t k,void *t) - { - if(left) - return left->_set(tsize,k,t); - else { - (left = _newmap(this))->_init(k,t); - return 0; - } - } - - void *_toright(int tsize,size_t k,void *t) - { - if(right) - return right->_set(tsize,k,t); - else { - (right = _newmap(this))->_init(k,t); - return 0; - } - } - - void *_toleft(int tsize,Data &v) { return _toleft(tsize,v.key,v.value); } - void *_toright(int tsize,Data &v) { return _toright(tsize,v.key,v.value); } - - void *_set(int tsize,size_t k,void *t); - void *_find(int tsize,size_t k) const; - void *_remove(int tsize,size_t k); - -#ifdef FLEXT_DEBUG - void _check(int tsize); -#endif - - Data *data; - TableAnyMap *parent,*left,*right; - int n; - - //! return index of data item with key <= k - //! \note index can point past the last item! - unsigned int _tryix(size_t k) const - { - unsigned int ix = 0,b = n; - while(ix != b) { - const unsigned int c = (ix+b)>>1; - const size_t dk = data[c].key; - if(k == dk) - return c; - else if(k < dk) - b = c; - else if(ix < c) - ix = c; - else - return b; - } - return ix; - } - - void _eraseempty(TableAnyMap *&b) - { - if(!b->n) { - // remove empty branch - _delmap(b); b = 0; - } - } - - void _getsmall(Data &dt); - void _getbig(Data &dt); - -private: - // hide, so that it can't be used..... - explicit TableAnyMap(const TableAnyMap &): data(NULL) {} - TableAnyMap &operator =(const TableAnyMap &) { return *this; } -}; - -template -class TablePtrMap - : -#if (defined(_MSC_VER) && _MSC_VER < 1300) || defined(__BORLANDC__) || defined(__MWERKS__) - public // necessary for VC6 -#endif - TableAnyMap -{ -public: - TablePtrMap(): TableAnyMap(0,slots),count(0) {} - virtual ~TablePtrMap() { clear(); } - - virtual void clear() { TableAnyMap::clear(); count = 0; } - - inline int size() const { return count; } - - inline T insert(K k,T t) - { - void *d = TableAnyMap::insert(N,*(size_t *)&k,(void *)t); - if(!d) ++count; - return (T)d; - } - - inline T find(K k) const { return (T)TableAnyMap::find(N,*(size_t *)&k); } - - inline T remove(K k) - { - void *d = TableAnyMap::remove(N,*(size_t *)&k); - if(LIKELY(d)) --count; - return (T)d; - } - - - class iterator - : TableAnyMap::iterator - { - public: - iterator() {} - iterator(const TablePtrMap &m): TableAnyMap::iterator(m) {} - iterator(const iterator &it): TableAnyMap::iterator(it) {} - - // this ugly syntax (cast to parent class) is needed for MSVC6 - - inline iterator &operator =(const iterator &it) { ((TableAnyMap::iterator &)*this) = it; return *this; } - - inline operator bool() const { return (bool)((TableAnyMap::iterator &)*this); } - inline T data() const { return (T)(((TableAnyMap::iterator &)*this).data()); } - inline K key() const { return (K)(((TableAnyMap::iterator &)*this).key()); } - - inline iterator &operator ++() { ++((TableAnyMap::iterator &)*this); return *this; } - }; - -protected: - TablePtrMap(TableAnyMap *p): TableAnyMap(p,slots),count(0) {} - - virtual TableAnyMap *_newmap(TableAnyMap *parent) { return new TablePtrMap(parent); } - virtual void _delmap(TableAnyMap *map) { delete (TablePtrMap *)map; } - - int count; - Data slots[N]; - -private: - explicit TablePtrMap(const TableAnyMap &p) {} -}; - -//! @} // FLEXT_SUPPORT - -#endif diff --git a/externals/grill/flext/source/flmeth.cpp b/externals/grill/flext/source/flmeth.cpp deleted file mode 100644 index 6355dd08..00000000 --- a/externals/grill/flext/source/flmeth.cpp +++ /dev/null @@ -1,132 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flmeth.cpp - \brief Method processing of flext base class. -*/ - -#include "flext.h" -#include -#include -#include "flinternal.h" - -flext_base::MethItem::MethItem(AttrItem *conn): - Item(conn),index(0), - argc(0),args(NULL) - ,fun(NULL) -{} - -flext_base::MethItem::~MethItem() -{ - if(args) delete[] args; -} - -void flext_base::MethItem::SetArgs(methfun _fun,int _argc,metharg *_args) -{ - fun = _fun; - if(args) delete[] args; - argc = _argc,args = _args; -} - -/*! \brief Add a method to the queue -*/ -void flext_base::AddMethod(ItemCont *ma,int inlet,const t_symbol *tag,methfun fun,metharg tp,...) -{ -#ifdef FLEXT_LOG_MSGS - post("addmethod %i:%s",inlet,GetString(tag)); -#endif - - va_list marker; - - // at first just count the arg type list (in argc) - int argc = 0; - va_start(marker,tp); - metharg *args = NULL,arg = tp; - for(; arg != a_null; ++argc) arg = (metharg)va_arg(marker,int); //metharg); - va_end(marker); - - if(argc > 0) { - if(argc > FLEXT_MAXMETHARGS) { - error("flext - method %s: only %i arguments are type-checkable: use variable argument list for more",tag?GetString(tag):"?",FLEXT_MAXMETHARGS); - argc = FLEXT_MAXMETHARGS; - } - - args = new metharg[argc]; - - va_start(marker,tp); - metharg a = tp; - for(int ix = 0; ix < argc; ++ix) { -#ifdef FLEXT_DEBUG - if(a == a_list && ix > 0) { - ERRINTERNAL(); - } -#endif -#if FLEXT_SYS == FLEXT_SYS_PD && defined(FLEXT_COMPATIBLE) - if(a == a_pointer) { - post("Pointer arguments are not allowed in compatibility mode"); - } -#endif - args[ix] = a; - a = (metharg)va_arg(marker,int); //metharg); - } - va_end(marker); - } - - MethItem *mi = new MethItem; - mi->index = ma->Members(); - mi->SetArgs(fun,argc,args); - ma->Add(mi,tag,inlet); -} - -void flext_base::ListMethods(AtomList &la,int inlet) const -{ - typedef TablePtrMap MethList; - MethList list[2]; - ItemCont *clmethhead = ClMeths(thisClassId()); - - int i; - for(i = 0; i <= 1; ++i) { - ItemCont *a = i?methhead:clmethhead; - if(a && a->Contained(inlet)) { - ItemSet &ai = a->GetInlet(inlet); - for(ItemSet::iterator as(ai); as; ++as) { - for(Item *al = as.data(); al; al = al->nxt) { - MethItem *aa = (MethItem *)al; - // check it's not related to an attribute - if(!aa->IsAttr()) { - list[i].insert(aa->index,as.key()); - break; - } - } - } - } - } - - la((int)list[0].size()+(int)list[1].size()); - int ix = 0; - for(i = 0; i <= 1; ++i) - for(MethList::iterator it(list[i]); it; ++it) - SetSymbol(la[ix++],it.data()); -} - -bool flext_base::cb_ListMethods(flext_base *c,int argc,const t_atom *argv) -{ - if(c->HasAttributes() && (argc == 0 || (argc == 1 && CanbeInt(argv[0])))) { - // defined in flsupport.cpp - int inlet = argc?GetAInt(argv[0]):0; - AtomListStatic<32> la; - c->ListMethods(la,inlet); - c->ToOutAnything(c->GetOutAttr(),sym_methods,la.Count(),la.Atoms()); - return true; - } - else - return false; -} - diff --git a/externals/grill/flext/source/flmsg.cpp b/externals/grill/flext/source/flmsg.cpp deleted file mode 100644 index 1d42b5fb..00000000 --- a/externals/grill/flext/source/flmsg.cpp +++ /dev/null @@ -1,295 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flmsg.cpp - \brief Message processing of flext base class. -*/ - -#include "flext.h" - - -bool flext_base::TryMethTag(Item *lst,const t_symbol *tag,int argc,const t_atom *argv) -{ - for(; lst; lst = lst->nxt) { - MethItem *m = (MethItem *)lst; - -// FLEXT_LOG3("found method tag %s: inlet=%i, argc=%i",GetString(tag),m->inlet,argc); - - if(m->attr) { - // attributes are treated differently - - if(m->attr->IsGet()) - return DumpAttrib(tag,m->attr); - else - return SetAttrib(tag,m->attr,argc,argv); - } - else { - if(m->argc == 1) { - if(m->args[0] == a_list) { - // try list - if(((methfun_V)m->fun)(this,argc,const_cast(argv))) return true; - } - else if(m->args[0] == a_any) { - // try anything - if(((methfun_A)m->fun)(this,tag,argc,const_cast(argv))) return true; - } - } - - // try matching number of args - if(m->argc == argc) { - int ix; - t_any aargs[FLEXT_MAXMETHARGS]; - bool ok = true; - for(ix = 0; ix < argc && ok; ++ix) { - switch(m->args[ix]) { - case a_float: { - if(IsFloat(argv[ix])) aargs[ix].ft = GetFloat(argv[ix]); - else if(IsInt(argv[ix])) aargs[ix].ft = (float)GetInt(argv[ix]); - else ok = false; - - if(ok) FLEXT_LOG2("int arg %i = %f",ix,aargs[ix].ft); - break; - } - case a_int: { - if(IsFloat(argv[ix])) aargs[ix].it = (int)GetFloat(argv[ix]); - else if(IsInt(argv[ix])) aargs[ix].it = GetInt(argv[ix]); - else ok = false; - - if(ok) FLEXT_LOG2("float arg %i = %i",ix,aargs[ix].it); - break; - } - case a_symbol: { - if(IsSymbol(argv[ix])) aargs[ix].st = GetSymbol(argv[ix]); - else ok = false; - - if(ok) FLEXT_LOG2("symbol arg %i = %s",ix,GetString(aargs[ix].st)); - break; - } -#if FLEXT_SYS == FLEXT_SYS_PD - case a_pointer: { - if(IsPointer(argv[ix])) aargs[ix].pt = (t_gpointer *)GetPointer(argv[ix]); - else ok = false; - break; - } -#endif - default: - error("Argument type illegal"); - ok = false; - } - } - - if(ok && ix == argc) { - switch(argc) { - case 0: return ((methfun_0)m->fun)(this); - case 1: return ((methfun_1)m->fun)(this,aargs[0]); - case 2: return ((methfun_2)m->fun)(this,aargs[0],aargs[1]); - case 3: return ((methfun_3)m->fun)(this,aargs[0],aargs[1],aargs[2]); - case 4: return ((methfun_4)m->fun)(this,aargs[0],aargs[1],aargs[2],aargs[3]); - case 5: return ((methfun_5)m->fun)(this,aargs[0],aargs[1],aargs[2],aargs[3],aargs[4]); - default: - FLEXT_ASSERT(false); - } - } - } - } - } - return false; -} - - -bool flext_base::TryMethAny(Item *lst,const t_symbol *s,int argc,const t_atom *argv) -{ - for(; lst; lst = lst->nxt) { - MethItem *m = (MethItem *)lst; - - if(!m->IsAttr() && m->argc == 1 && m->args[0] == a_any) { -// FLEXT_LOG4("found any method for %s: inlet=%i, symbol=%s, argc=%i",GetString(m->tag),m->inlet,GetString(s),argc); - - if(((methfun_A)m->fun)(this,s,argc,const_cast(argv))) return true; - } - } - return false; -} - -/*! \brief Find a method item for a specific tag and arguments - \remark All attributes are also stored in the method list and retrieved by a member of the method item -*/ -bool flext_base::FindMeth(int inlet,const t_symbol *s,int argc,const t_atom *argv) -{ - Item *lst; - ItemCont *clmethhead = ClMeths(thisClassId()); - - // search for exactly matching tag - if(UNLIKELY(methhead) && (lst = methhead->FindList(s,inlet)) != NULL && TryMethTag(lst,s,argc,argv)) return true; - if((lst = clmethhead->FindList(s,inlet)) != NULL && TryMethTag(lst,s,argc,argv)) return true; - - // if nothing found try any inlet - if(UNLIKELY(methhead) && (lst = methhead->FindList(s,-1)) != NULL && TryMethTag(lst,s,argc,argv)) return true; - if((lst = clmethhead->FindList(s,-1)) != NULL && TryMethTag(lst,s,argc,argv)) return true; - - return false; -} - -bool flext_base::FindMethAny(int inlet,const t_symbol *s,int argc,const t_atom *argv) -{ - Item *lst; - ItemCont *clmethhead = ClMeths(thisClassId()); - - if(UNLIKELY(methhead) && (lst = methhead->FindList(sym_anything,inlet)) != NULL && TryMethAny(lst,s,argc,argv)) return true; - if((lst = clmethhead->FindList(sym_anything,inlet)) != NULL && TryMethAny(lst,s,argc,argv)) return true; - - // if nothing found try any inlet - if(UNLIKELY(methhead) && (lst = methhead->FindList(sym_anything,-1)) != NULL && TryMethAny(lst,s,argc,argv)) return true; - if((lst = clmethhead->FindList(sym_anything,-1)) != NULL && TryMethAny(lst,s,argc,argv)) return true; - - return false; -} - -/*! \brief All the message processing - The messages of all the inlets go here and are promoted to the registered callback functions -*/ -bool flext_base::CbMethodHandler(int inlet,const t_symbol *s,int argc,const t_atom *argv) -{ - static bool trap = false; - bool ret; - - curtag = s; - -#ifdef FLEXT_LOG_MSGS - post("methodmain inlet:%i args:%i symbol:%s",inlet,argc,s?GetString(s):""); -#endif - - try { - ret = FindMeth(inlet,s,argc,argv); -#ifdef FLEXT_LOG_MSGS - if(ret) post("found %s message in %s,%i",GetString(s),__FILE__,__LINE__); -#endif - if(ret) goto end; - - if(argc == 1) { - if(s == sym_list) { - // for 1-element lists try the single atom (this is the format output by [route]) - if(IsFloat(argv[0])) - ret = FindMeth(inlet,sym_float,1,argv); - else if(IsInt(argv[0])) - ret = FindMeth(inlet,sym_int,1,argv); - else if(IsSymbol(argv[0])) - ret = FindMeth(inlet,sym_symbol,1,argv); - #if FLEXT_SYS == FLEXT_SYS_PD && !defined(FLEXT_COMPATIBLE) - else if(IsPointer(argv[0])) - ret = FindMeth(inlet,sym_pointer,1,argv); - #endif - if(ret) goto end; - } - else { - if(s == sym_float) { - #if FLEXT_SYS == FLEXT_SYS_MAX - t_atom at; - // If float message is not explicitly handled: try int handler instead - SetInt(at,(int)GetFloat(argv[0])); - ret = FindMeth(inlet,sym_int,1,&at); - if(ret) goto end; - #endif - // If not explicitly handled: try list handler instead - ret = FindMeth(inlet,sym_list,1,argv); - if(ret) goto end; - } - #if FLEXT_SYS == FLEXT_SYS_MAX - else if(s == sym_int) { - t_atom at; - // If int message is not explicitly handled: try float handler instead - SetFloat(at,(float)GetInt(argv[0])); - ret = FindMeth(inlet,sym_float,1,&at); - if(ret) goto end; - // If not explicitly handled: try list handler instead - ret = FindMeth(inlet,sym_list,1,argv); - if(ret) goto end; - } - #endif - else if(s == sym_symbol) { - ret = FindMeth(inlet,sym_list,1,argv); - if(ret) goto end; - } - #if FLEXT_SYS == FLEXT_SYS_PD && !defined(FLEXT_COMPATIBLE) - else if(s == sym_pointer) { - ret = FindMeth(inlet,sym_list,1,argv); - if(ret) goto end; - } - #endif - } - } - else if(argc == 0) { - // If symbol message (pure anything without args) is not explicitly handled: try list handler instead - t_atom at; - SetSymbol(at,s); - ret = FindMeth(inlet,sym_list,1,&at); -#ifdef FLEXT_LOG_MSGS - if(ret) post("found %s message in %s,%i",GetString(sym_list),__FILE__,__LINE__); -#endif - if(ret) goto end; - } - - // if distmsgs is switched on then distribute list elements over inlets (Max/MSP behavior) - if(DoDist() && inlet == 0 && s == sym_list && insigs <= 1 && !trap) { - int i = incnt; - if(i > argc) i = argc; - for(--i; i >= 0; --i) { // right to left distribution - const t_symbol *sym = NULL; - if(IsFloat(argv[i])) sym = sym_float; - else if(IsInt(argv[i])) sym = sym_int; - else if(IsSymbol(argv[i])) sym = sym_symbol; - #if FLEXT_SYS == FLEXT_SYS_PD && !defined(FLEXT_COMPATIBLE) - else if(IsPointer(argv[i])) sym = sym_pointer; // can pointer atoms occur here? - #endif - - if(sym) { - trap = true; - CbMethodHandler(i,sym,1,argv+i); - trap = false; - } - } - - goto end; - } - - ret = FindMethAny(inlet,s,argc,argv); - - if(!ret) ret = CbMethodResort(inlet,s,argc,argv); - } - catch(std::exception &x) { - error("%s - %s: %s",thisName(),GetString(s),x.what()); - ret = false; - } - catch(const char *txt) { - error("%s - %s: %s",thisName(),GetString(s),txt); - ret = false; - } - catch(...) { - error("%s - %s : Unknown exception while processing method",thisName(),GetString(s)); - ret = false; - } - -end: - curtag = NULL; - - return ret; // true if appropriate handler was found and called -} - -bool flext_base::m_method_(int inlet,const t_symbol *s,int argc,const t_atom *argv) -{ - post("%s: message unhandled - inlet:%i args:%i symbol:%s",thisName(),inlet,argc,s?GetString(s):""); - return false; -} - -bool flext_base::CbMethodResort(int inlet,const t_symbol *s,int argc,const t_atom *argv) -{ - // call deprecated version - return m_method_(inlet,s,argc,argv); -} diff --git a/externals/grill/flext/source/flmspbuffer.h b/externals/grill/flext/source/flmspbuffer.h deleted file mode 100644 index 7810e7bc..00000000 --- a/externals/grill/flext/source/flmspbuffer.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flmspbuffer.h - \brief Definition of the Max/MSP buffer structure - \internal - - This file comes from David Zicarellis inofficial package index.sit - The latter is not easily found so i included the original file buffer.h with flext -*/ - -#if (FLEXT_SYS == FLEXT_SYS_MAX) && !defined(__FLEXT_MSPBUFFER_H) -#define __FLEXT_MSPBUFFER_H - -enum { - MAXCHAN = 4 -}; - -enum { - bi_basefreq = 0, - bi_detune, - bi_lowfreq, - bi_hifreq, - bi_lowvel, - bi_hivel, - bi_gain, - bi_numparams -}; - -typedef struct _buffer -{ - t_object b_obj; // doesn't have any signals so it doesn't need to be pxobject - long b_valid; // flag is off during read replacement or editing operation - float *b_samples; // stored with interleaved channels if multi-channel - long b_frames; // number of sample frames (each one is sizeof(float) * b_nchans bytes) - long b_nchans; // number of channels - long b_size; // size of buffer in floats - float b_sr; // sampling rate of the buffer - float b_1oversr; // 1 / sr - float b_msr; // sr * .001 - // Mac-specific stuff - float *b_memory; // pointer to where memory starts (initial padding for interp) - t_symbol *b_name; - short b_vol; - short b_space; - // looping info (from AIFF file) - long b_susloopstart; // in samples - long b_susloopend; // in samples - long b_relloopstart; // in samples - long b_relloopend; // in samples - // instrument info (from AIFF file) - short b_inst[bi_numparams]; - // window stuff - void *b_wind; - double b_pixperfr; - double b_frperpix; - long b_imagesize; - Point b_scroll; - long b_scrollscale; - long b_selbegin[MAXCHAN]; - long b_selend[MAXCHAN]; - long b_zoom; - long b_zim[11]; - void *b_mouseout; - long b_format; // 'AIFF' or 'Sd2f' - t_symbol *b_filename; // last file read (not written) for readagain message - long b_oldnchans; // used for resizing window in case of # of channels change - void *b_doneout; - long b_outputbytes; // number of bytes used for output sample (1-4) - long b_modtime; // last modified time ("dirty" method) -} t_buffer; - -#define BUFWIND(x) ((t_wind *)(x->b_wind)) - - -#endif diff --git a/externals/grill/flext/source/flout.cpp b/externals/grill/flext/source/flout.cpp deleted file mode 100644 index dae256a7..00000000 --- a/externals/grill/flext/source/flout.cpp +++ /dev/null @@ -1,332 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flout.cpp - \brief Implementation of the flext outlet functionality. -*/ - -#include "flext.h" -#include "flinternal.h" -#include - -#if FLEXT_SYS == FLEXT_SYS_PD || FLEXT_SYS == FLEXT_SYS_MAX -void flext_base::ToSysAtom(int n,const t_atom &at) const -{ - outlet *o = GetOut(n); - if(LIKELY(o)) { - CRITON(); - if(IsSymbol(at)) - outlet_symbol((t_outlet *)o,const_cast(GetSymbol(at))); - else if(IsFloat(at)) - outlet_float((t_outlet *)o,GetFloat(at)); -#if FLEXT_SYS == FLEXT_SYS_MAX - else if(IsInt(at)) - outlet_flint((t_outlet *)o,GetInt(at)); -#endif -#if FLEXT_SYS == FLEXT_SYS_PD - else if(IsPointer(at)) - outlet_pointer((t_outlet *)o,GetPointer(at)); -#endif - else - error("Atom type not supported"); - CRITOFF(); - } -} -#else -#error Not implemented -#endif - -#if defined(FLEXT_THREADS) - #if FLEXT_QMODE == 2 - #define CHKTHR() (LIKELY((IsSystemThread() || IsThread(flext::thrmsgid)) && !InDSP())) - #else - #define CHKTHR() (LIKELY(IsSystemThread() && !InDSP())) - #endif -#else - #define CHKTHR() (LIKELY(!InDSP())) -#endif - -void flext_base::ToOutBang(int n) const { if(CHKTHR()) ToSysBang(n); else ToQueueBang(n); } -void flext_base::ToOutFloat(int n,float f) const { if(CHKTHR()) ToSysFloat(n,f); else ToQueueFloat(n,f); } -void flext_base::ToOutInt(int n,int f) const { if(CHKTHR()) ToSysInt(n,f); else ToQueueInt(n,f); } -void flext_base::ToOutSymbol(int n,const t_symbol *s) const { if(CHKTHR()) ToSysSymbol(n,s); else ToQueueSymbol(n,s); } -void flext_base::ToOutAtom(int n,const t_atom &at) const { if(CHKTHR()) ToSysAtom(n,at); else ToQueueAtom(n,at); } -void flext_base::ToOutList(int n,int argc,const t_atom *argv) const { if(CHKTHR()) ToSysList(n,argc,argv); else ToQueueList(n,argc,argv); } -void flext_base::ToOutAnything(int n,const t_symbol *s,int argc,const t_atom *argv) const { if(CHKTHR()) ToSysAnything(n,s,argc,argv); else ToQueueAnything(n,s,argc,argv); } - -void flext::ToOutMsg(MsgBundle *mb) { if(CHKTHR()) ToSysMsg(mb); else ToQueueMsg(mb); } - -bool flext::Forward(const t_symbol *recv,const t_symbol *s,int argc,const t_atom *argv) -{ - return CHKTHR()?SysForward(recv,s,argc,argv):QueueForward(recv,s,argc,argv); -} - - -bool flext_base::InitInlets() -{ - bool ok = true; - - // incnt has number of inlets (any type) - // insigs should be 0 - - FLEXT_ASSERT(!insigs && !inlets); - - // ---------------------------------- - // create inlets - // ---------------------------------- - -#if FLEXT_SYS == FLEXT_SYS_MAX - // copy inlet descriptions - indesc = new char *[incnt]; - for(int i = 0; i < incnt; ++i) { - xlet &x = inlist[i]; - indesc[i] = x.desc; - x.desc = NULL; - } -#endif - -#if FLEXT_SYS == FLEXT_SYS_PD || FLEXT_SYS == FLEXT_SYS_MAX - inlets = incnt > 1?new px_object *[incnt]:NULL; -#endif - - // type info is now in list array -#if FLEXT_SYS == FLEXT_SYS_PD - { - int cnt = 0; - if(incnt >= 1) { - xlet &xi = inlist[0]; // points to first inlet - if(xi.tp == xlet_sig) ++insigs; - // else leftmost inlet is already there... - ++cnt; - -#if PD_MINOR_VERSION >= 37 && defined(PD_DEVEL_VERSION) - // set tooltip -// this is on a per-class basis... we cannot really use it here -// if(xi.desc && *xi.desc) class_settip(thisClass(),gensym(xi.desc)); -#endif - } - - for(int ix = 1; ix < incnt; ++ix,++cnt) { - xlet &xi = inlist[ix]; // points to first inlet - t_inlet *in = NULL; - switch(xi.tp) { - case xlet_float: - case xlet_int: { - if(ix > 9) { - // proxy inlet needed - (inlets[ix-1] = (px_object *)pd_new(px_class))->init(this,ix); // proxy for 2nd inlet messages - in = inlet_new(&x_obj->obj,&inlets[ix-1]->obj.ob_pd, (t_symbol *)sym_float, (t_symbol *)sym_float); - } - else { - inlets[ix-1] = NULL; - static char sym[] = " ft ?"; - sym[4] = '0'+ix; - in = inlet_new(&x_obj->obj, &x_obj->obj.ob_pd, (t_symbol *)sym_float, gensym(sym)); - } - break; - } - case xlet_sym: - (inlets[ix-1] = (px_object *)pd_new(px_class))->init(this,ix); // proxy for 2nd inlet messages - in = inlet_new(&x_obj->obj,&inlets[ix-1]->obj.ob_pd, (t_symbol *)sym_symbol, (t_symbol *)sym_symbol); - break; - case xlet_list: - (inlets[ix-1] = (px_object *)pd_new(px_class))->init(this,ix); // proxy for 2nd inlet messages - in = inlet_new(&x_obj->obj,&inlets[ix-1]->obj.ob_pd, (t_symbol *)sym_list, (t_symbol *)sym_list); - break; - case xlet_any: - (inlets[ix-1] = (px_object *)pd_new(px_class))->init(this,ix); // proxy for 2nd inlet messages - in = inlet_new(&x_obj->obj,&inlets[ix-1]->obj.ob_pd, 0, 0); - break; - case xlet_sig: - inlets[ix-1] = NULL; -#ifdef FLEXT_COMPATIBLE - if(inlist[ix-1].tp != xlet_sig) { - post("%s: All signal inlets must be left-aligned in compatibility mode",thisName()); - ok = false; - } - else -#endif - { - // pd is not able to handle signals and messages into the same inlet... - in = inlet_new(&x_obj->obj, &x_obj->obj.ob_pd, (t_symbol *)sym_signal, (t_symbol *)sym_signal); - ++insigs; - } - break; - default: - inlets[ix-1] = NULL; - error("%s: Wrong type for inlet #%i: %i",thisName(),ix,(int)inlist[ix].tp); - ok = false; - } - -#if PD_MINOR_VERSION >= 37 && defined(PD_DEVEL_VERSION) - // set tooltip - if(in && xi.desc && *xi.desc) inlet_settip(in,gensym(xi.desc)); -#endif - } - - incnt = cnt; - } -#elif FLEXT_SYS == FLEXT_SYS_MAX - { - int ix,cnt; - // count leftmost signal inlets - while(insigs < incnt && inlist[insigs].tp == xlet_sig) ++insigs; - - for(cnt = 0,ix = incnt-1; ix >= insigs; --ix,++cnt) { - xlet &xi = inlist[ix]; - if(ix == 0) { - if(xi.tp != xlet_any) { - error("%s: Leftmost inlet must be of type signal or anything",thisName()); - ok = false; - } - } - else { - switch(xi.tp) { - case xlet_sig: - inlets[ix-1] = NULL; - error("%s: All signal inlets must be left-aligned",thisName()); - ok = false; - break; - case xlet_float: { - if(ix < 10) { - inlets[ix-1] = NULL; - floatin(x_obj,ix); - break; - } - else - goto makeproxy; - } - case xlet_int: { - if(ix < 10) { - inlets[ix-1] = NULL; - intin(x_obj,ix); - break; - } - else - goto makeproxy; - } - makeproxy: - case xlet_any: // non-leftmost - case xlet_sym: - case xlet_list: - inlets[ix-1] = (px_object *)proxy_new(x_obj,ix,&((flext_hdr *)x_obj)->curinlet); - break; - default: - inlets[ix-1] = NULL; - error("%s: Wrong type for inlet #%i: %i",thisName(),ix,(int)xi.tp); - ok = false; - } - } - } - - while(ix > 0) inlets[ix--] = NULL; - } -#else -#error -#endif - - return ok; -} - -bool flext_base::InitOutlets() -{ - bool ok = true; - int procattr = HasAttributes()?1:0; - - // outcnt has number of inlets (any type) - // outsigs should be 0 - - FLEXT_ASSERT(outsigs == 0); - - // ---------------------------------- - // create outlets - // ---------------------------------- - -#if FLEXT_SYS == FLEXT_SYS_MAX - // for Max/MSP the rightmost outlet has to be created first - outlet *attrtmp = NULL; - if(procattr) - attrtmp = (outlet *)newout_anything(thisHdr()); -#endif - -#if FLEXT_SYS == FLEXT_SYS_MAX - // copy outlet descriptions - outdesc = new char *[outcnt]; - for(int i = 0; i < outcnt; ++i) { - xlet &xi = outlist[i]; - outdesc[i] = xi.desc; - xi.desc = NULL; - } -#endif - -#if FLEXT_SYS == FLEXT_SYS_PD || FLEXT_SYS == FLEXT_SYS_MAX - if(outcnt+procattr) - outlets = new outlet *[outcnt+procattr]; - else - outlets = NULL; - - // type info is now in list array -#if FLEXT_SYS == FLEXT_SYS_PD - for(int ix = 0; ix < outcnt; ++ix) -#elif FLEXT_SYS == FLEXT_SYS_MAX - for(int ix = outcnt-1; ix >= 0; --ix) -#else -#error -#endif - { - switch(outlist[ix].tp) { - case xlet_float: - outlets[ix] = (outlet *)newout_float(&x_obj->obj); - break; - case xlet_int: - outlets[ix] = (outlet *)newout_flint(&x_obj->obj); - break; - case xlet_sig: - outlets[ix] = (outlet *)newout_signal(&x_obj->obj); - ++outsigs; - break; - case xlet_sym: - outlets[ix] = (outlet *)newout_symbol(&x_obj->obj); - break; - case xlet_list: - outlets[ix] = (outlet *)newout_list(&x_obj->obj); - break; - case xlet_any: - outlets[ix] = (outlet *)newout_anything(&x_obj->obj); - break; -#ifdef FLEXT_DEBUG - default: - ERRINTERNAL(); - ok = false; -#endif - } - } -#else -#error -#endif - -#if FLEXT_SYS == FLEXT_SYS_PD || FLEXT_SYS == FLEXT_SYS_MAX - if(procattr) { - // attribute dump outlet is the last one - outlets[outcnt] = -#if FLEXT_SYS == FLEXT_SYS_PD - // attribute dump outlet is the last one - (outlet *)newout_anything(&x_obj->obj); -#elif FLEXT_SYS == FLEXT_SYS_MAX - attrtmp; -#endif - - } -#endif - - return ok; -} - - diff --git a/externals/grill/flext/source/flprefix.h b/externals/grill/flext/source/flprefix.h deleted file mode 100644 index 094dacf7..00000000 --- a/externals/grill/flext/source/flprefix.h +++ /dev/null @@ -1,433 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flprefix.h - \brief Try to find out the platform. -*/ - -#ifndef __FLEXT_PREFIX_H -#define __FLEXT_PREFIX_H - -// --- definitions for FLEXT_SYS --------------------- -#define FLEXT_SYS_UNKNOWN 0 - -#ifndef FLEXT_SYS_MAX - #define FLEXT_SYS_MAX 1 -#else - // already defined - #undef FLEXT_SYS_MAX - #define FLEXT_SYS_MAX 1 - #define FLEXT_SYS FLEXT_SYS_MAX -#endif - -#ifndef FLEXT_SYS_PD - #define FLEXT_SYS_PD 2 -#else - // already defined - #undef FLEXT_SYS_PD - #define FLEXT_SYS_PD 2 - #define FLEXT_SYS FLEXT_SYS_PD -#endif - -#ifndef FLEXT_SYS_JMAX - #define FLEXT_SYS_JMAX 3 -#else - // already defined - #undef FLEXT_SYS_JMAX - #define FLEXT_SYS_JMAX 3 - #define FLEXT_SYS FLEXT_SYS_JMAX -#endif - -// --- definitions for FLEXT_OS ---------------------- -#define FLEXT_OS_UNKNOWN 0 -#define FLEXT_OS_WIN 1 -#define FLEXT_OS_MAC 2 -#define FLEXT_OS_LINUX 3 -#define FLEXT_OS_IRIX 4 - -// --- definitions for FLEXT_OS_API --------------------- -#define FLEXT_OSAPI_UNKNOWN 0 - -#define FLEXT_OSAPI_UNIX_POSIX 1 - -#define FLEXT_OSAPI_MAC_CLASSIC 2 -#define FLEXT_OSAPI_MAC_CARBON 3 -#define FLEXT_OSAPI_MAC_MACH 4 - -#define FLEXT_OSAPI_WIN_NATIVE 5 // WIN32 Platform -#define FLEXT_OSAPI_WIN_POSIX 6 // POSIX API (e.g. cygwin) - -// --- definitions for FLEXT_CPU --------------------- -#define FLEXT_CPU_UNKNOWN 0 -#define FLEXT_CPU_IA32 1 -#define FLEXT_CPU_PPC 2 -#define FLEXT_CPU_MIPS 3 -#define FLEXT_CPU_ALPHA 4 - -#define FLEXT_CPU_IA64 5 // Itanium -#define FLEXT_CPU_X86_64 6 // AMD-K8, EMT64 - -// compatibility -#define FLEXT_CPU_INTEL FLEXT_CPU_IA32 - -// --- definitions for FLEXT_THREADS ----------------- -#define FLEXT_THR_POSIX 1 // pthreads -#define FLEXT_THR_WIN32 2 // Win32 native -#define FLEXT_THR_MP 3 // MacOS MPThreads - -// --------------------------------------------------- -// support old definitions - -#ifndef FLEXT_SYS - #if defined(MAXMSP) - #define FLEXT_SYS FLEXT_SYS_MAX - // #undef MAXMSP - #elif defined(PD) - #define FLEXT_SYS FLEXT_SYS_PD - // #undef PD - // #undef NT - #endif -#endif - -#if defined(_DEBUG) && !defined(FLEXT_DEBUG) - #define FLEXT_DEBUG -#endif - -// --------------------------------------------------- - -// Definition of supported real-time systems -#if FLEXT_SYS == FLEXT_SYS_MAX -#elif FLEXT_SYS == FLEXT_SYS_PD -#elif FLEXT_SYS == FLEXT_SYS_JMAX -#else - #error "System must be defined by either FLEXT_SYS_MAX, FLEXT_SYS_PD or FLEXT_SYS_JMAX" -#endif - -// Definition of OS/CPU -#if defined(_MSC_VER) || (defined(__ICC) && (FLEXT_OS == FLEXT_OS_WIN || defined(_WIN32))) - // Microsoft C++ - // and Intel C++ (as guessed) - - #ifndef FLEXT_CPU - #if defined(_M_AMD64) - #define FLEXT_CPU FLEXT_CPU_X86_64 - #elif defined(_M_IA64) - #define FLEXT_CPU FLEXT_CPU_IA64 - #elif defined(_M_IX86) - #define FLEXT_CPU FLEXT_CPU_IA32 - #elif defined(_M_PPC) - #define FLEXT_CPU FLEXT_CPU_PPC - #elif defined(_M_MRX000) - #define FLEXT_CPU FLEXT_CPU_MIPS - #elif defined(_M_ALPHA) - #define FLEXT_CPU FLEXT_CPU_ALPHA - #else - #define FLEXT_CPU FLEXT_CPU_UNKNOWN - #endif - #endif - - #ifndef FLEXT_OS - #if defined(_WIN32) || defined(_WIN64) - #define FLEXT_OS FLEXT_OS_WIN - #define FLEXT_OSAPI FLEXT_OSAPI_WIN_NATIVE - #else - #define FLEXT_OS FLEXT_OS_UNKNOWN - #define FLEXT_OSAPI FLEXT_OSAPI_UNKNOWN - #endif - #endif - - -#elif defined(__BORLANDC__) - // Borland C++ - - #ifndef FLEXT_CPU - #define FLEXT_CPU FLEXT_CPU_INTEL - #endif - #ifndef FLEXT_OS - #define FLEXT_OS FLEXT_OS_WIN - #define FLEXT_OSAPI FLEXT_OSAPI_WIN_NATIVE - #else - #define FLEXT_OSAPI FLEXT_OSAPI_UNKNOWN - #endif - - -#elif defined(__MWERKS__) - // Metrowerks CodeWarrior - - #ifdef __MACH__ - // quick fix for OSX Mach-O - #define TARGET_CPU_PPC 1 - #define TARGET_OS_MAC 1 - #define TARGET_API_MAC_OSX 1 - #else - #ifndef __CONDITIONALMACROS__ - #include - #endif - #endif - - #ifndef FLEXT_CPU - #if TARGET_CPU_X86 - #define FLEXT_CPU FLEXT_CPU_INTEL - #elif TARGET_CPU_PPC - #define FLEXT_CPU FLEXT_CPU_PPC - #elif TARGET_CPU_MIPS - #define FLEXT_CPU FLEXT_CPU_MIPS - #elif TARGET_CPU_ALPHA - #define FLEXT_CPU FLEXT_CPU_ALPHA - #else - #define FLEXT_CPU FLEXT_CPU_UNKNOWN - #endif - #endif - - #ifndef FLEXT_OS - #if TARGET_OS_MAC - #define FLEXT_OS FLEXT_OS_MAC - #elif TARGET_OS_WIN32 - // assume Windows - #define FLEXT_OS FLEXT_OS_WIN - #else - #define FLEXT_OS FLEXT_OS_UNKNOWN - #endif - #endif - - #ifndef FLEXT_OSAPI - #if TARGET_API_MAC_MACH - // this is for Mach-O - // this has the precedence (MACH also supports Carbon, of course) - #define FLEXT_OSAPI FLEXT_OSAPI_MAC_MACH - #elif TARGET_API_MAC_CARBON - // this is for CFM - #define FLEXT_OSAPI FLEXT_OSAPI_MAC_CARBON - #else - #define FLEXT_OSAPI FLEXT_OSAPI_UNKNOWN - #endif - #endif - - // This is important for method and attribute callbacks - #pragma enumsalwaysint on - // This is important for everything - #pragma bool on - -#elif defined(__GNUG__) || (defined(__ICC) && (FLEXT_OS == FLEXT_OS_LINUX || defined(linux) || defined(__linux__))) - - // GNU C++ - // and Intel (as suggested by Tim Blechmann) - - #ifndef FLEXT_CPU - #if defined(__x86_64__) // not sure about this one - #define FLEXT_CPU FLEXT_CPU_X86_64 - #elif defined(_X86_) || defined(__i386__) || defined(__i586__) || defined(__i686__) - #define FLEXT_CPU FLEXT_CPU_IA32 - #elif defined(__POWERPC__) - #define FLEXT_CPU FLEXT_CPU_PPC - #elif defined(__MIPS__) - #define FLEXT_CPU FLEXT_CPU_MIPS - #else - #define FLEXT_CPU FLEXT_CPU_UNKNOWN - #endif - #endif - - #ifndef FLEXT_OS - #if defined(linux) || defined(__linux__) - #define FLEXT_OS FLEXT_OS_LINUX - #elif defined(__CYGWIN__) || defined(__CYGWIN32__) || defined(__MINGW32__) - #define FLEXT_OS FLEXT_OS_WIN - #elif defined(__APPLE__) && defined(__MACH__) - #define FLEXT_OS FLEXT_OS_MAC - // how about IRIX?? - #else - #define FLEXT_OS FLEXT_OS_UNKNOWN - #endif - #endif - - #ifndef FLEXT_OSAPI - #if FLEXT_OS == FLEXT_OS_MAC - #define FLEXT_OSAPI FLEXT_OSAPI_MAC_MACH - #elif FLEXT_OS == FLEXT_OS_WIN - #if defined(__MINGW32__) - #define FLEXT_OSAPI FLEXT_OSAPI_WIN_NATIVE - #else - #define FLEXT_OSAPI FLEXT_OSAPI_WIN_POSIX - #endif - #elif FLEXT_OS == FLEXT_OS_LINUX || FLEXT_OS == FLEXT_OS_IRIX - #define FLEXT_OSAPI FLEXT_OSAPI_UNIX_POSIX - #else - #define FLEXT_OSAPI FLEXT_OSAPI_UNKNOWN - #endif - #endif - -#elif defined(__MRC__) && defined(MPW_CPLUS) - // Apple MPW MrCpp - - #if __MRC__ < 0x500 - #error Apple MPW MrCpp v.5.0.0 or later compiler required - #endif - - #ifndef FLEXT_CPU - #if defined(__POWERPC__) - #define FLEXT_CPU FLEXT_CPU_PPC - #else - #define FLEXT_CPU FLEXT_CPU_UNKNOWN - #endif - #endif - - #ifndef FLEXT_OS - #if defined(macintosh) - #define FLEXT_OS FLEXT_OS_MAC - #else - #define FLEXT_OS FLEXT_OS_UNKNOWN - #endif - #endif - - #ifndef FLEXT_OSAPI - #if FLEXT_OS == FLEXT_OS_MAC - #define FLEXT_OSAPI FLEXT_OSAPI_MAC_CLASSIC - #else - #define FLEXT_OSAPI FLEXT_OSAPI_UNKNOWN - #endif - #endif -#endif - - - -#if FLEXT_OS == FLEXT_OS_WIN -// #pragma message("Compiling for Windows") - - #if FLEXT_SYS == FLEXT_SYS_MAX -// #define WIN_VERSION 1 - #elif FLEXT_SYS == FLEXT_SYS_PD -// #define PD -// #define NT - #endif -#elif FLEXT_OS == FLEXT_OS_LINUX -// #pragma message("Compiling for Linux") - - #if FLEXT_SYS == FLEXT_SYS_PD -// #define PD - #else - #error "Flext SYS/OS combination unknown" - #endif -#elif FLEXT_OS == FLEXT_OS_IRIX -// #pragma message("Compiling for Irix") - - #if FLEXT_SYS == FLEXT_SYS_PD -// #define PD - #else - #error "Flext SYS/OS combination unknown" - #endif -#elif FLEXT_OS == FLEXT_OS_MAC -// #pragma message("Compiling for MacOS") - - #if FLEXT_SYS == FLEXT_SYS_PD -// #define PD - #endif -#else - #error "Operating system could not be determined" -#endif - -#if FLEXT_SYS == FLEXT_SYS_MAX -// #pragma message("Compiling for Max/MSP") -#elif FLEXT_SYS == FLEXT_SYS_PD -// #pragma message("Compiling for PD") -#endif - -// ----- set threading model ----- -// shared builds are always threaded -#ifdef FLEXT_SHARED - #undef FLEXT_THREADS - #define FLEXT_THREADS -#endif - -#ifdef FLEXT_THREADS - #undef FLEXT_THREADS - #if FLEXT_SYS == FLEXT_SYS_MAX && FLEXT_OS == FLEXT_OS_MAC && FLEXT_OSAPI != FLEXT_OSAPI_MAC_MACH - // Max for CFM doesn't like posix threads - #define FLEXT_THREADS FLEXT_THR_MP - #elif FLEXT_SYS == FLEXT_SYS_MAX && FLEXT_OS == FLEXT_OS_WIN - // for wmax use native Windows threads - #define FLEXT_THREADS FLEXT_THR_WIN32 - #else - #define FLEXT_THREADS FLEXT_THR_POSIX - #endif -#endif - -// ----- macros for class names ----- -/* - With linux (flat linker namespace) and more than one flext-based external loaded all calls to static - exported functions refer to the first instance loaded! - Therefore different class names are used so that the correct type of flext function is called. -*/ -#ifdef __DOXYGEN__ - #define FLEXT_CLASSDEF(CL) CL -#elif defined(FLEXT_DEBUG) - #if defined(FLEXT_SHARED) - #define FLEXT_CLASSDEF(CL) CL##_shared_d - #elif defined(FLEXT_THREADS) - #define FLEXT_CLASSDEF(CL) CL##_multi_d - #else - #define FLEXT_CLASSDEF(CL) CL##_single_d - #endif -#else - #if defined(FLEXT_SHARED) - #define FLEXT_CLASSDEF(CL) CL##_shared - #elif defined(FLEXT_THREADS) - #define FLEXT_CLASSDEF(CL) CL##_multi - #else - #define FLEXT_CLASSDEF(CL) CL##_single - #endif -#endif - - -/* Set the right calling convention (and exporting) for the OS */ - -#if defined(_WIN32) - #ifdef FLEXT_SHARED - // for compiling a shared flext library FLEXT_EXPORTS must be defined - #ifdef FLEXT_EXPORTS - #define FLEXT_SHARE __declspec(dllexport) - #else - #define FLEXT_SHARE __declspec(dllimport) - #endif - #else - #define FLEXT_SHARE - #endif - #define FLEXT_EXT __declspec(dllexport) -#else // other OS's - #define FLEXT_SHARE - #define FLEXT_EXT -#endif - - -// std namespace -#ifdef __MWERKS__ -# define STD std -#else -# define STD -#endif - -// branching hints -#ifdef __GNUC__ -# ifndef LIKELY -# define LIKELY(expression) (__builtin_expect(!!(expression), 1)) -# endif -# ifndef UNLIKELY -# define UNLIKELY(expression) (__builtin_expect(!!(expression), 0)) -# endif -#else -# ifndef LIKELY -# define LIKELY(expression) (expression) -# endif -# ifndef UNLIKELY -# define UNLIKELY(expression) (expression) -# endif -#endif - - -#endif // __FLEXT_PREFIX_H diff --git a/externals/grill/flext/source/flproxy.cpp b/externals/grill/flext/source/flproxy.cpp deleted file mode 100644 index 6126d4b7..00000000 --- a/externals/grill/flext/source/flproxy.cpp +++ /dev/null @@ -1,222 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flproxy.cpp - \brief Proxy classes for the flext base class. -*/ - -#include "flext.h" -#include "flinternal.h" - - -// === proxy class for flext_base ============================ - -#if FLEXT_SYS == FLEXT_SYS_PD - -t_class *flext_base::px_class = NULL; - -void flext_base::px_object::px_bang(px_object *obj) -{ - obj->base->CbMethodHandler(obj->index,sym_bang,0,NULL); -} - -void flext_base::px_object::px_float(px_object *obj,t_float f) -{ - t_atom a; SetFloat(a,f); - obj->base->CbMethodHandler(obj->index,sym_float,1,&a); -} - -void flext_base::px_object::px_symbol(px_object *obj,const t_symbol *s) -{ - t_atom a; SetSymbol(a,s); - obj->base->CbMethodHandler(obj->index,sym_symbol,1,&a); -} - -/* -void flext_base::px_object::px_pointer(px_object *obj,const t_gpointer *p) -{ - t_atom a; SetPointer(a,p); - obj->base->CbMethodHandler(obj->index,sym_pointer,1,&a); -} -*/ - -void flext_base::px_object::px_anything(px_object *obj,const t_symbol *s,int argc,t_atom *argv) -{ - obj->base->CbMethodHandler(obj->index,s,argc,argv); -} - -void flext_base::cb_bang(flext_hdr *c) -{ - thisObject(c)->CbMethodHandler(0,sym_bang,0,NULL); -} - -void flext_base::cb_float(flext_hdr *c,t_float f) -{ - t_atom a; SetFloat(a,f); - thisObject(c)->CbMethodHandler(0,sym_float,1,&a); -} - -void flext_base::cb_symbol(flext_hdr *c,const t_symbol *s) -{ - t_atom a; SetSymbol(a,s); - thisObject(c)->CbMethodHandler(0,sym_symbol,1,&a); -} - -/* -void flext_base::cb_pointer(flext_hdr *c,const t_gpointer *p) -{ - t_atom a; SetPointer(a,p); - thisObject(c)->CbMethodHandler(0,sym_pointer,1,&a); -} -*/ - -void flext_base::cb_anything(flext_hdr *c,const t_symbol *s,int argc,t_atom *argv) -{ - if(UNLIKELY(!s)) { - // apparently, this happens only in one case... object is a DSP object, but has no main DSP inlet... - - // interpret tag from args - if(!argc) - s = sym_bang; - else if(argc == 1) { - if(IsFloat(*argv)) - s = sym_float; - else if(IsSymbol(*argv)) - s = sym_symbol; - else if(IsPointer(*argv)) - s = sym_pointer; - else - FLEXT_ASSERT(false); - } - else - s = sym_list; - } - - thisObject(c)->CbMethodHandler(0,s,argc,argv); -} - -#define DEF_PROXYMSG(IX) \ -void flext_base::cb_px_ft ## IX(flext_hdr *c,t_float v) { t_atom atom; SetFloat(atom,v); thisObject(c)->CbMethodHandler(IX,sym_float,1,&atom); } - -#define ADD_PROXYMSG(c,IX) \ -add_method1(c,cb_px_ft ## IX," ft " #IX,A_FLOAT) - -//AddMethod(c,0,flext::MakeSymbol("ft" #IX),cb_px_ft ## IX) - - -#elif FLEXT_SYS == FLEXT_SYS_MAX - -void flext_base::cb_anything(flext_hdr *c,const t_symbol *s,short argc,t_atom *argv) -{ - int ci = ((flext_hdr *)c)->curinlet; - thisObject(c)->CbMethodHandler(ci,s,argc,argv); -} - -void flext_base::cb_int(flext_hdr *c,long v) -{ - t_atom atom; SetInt(atom,v); - int ci = ((flext_hdr *)c)->curinlet; - thisObject(c)->CbMethodHandler(ci,sym_int,1,&atom); -} - -void flext_base::cb_float(flext_hdr *c,double v) -{ - t_atom atom; SetFloat(atom,v); - int ci = ((flext_hdr *)c)->curinlet; - thisObject(c)->CbMethodHandler(ci,sym_float,1,&atom); -} - -void flext_base::cb_bang(flext_hdr *c) -{ - int ci = ((flext_hdr *)c)->curinlet; - thisObject(c)->CbMethodHandler(ci,sym_bang,0,NULL); -} - - -#define DEF_PROXYMSG(IX) \ -void flext_base::cb_px_in ## IX(flext_hdr *c,long v) { t_atom atom; SetInt(atom,v); thisObject(c)->CbMethodHandler(IX,sym_int,1,&atom); } \ -void flext_base::cb_px_ft ## IX(flext_hdr *c,double v) { t_atom atom; SetFloat(atom,v); thisObject(c)->CbMethodHandler(IX,sym_float,1,&atom); } - -/* -void flext_base::cb_px_in ## IX(flext_hdr *c,long v) { t_atom atom; SetInt(atom,v); thisObject(c)->CbMethodHandler(IX,sym_int,1,&atom); } \ -void flext_base::cb_px_ft ## IX(flext_hdr *c,double v) { t_atom atom; SetFloat(atom,v); thisObject(c)->CbMethodHandler(IX,sym_float,1,&atom); } -*/ - -#define ADD_PROXYMSG(c,IX) \ -addinx((method)(cb_px_in ## IX),IX); \ -addftx((method)(cb_px_ft ## IX),IX) - -/* -add_method1(c,cb_px_in ## IX,"in" #IX,A_INT); \ -add_method1(c,cb_px_ft ## IX,"ft" #IX,A_FLOAT) - -AddMethod(c,0,flext::MakeSymbol("in" #IX),cb_px_in ## IX); \ -AddMethod(c,0,flext::MakeSymbol("ft" #IX),cb_px_ft ## IX) -*/ - -#endif - -#if FLEXT_SYS == FLEXT_SYS_PD || FLEXT_SYS == FLEXT_SYS_MAX - -DEF_PROXYMSG(1) -DEF_PROXYMSG(2) -DEF_PROXYMSG(3) -DEF_PROXYMSG(4) -DEF_PROXYMSG(5) -DEF_PROXYMSG(6) -DEF_PROXYMSG(7) -DEF_PROXYMSG(8) -DEF_PROXYMSG(9) - - -void flext_base::SetProxies(t_class *c,bool dsp) -{ -#if FLEXT_SYS == FLEXT_SYS_PD - // for leftmost inlet - class_addbang(c,cb_bang); - if(!dsp) class_addfloat(c,cb_float); - class_addsymbol(c,cb_symbol); -// class_addpointer(c,cb_pointer); - class_addlist(c,cb_anything); - class_addanything(c,cb_anything); - - // proxy for extra inlets - if(!px_class) { - // only once - px_class = class_new(gensym(" flext_base proxy "),NULL,NULL,sizeof(px_object),CLASS_PD|CLASS_NOINLET, A_NULL); - class_addbang(px_class,px_object::px_bang); // for other inlets - class_addfloat(px_class,px_object::px_float); // for other inlets - class_addsymbol(px_class,px_object::px_symbol); // for other inlets -// class_addpointer(px_class,px_object::px_pointer); // for other inlets - class_addlist(px_class,px_object::px_anything); // for other inlets - class_addanything(px_class,px_object::px_anything); // for other inlets - } -#elif FLEXT_SYS == FLEXT_SYS_MAX - addbang((method)cb_bang); - addint((method)cb_int); - addfloat((method)cb_float); - addmess((method)cb_anything,"list",A_GIMME,A_NOTHING); // must be explicitly given, otherwise list elements are distributes over inlets - addmess((method)cb_anything,"anything",A_GIMME,A_NOTHING); -#else -#error Not implemented! -#endif - - // setup non-leftmost ints and floats - ADD_PROXYMSG(c,1); - ADD_PROXYMSG(c,2); - ADD_PROXYMSG(c,3); - ADD_PROXYMSG(c,4); - ADD_PROXYMSG(c,5); - ADD_PROXYMSG(c,6); - ADD_PROXYMSG(c,7); - ADD_PROXYMSG(c,8); - ADD_PROXYMSG(c,9); -} -#endif diff --git a/externals/grill/flext/source/flqueue.cpp b/externals/grill/flext/source/flqueue.cpp deleted file mode 100644 index c3abbc52..00000000 --- a/externals/grill/flext/source/flqueue.cpp +++ /dev/null @@ -1,559 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flqueue.cpp - \brief Implementation of the flext message queuing functionality. - - \todo Let's see if queuing can be implemented for Max/MSP with defer_low - - if FLEXT_PDLOCK is defined, the new PD thread lock functions are used -*/ - -#include "flext.h" -#include "flinternal.h" -#include "flcontainers.h" -#include // for memcpy - -#ifdef FLEXT_THREADS -//! Thread id of message queue thread -flext::thrid_t flext::thrmsgid; -#endif - -static bool qustarted = false; - -#ifdef FLEXT_SHARED -/* - For the shared version it _should_ be possible to have only one queue for all externals. - Yet I don't know how to do this cross-platform -*/ -#define PERMANENTIDLE -#endif - -static void Trigger(); - - -class flext::MsgBundle; - -typedef PooledFifo QueueFifo; - -class Queue: - public flext, - public QueueFifo -{ -public: - inline bool Empty() const { return Size() == 0; } - - inline void Push(MsgBundle *m); // defined after MsgBundle (gcc 3.3. won't take it otherwise...) -}; - -static Queue queue; - - -#define STATSIZE 8 - -class flext::MsgBundle: - public flext, - public Fifo::Cell -{ -public: - static MsgBundle *New() - { - MsgBundle *m = queue.New(); - m->msg.Init(); - return m; - } - - static void Free(MsgBundle *m) - { - for(Msg *mi = m->msg.nxt; mi; ) { - Msg *mn = mi->nxt; - mi->Free(); - delete mi; - mi = mn; - } - m->msg.Free(); - queue.Free(m); - } - - inline MsgBundle &Add(flext_base *t,int o,const t_symbol *s,int ac,const t_atom *av) - { - Get()->Set(t,o,s,ac,av); - return *this; - } - - inline MsgBundle &Add(const t_symbol *r,const t_symbol *s,int ac,const t_atom *av) - { - Get()->Set(r,s,ac,av); - return *this; - } - - inline MsgBundle &Add(flext_base *th,int o) // bang - { - return Add(th,o,sym_bang,0,NULL); - } - - inline MsgBundle &Add(flext_base *th,int o,float dt) - { - t_atom at; - SetFloat(at,dt); - return Add(th,o,sym_float,1,&at); - } - - inline MsgBundle &Add(flext_base *th,int o,int dt) - { - t_atom at; - SetInt(at,dt); - const t_symbol *sym; -#if FLEXT_SYS == FLEXT_SYS_PD - sym = sym_float; -#elif FLEXT_SYS == FLEXT_SYS_MAX - sym = sym_int; -#else -#error Not implemented! -#endif - return Add(th,o,sym,1,&at); - } - - inline MsgBundle &Add(flext_base *th,int o,const t_symbol *dt) - { - t_atom at; - SetSymbol(at,dt); - return Add(th,o,sym_symbol,1,&at); - } - - inline MsgBundle &Add(flext_base *th,int o,const t_atom &a) - { - const t_symbol *sym; - if(IsSymbol(a)) - sym = sym_symbol; - else if(IsFloat(a)) - sym = sym_float; -#if FLEXT_SYS == FLEXT_SYS_MAX - else if(IsInt(a)) - sym = sym_int; -#endif -#if FLEXT_SYS == FLEXT_SYS_PD - else if(IsPointer(a)) - sym = sym_pointer; -#endif - else { - error("atom type not supported"); - return *this; - } - return Add(th,o,sym,1,&a); - } - - inline MsgBundle &Add(flext_base *th,int o,int argc,const t_atom *argv) - { - return Add(th,o,sym_list,argc,argv); - } - - // \note PD sys lock must already be held by caller - inline void Send() const - { - if(!msg.Ok()) return; // Empty! - - const Msg *m = &msg; - do { - m->Send(); - m = m->nxt; - } while(m); - } - -private: - - class Msg { - public: - inline bool Ok() const { return th || recv; } - - void Init() - { - th = NULL; - recv = NULL; - nxt = NULL; - argc = 0; - } - - void Free() - { - if(argc > STATSIZE) { - FLEXT_ASSERT(argv); - delete[] argv; - } - } - - void Set(flext_base *t,int o,const t_symbol *s,int ac,const t_atom *av) - { - FLEXT_ASSERT(t); - th = t; - out = o; - SetMsg(s,ac,av); -} - - void Set(const t_symbol *r,const t_symbol *s,int ac,const t_atom *av) - { - FLEXT_ASSERT(r); - th = NULL; - recv = r; - SetMsg(s,ac,av); - } - - void Send() const - { - if(th) { - if(UNLIKELY(out < 0)) - // message to self - th->CbMethodHandler(-1-out,sym,argc,argc > STATSIZE?argv:argl); - else - // message to outlet - th->ToSysAnything(out,sym,argc,argc > STATSIZE?argv:argl); - } - else - flext::SysForward(recv,sym,argc,argc > STATSIZE?argv:argl); - } - - Msg *nxt; - - protected: - flext_base *th; - union { - int out; - const t_symbol *recv; - }; - const t_symbol *sym; - int argc; - union { - t_atom *argv; - t_atom argl[STATSIZE]; - }; - - void SetMsg(const t_symbol *s,int cnt,const t_atom *lst) - { - sym = s; - argc = cnt; - if(UNLIKELY(cnt > STATSIZE)) { - argv = new t_atom[cnt]; - flext::CopyAtoms(cnt,argv,lst); - } - else - flext::CopyAtoms(cnt,argl,lst); - } - - } msg; - - Msg *Get() - { - Msg *m = &msg; - if(LIKELY(m->Ok())) { - for(; m->nxt; m = m->nxt) {} - m = m->nxt = new Msg; - m->Init(); - } - return m; - } -}; - -inline void Queue::Push(MsgBundle *m) -{ - if(LIKELY(m)) { - Put(m); - Trigger(); - } -} - -#if FLEXT_QMODE == 2 -static flext::ThrCond qthrcond; -#elif FLEXT_QMODE == 0 -//static t_qelem *qclk = NULL; -static t_clock *qclk = NULL; -#endif - - -#define CHUNK 10 - -static void QWork(bool syslock) -{ - for(;;) { - // Since qcnt can only be increased from any other function than QWork - // qc will be a minimum guaranteed number of present queue elements. - // On the other hand, if new queue elements are added by the methods called - // in the loop, these will be sent in the next tick to avoid recursion overflow. - size_t qc = queue.Size(); - if(!qc) break; - - #if FLEXT_QMODE == 2 - if(syslock) flext::Lock(); - #endif - - flext::MsgBundle *q; - while((q = queue.Get()) != NULL) { - q->Send(); - flext::MsgBundle::Free(q); - } - - #if FLEXT_QMODE == 2 - if(syslock) flext::Unlock(); - #endif - - } -} - -#if FLEXT_QMODE == 0 -#if FLEXT_SYS == FLEXT_SYS_JMAX -static void QTick(fts_object_t *c,int winlet, fts_symbol_t s, int ac, const fts_atom_t *at) -{ -#else -static void QTick(flext_base *c) -{ -#endif -#ifdef FLEXT_THREADS - FLEXT_ASSERT(flext::IsSystemThread()); -#endif - QWork(false); -} - -#elif FLEXT_QMODE == 1 -#ifndef PERMANENTIDLE -static bool qtickactive = false; -#endif -static t_int QTick(t_int *) -{ -#ifndef PERMANENTIDLE - qtickactive = false; -#endif - - QWork(false); - -#ifdef PERMANENTIDLE - // will be run in the next idle cycle - return 2; -#else - // won't be run again - // for non-shared externals assume that there's rarely a message waiting - // so it's better to delete the callback meanwhile - return 0; -#endif -} -#endif - -/* -It would be sufficient to only flush messages belonging to object th -But then the order of sent messages is not as intended -*/ -void flext_base::QFlush(flext_base *th) -{ -#ifdef FLEXT_THREADS - if(!IsSystemThread()) { - error("flext - Queue flush called by wrong thread!"); - return; - } -#endif - - while(!queue.Empty()) QWork(false); -} - -static void Trigger() -{ -#if FLEXT_SYS == FLEXT_SYS_PD - #if FLEXT_QMODE == 2 - // wake up worker thread - qthrcond.Signal(); - #elif FLEXT_QMODE == 1 && !defined(PERMANENTIDLE) - if(!qtickactive) { - sys_callback(QTick,NULL,0); - qtickactive = true; - } - #elif FLEXT_QMODE == 0 - clock_delay(qclk,0); - #endif -#elif FLEXT_SYS == FLEXT_SYS_MAX - #if FLEXT_QMODE == 0 -// qelem_front(qclk); - clock_delay(qclk,0); - #endif -#else -#error Not implemented -#endif -} - -#if FLEXT_QMODE == 2 -void flext_base::QWorker(thr_params *) -{ - thrmsgid = GetThreadId(); - qustarted = true; - for(;;) { - qthrcond.Wait(); - QWork(true); - } -} -#endif - -void flext_base::StartQueue() -{ - if(qustarted) return; -#if FLEXT_QMODE == 1 -#ifdef PERMANENTIDLE - sys_callback(QTick,NULL,0); - qustarted = true; -#endif -#elif FLEXT_QMODE == 2 - LaunchThread(QWorker,NULL); - // very unelegant... but waiting should be ok, since happens only on loading - while(!qustarted) Sleep(0.001); -#elif FLEXT_QMODE == 0 && (FLEXT_SYS == FLEXT_SYS_PD || FLEXT_SYS == FLEXT_SYS_MAX) -// qclk = (t_qelem *)(qelem_new(NULL,(t_method)QTick)); - qclk = (t_clock *)(clock_new(NULL,(t_method)QTick)); - qustarted = true; -#else -#error Not implemented! -#endif -} - - -flext::MsgBundle *flext::MsgNew() -{ - return MsgBundle::New(); -} - -void flext::MsgFree(MsgBundle *m) -{ - MsgBundle::Free(m); -} - -void flext::ToSysMsg(MsgBundle *m) -{ - m->Send(); - queue.Free(m); -} - -void flext::ToQueueMsg(MsgBundle *m) -{ - queue.Push(m); -} - - - -void flext_base::ToQueueBang(int o) const -{ - MsgBundle *m = MsgBundle::New(); - m->Add(const_cast(this),o); - queue.Push(m); -} - -void flext_base::ToQueueFloat(int o,float f) const -{ - MsgBundle *m = MsgBundle::New(); - m->Add(const_cast(this),o,f); - queue.Push(m); -} - -void flext_base::ToQueueInt(int o,int f) const -{ - MsgBundle *m = MsgBundle::New(); - m->Add(const_cast(this),o,f); - queue.Push(m); -} - -void flext_base::ToQueueSymbol(int o,const t_symbol *s) const -{ - MsgBundle *m = MsgBundle::New(); - m->Add(const_cast(this),o,s); - queue.Push(m); -} - -void flext_base::ToQueueAtom(int o,const t_atom &at) const -{ - MsgBundle *m = MsgBundle::New(); - m->Add(const_cast(this),o,at); - queue.Push(m); -} - -void flext_base::ToQueueList(int o,int argc,const t_atom *argv) const -{ - MsgBundle *m = MsgBundle::New(); - m->Add(const_cast(this),o,argc,argv); - queue.Push(m); -} - -void flext_base::ToQueueAnything(int o,const t_symbol *s,int argc,const t_atom *argv) const -{ - MsgBundle *m = MsgBundle::New(); - m->Add(const_cast(this),o,s,argc,argv); - queue.Push(m); -} - - -void flext_base::MsgAddBang(MsgBundle *m,int n) const -{ - m->Add(const_cast(this),n); -} - -void flext_base::MsgAddFloat(MsgBundle *m,int n,float f) const -{ - m->Add(const_cast(this),n,f); -} - -void flext_base::MsgAddInt(MsgBundle *m,int n,int f) const -{ - m->Add(const_cast(this),n,f); -} - -void flext_base::MsgAddSymbol(MsgBundle *m,int n,const t_symbol *s) const -{ - m->Add(const_cast(this),n,s); -} - -void flext_base::MsgAddAtom(MsgBundle *m,int n,const t_atom &at) const -{ - m->Add(const_cast(this),n,at); -} - -void flext_base::MsgAddList(MsgBundle *m,int n,int argc,const t_atom *argv) const -{ - m->Add(const_cast(this),n,argc,argv); -} - -void flext_base::MsgAddAnything(MsgBundle *m,int n,const t_symbol *s,int argc,const t_atom *argv) const -{ - m->Add(const_cast(this),n,s,argc,argv); -} - - - - -bool flext::SysForward(const t_symbol *recv,const t_symbol *s,int argc,const t_atom *argv) -{ - void *cl = recv->s_thing; - if(UNLIKELY(!cl)) return false; - -#if FLEXT_SYS == FLEXT_SYS_PD - pd_typedmess((t_class **)cl,(t_symbol *)s,argc,(t_atom *)argv); -#elif FLEXT_SYS == FLEXT_SYS_MAX - typedmess(recv->s_thing,(t_symbol *)s,argc,(t_atom *)argv); -#else -#error Not implemented -#endif - return true; -} - -bool flext::QueueForward(const t_symbol *recv,const t_symbol *s,int argc,const t_atom *argv) -{ - MsgBundle *m = MsgBundle::New(); - m->Add(recv,s,argc,argv); - // send over queue - queue.Push(m); - return true; -} - -bool flext::MsgForward(MsgBundle *m,const t_symbol *recv,const t_symbol *s,int argc,const t_atom *argv) -{ - m->Add(recv,s,argc,argv); - return true; -} diff --git a/externals/grill/flext/source/flsimd.cpp b/externals/grill/flext/source/flsimd.cpp deleted file mode 100644 index 8ed13a4a..00000000 --- a/externals/grill/flext/source/flsimd.cpp +++ /dev/null @@ -1,2002 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flsimd.cpp - \brief flext SIMD support functions - - If FLEXT_USE_SIMD is defined at compilation, SIMD instructions are used wherever feasible. - If used with MSVC++ 6 the "Processor Pack" must be installed. - - If FLEXT_USE_IPP is defined the Intel Performance Package is used. -*/ - -#include "flext.h" -#include - -#if FLEXT_OS == FLEXT_OS_WIN -#include -#endif - -#ifdef FLEXT_USE_IPP -#include -#endif - -#ifdef FLEXT_USE_SIMD - #ifdef _MSC_VER - // include MSVC SIMD header files - #include // MMX - #include // SSE - #include // SSE2 - #include // 3DNow! - #elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__MWERKS__) && defined(__VEC__) - #if FLEXT_OSAPI == FLEXT_OSAPI_MAC_MACH - #include - #include - #else - #include - #endif - - #pragma altivec_model on - - #include - #include - #elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__GNUC__) && defined(__VEC__) - #include - #include - #endif - -#endif // FLEXT_USE_SIMD - -static unsigned long setsimdcaps(); - -/*! \brief Holds SIMD capability flags - \internal -*/ -unsigned long flext::simdcaps = setsimdcaps(); - -unsigned long flext::GetSIMDCapabilities() { return simdcaps; } - - -#ifdef FLEXT_USE_SIMD - -#if FLEXT_CPU == FLEXT_CPU_IA32 || FLEXT_CPU == FLEXT_CPU_X84_64 - -#define _CPU_FEATURE_MMX 0x0001 -#define _CPU_FEATURE_SSE 0x0002 -#define _CPU_FEATURE_SSE2 0x0004 -#define _CPU_FEATURE_3DNOW 0x0008 - -typedef struct _processor_info { - int family; // family of the processor - // e.g. 6 = Pentium-Pro architecture - int model; // model of processor - // e.g. 1 = Pentium-Pro for family = 6 - int stepping; // processor revision number - int feature; // processor feature - // (same as return value from _cpuid) - int os_support; // does OS Support the feature? - int checks; // mask of checked bits in feature - // and os_support fields -} _p_info; - -// These are the bit flags that get set on calling cpuid -// with register eax set to 1 -#define _MMX_FEATURE_BIT 0x00800000 -#define _SSE_FEATURE_BIT 0x02000000 -#define _SSE2_FEATURE_BIT 0x04000000 - -// This bit is set when cpuid is called with -// register set to 80000001h (only applicable to AMD) -#define _3DNOW_FEATURE_BIT 0x80000000 - -#ifdef _MSC_VER -static int IsCPUID() -{ - __try { - _asm { - xor eax, eax - cpuid - } - } - __except (EXCEPTION_EXECUTE_HANDLER) { - return 0; - } - return 1; -} - -static int _os_support(int feature) -{ - __try { - switch (feature) { - case _CPU_FEATURE_SSE: - __asm { - xorps xmm0, xmm0 // executing SSE instruction - } - break; - case _CPU_FEATURE_SSE2: - __asm { - xorpd xmm0, xmm0 // executing SSE2 instruction - } - break; - case _CPU_FEATURE_3DNOW: - __asm { - pfrcp mm0, mm0 // executing 3DNow! instruction - emms - } - break; - case _CPU_FEATURE_MMX: - __asm { - pxor mm0, mm0 // executing MMX instruction - emms - } - break; - } - } - __except (EXCEPTION_EXECUTE_HANDLER) { - if (_exception_code() == STATUS_ILLEGAL_INSTRUCTION) { - return 0; - } - return 0; - } - return 1; -} - -static int _cpuid (_p_info *pinfo) -{ - DWORD dwStandard = 0; - DWORD dwFeature = 0; - DWORD dwMax = 0; - DWORD dwExt = 0; - int feature = 0; - int os_support = 0; - union { - struct { - DWORD dw0; - DWORD dw1; - DWORD dw2; - } s; - } Ident; - - if (!IsCPUID()) { - return 0; - } - - _asm { - push ebx - push ecx - push edx - - // get the vendor string - xor eax, eax - cpuid - mov dwMax, eax - mov Ident.s.dw0, ebx - mov Ident.s.dw1, edx - mov Ident.s.dw2, ecx - - // get the Standard bits - mov eax, 1 - cpuid - mov dwStandard, eax - mov dwFeature, edx - - // get AMD-specials - mov eax, 80000000h - cpuid - cmp eax, 80000000h - jc notamd - mov eax, 80000001h - cpuid - mov dwExt, edx - -notamd: - pop ecx - pop ebx - pop edx - } - - if (dwFeature & _MMX_FEATURE_BIT) { - feature |= _CPU_FEATURE_MMX; - if (_os_support(_CPU_FEATURE_MMX)) - os_support |= _CPU_FEATURE_MMX; - } - if (dwExt & _3DNOW_FEATURE_BIT) { - feature |= _CPU_FEATURE_3DNOW; - if (_os_support(_CPU_FEATURE_3DNOW)) - os_support |= _CPU_FEATURE_3DNOW; - } - if (dwFeature & _SSE_FEATURE_BIT) { - feature |= _CPU_FEATURE_SSE; - if (_os_support(_CPU_FEATURE_SSE)) - os_support |= _CPU_FEATURE_SSE; - } - if (dwFeature & _SSE2_FEATURE_BIT) { - feature |= _CPU_FEATURE_SSE2; - if (_os_support(_CPU_FEATURE_SSE2)) - os_support |= _CPU_FEATURE_SSE2; - } - - if (pinfo) { - memset(pinfo, 0, sizeof(_p_info)); - - pinfo->os_support = os_support; - pinfo->feature = feature; - pinfo->family = (dwStandard >> 8) & 0xF; // retrieve family - if (pinfo->family == 15) { // retrieve extended family - pinfo->family |= (dwStandard >> 16) & 0xFF0; - } - pinfo->model = (dwStandard >> 4) & 0xF; // retrieve model - if (pinfo->model == 15) { // retrieve extended model - pinfo->model |= (dwStandard >> 12) & 0xF; - } - pinfo->stepping = (dwStandard) & 0xF; // retrieve stepping - - pinfo->checks = _CPU_FEATURE_MMX | - _CPU_FEATURE_SSE | - _CPU_FEATURE_SSE2 | - _CPU_FEATURE_3DNOW; - } - - return feature; -} - -inline bool IsVectorAligned(const void *where) -{ - return (reinterpret_cast(where)&(__alignof(__m128)-1)) == 0; -} - -inline bool VectorsAligned(const void *v1,const void *v2) -{ - return ( - (reinterpret_cast(v1)|reinterpret_cast(v2)) - &(__alignof(__m128)-1) - ) == 0; -} - -inline bool VectorsAligned(const void *v1,const void *v2,const void *v3) -{ - return ( - (reinterpret_cast(v1)|reinterpret_cast(v2)|reinterpret_cast(v3)) - &(__alignof(__m128)-1) - ) == 0; -} - -inline bool VectorsAligned(const void *v1,const void *v2,const void *v3,const void *v4) -{ - return ( - (reinterpret_cast(v1)|reinterpret_cast(v2)|reinterpret_cast(v3)|reinterpret_cast(v4)) - &(__alignof(__m128)-1) - ) == 0; -} - -#else -// not MSVC -static int _cpuid (_p_info *pinfo) -{ - if(pinfo) memset(pinfo,0,sizeof *pinfo); - return 0; -} -#endif - -#endif - - -/*! \brief Determine SIMD capabilities - \internal -*/ -static unsigned long setsimdcaps() -{ - unsigned long simdflags = flext::simd_none; -#if FLEXT_CPU == FLEXT_CPU_IA32 || FLEXT_CPU == FLEXT_CPU_AMD64 - _p_info cpuinfo; - int feature = _cpuid(&cpuinfo); - if(cpuinfo.os_support&_CPU_FEATURE_MMX) simdflags += flext::simd_mmx; - if(cpuinfo.os_support&_CPU_FEATURE_3DNOW) simdflags += flext::simd_3dnow; - if(cpuinfo.os_support&_CPU_FEATURE_SSE) simdflags += flext::simd_sse; - if(cpuinfo.os_support&_CPU_FEATURE_SSE2) simdflags += flext::simd_sse2; -#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__) - #if FLEXT_OSAPI == FLEXT_OSAPI_MAC_MACH - - int selectors[2] = { CTL_HW, HW_VECTORUNIT }; - int hasVectorUnit = 0; - size_t length = sizeof(hasVectorUnit); - int error = sysctl(selectors, 2, &hasVectorUnit, &length, NULL, 0); - - if(!error && hasVectorUnit != 0) simdflags += flext::simd_altivec; - - #else - - long cpuAttributes; - Boolean hasAltiVec = false; - OSErr err = Gestalt( gestaltPowerPCProcessorFeatures, &cpuAttributes ); - - if( noErr == err ) - if(( 1 << gestaltPowerPCHasVectorInstructions) & cpuAttributes) simdflags += flext::simd_altivec; - - #endif -#endif - return simdflags; -} - - -#if FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__) - -/* functions for misaligned vector data - taken from the Altivec tutorial of Ian Ollmann, Ph.D. */ - -//! Load a vector from an unaligned location in memory -inline vector unsigned char LoadUnaligned( vector unsigned char *v ) -{ - vector unsigned char permuteVector = vec_lvsl( 0, (int*) v ); - vector unsigned char low = vec_ld( 0, v ); - vector unsigned char high = vec_ld( 15, v ); - return vec_perm( low, high, permuteVector ); -} - -/* -//! Store a vector to an unaligned location in memory -inline void StoreUnaligned( vector unsigned char v, vector unsigned char *where) -{ - // Load the surrounding area - vector unsigned char low = vec_ld( 0, where ); - vector unsigned char high = vec_ld( 16, where ); - // Prepare the constants that we need - vector unsigned char permuteVector = vec_lvsr( 0, (int*) where ); - - vector unsigned char oxFF = (vector unsigned char)vec_splat_s8( -1 ); - vector unsigned char ox00 = (vector unsigned char)vec_splat_s8( 0 ); - // Make a mask for which parts of the vectors to swap out - vector unsigned char mask = vec_perm( ox00, oxFF, permuteVector ); - // Right rotate our input data - v = vec_perm( v, v, permuteVector ); - // Insert our data into the low and high vectors - low = vec_sel( v, low, mask ); - high = vec_sel( high, v, mask ); - // Store the two aligned result vectors - vec_st( low, 0, where ); - vec_st( high, 16, where ); -} -*/ - -inline vector float LoadUnaligned(const float *v ) -{ - return (vector float)LoadUnaligned((vector unsigned char *)v); -} - -/* -inline void StoreUnaligned( vector float v,float *where) -{ - return StoreUnaligned((vector unsigned char)v,(vector unsigned char *)where); -} -*/ - -inline bool IsVectorAligned(const void *where) -{ - return (reinterpret_cast(where)&(sizeof(vector float)-1)) == 0; -} - -inline bool VectorsAligned(const void *v1,const void *v2) -{ - return ( - (reinterpret_cast(v1)|reinterpret_cast(v2)) - &(sizeof(vector float)-1) - ) == 0; -} - -inline bool VectorsAligned(const void *v1,const void *v2,const void *v3) -{ - return ( - (reinterpret_cast(v1)|reinterpret_cast(v2)|reinterpret_cast(v3)) - &(sizeof(vector float)-1) - ) == 0; -} - -inline bool VectorsAligned(const void *v1,const void *v2,const void *v3,const void *v4) -{ - return ( - (reinterpret_cast(v1)|reinterpret_cast(v2)|reinterpret_cast(v3)|reinterpret_cast(v4)) - &(sizeof(vector float)-1) - ) == 0; -} - -inline vector float LoadValue(const float &f) -{ - return vec_splat(IsVectorAligned(&f)?vec_ld(0,(vector float *)&f):LoadUnaligned(&f),0); -} -#endif - - -#else // FLEXT_USE_SIMD -static unsigned long setsimdcaps() { return 0; } -#endif // FLEXT_USE_SIMD - - -void flext::CopySamples(t_sample *dst,const t_sample *src,int cnt) -{ -#ifdef FLEXT_USE_IPP - if(sizeof(t_sample) == 4) - ippsCopy_32f((const float *)src,(float *)dst,cnt); - else if(sizeof(t_sample) == 8) - ippsCopy_64f((const double *)src,(double *)dst,cnt); - else - ERRINTERNAL(); -#else -#ifdef FLEXT_USE_SIMD -#ifdef _MSC_VER - if(GetSIMDCapabilities()&simd_sse) { - // single precision - - int n = cnt>>4; - if(!n) goto zero; - cnt -= n<<4; - - __asm { - mov eax,dword ptr [src] - prefetcht0 [eax+0] - prefetcht0 [eax+32] - } - - if(IsVectorAligned(src)) { - if(IsVectorAligned(dst)) { - // aligned src, aligned dst - __asm { - mov eax,dword ptr [src] - mov edx,dword ptr [dst] - mov ecx,[n] -loopaa: - prefetcht0 [eax+64] - prefetcht0 [eax+96] - movaps xmm0,xmmword ptr[eax] - movaps xmmword ptr[edx],xmm0 - movaps xmm1,xmmword ptr[eax+4*4] - movaps xmmword ptr[edx+4*4],xmm1 - movaps xmm2,xmmword ptr[eax+8*4] - movaps xmmword ptr[edx+8*4],xmm2 - movaps xmm3,xmmword ptr[eax+12*4] - movaps xmmword ptr[edx+12*4],xmm3 - - add eax,16*4 - add edx,16*4 - loop loopaa - } - } - else { - // aligned src, unaligned dst - __asm { - mov eax,dword ptr [src] - mov edx,dword ptr [dst] - mov ecx,[n] -loopau: - prefetcht0 [eax+64] - prefetcht0 [eax+96] - movaps xmm0,xmmword ptr[eax] - movups xmmword ptr[edx],xmm0 - movaps xmm1,xmmword ptr[eax+4*4] - movups xmmword ptr[edx+4*4],xmm1 - movaps xmm2,xmmword ptr[eax+8*4] - movups xmmword ptr[edx+8*4],xmm2 - movaps xmm3,xmmword ptr[eax+12*4] - movups xmmword ptr[edx+12*4],xmm3 - - add eax,16*4 - add edx,16*4 - loop loopau - } - } - } - else { - if(IsVectorAligned(dst)) { - // unaligned src, aligned dst - __asm { - mov eax,dword ptr [src] - mov edx,dword ptr [dst] - mov ecx,[n] -loopua: - prefetcht0 [eax+64] - prefetcht0 [eax+96] - movups xmm0,xmmword ptr[eax] - movaps xmmword ptr[edx],xmm0 - movups xmm1,xmmword ptr[eax+4*4] - movaps xmmword ptr[edx+4*4],xmm1 - movups xmm2,xmmword ptr[eax+8*4] - movaps xmmword ptr[edx+8*4],xmm2 - movups xmm3,xmmword ptr[eax+12*4] - movaps xmmword ptr[edx+12*4],xmm3 - - add eax,16*4 - add edx,16*4 - loop loopua - } - } - else { - // unaligned src, unaligned dst - __asm { - mov eax,dword ptr [src] - mov edx,dword ptr [dst] - mov ecx,[n] -loopuu: - prefetcht0 [eax+64] - prefetcht0 [eax+96] - movups xmm0,xmmword ptr[eax] - movups xmmword ptr[edx],xmm0 - movups xmm1,xmmword ptr[eax+4*4] - movups xmmword ptr[edx+4*4],xmm1 - movups xmm2,xmmword ptr[eax+8*4] - movups xmmword ptr[edx+8*4],xmm2 - movups xmm3,xmmword ptr[eax+12*4] - movups xmmword ptr[edx+12*4],xmm3 - - add eax,16*4 - add edx,16*4 - loop loopuu - } - } - } - - src += n<<4,dst += n<<4; -zero: - while(cnt--) *(dst++) = *(src++); - } - else -#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VECTOROPS__) - if(true) { - int n = cnt>>2,n4 = n<<2; - vScopy(n4,(vector float *)src,(vector float *)dst); - cnt -= n4,src += n4,dst += n4; - while(cnt--) *(dst++) = *(src++); - } - else -#endif // _MSC_VER -#endif // FLEXT_USE_SIMD - { - int n = cnt>>3; - cnt -= n<<3; - while(n--) { - dst[0] = src[0]; dst[1] = src[1]; dst[2] = src[2]; dst[3] = src[3]; - dst[4] = src[4]; dst[5] = src[5]; dst[6] = src[6]; dst[7] = src[7]; - src += 8,dst += 8; - } - while(cnt--) *(dst++) = *(src++); - } -#endif -} - -#if defined(FLEXT_USE_SIMD) && FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__) -// because of some frame code Altivec stuff should be in seperate functions.... - -static const vector float zero = (vector float)(0); - -static void SetAltivec(t_sample *dst,int cnt,t_sample s) -{ - vector float svec = LoadValue(s); - int n = cnt>>4; - cnt -= n<<4; - - while(n--) { - vec_st(svec,0,dst); - vec_st(svec,16,dst); - vec_st(svec,32,dst); - vec_st(svec,48,dst); - dst += 16; - } - - while(cnt--) *(dst++) = s; -} - -static void MulAltivec(t_sample *dst,const t_sample *src,t_sample op,int cnt) -{ - const vector float arg = LoadValue(op); - int n = cnt>>4; - cnt -= n<<4; - - for(; n--; src += 16,dst += 16) { - vector float a1 = vec_ld( 0,src); - vector float a2 = vec_ld(16,src); - vector float a3 = vec_ld(32,src); - vector float a4 = vec_ld(48,src); - - a1 = vec_madd(a1,arg,zero); - a2 = vec_madd(a2,arg,zero); - a3 = vec_madd(a3,arg,zero); - a4 = vec_madd(a4,arg,zero); - - vec_st(a1, 0,dst); - vec_st(a2,16,dst); - vec_st(a3,32,dst); - vec_st(a4,48,dst); - } - - while(cnt--) *(dst++) = *(src++)*op; -} - -static void MulAltivec(t_sample *dst,const t_sample *src,const t_sample *op,int cnt) -{ - int n = cnt>>4; - cnt -= n<<4; - - for(; n--; src += 16,op += 16,dst += 16) { - vector float a1 = vec_ld( 0,src),b1 = vec_ld( 0,op); - vector float a2 = vec_ld(16,src),b2 = vec_ld(16,op); - vector float a3 = vec_ld(32,src),b3 = vec_ld(32,op); - vector float a4 = vec_ld(48,src),b4 = vec_ld(48,op); - - a1 = vec_madd(a1,b1,zero); - a2 = vec_madd(a2,b2,zero); - a3 = vec_madd(a3,b3,zero); - a4 = vec_madd(a4,b4,zero); - - vec_st(a1, 0,dst); - vec_st(a2,16,dst); - vec_st(a3,32,dst); - vec_st(a4,48,dst); - } - while(cnt--) *(dst++) = *(src++) * *(op++); -} - -static void AddAltivec(t_sample *dst,const t_sample *src,t_sample op,int cnt) -{ - const vector float arg = LoadValue(op); - int n = cnt>>4; - cnt -= n<<4; - - for(; n--; src += 16,dst += 16) { - vector float a1 = vec_ld( 0,src); - vector float a2 = vec_ld(16,src); - vector float a3 = vec_ld(32,src); - vector float a4 = vec_ld(48,src); - - a1 = vec_add(a1,arg); - a2 = vec_add(a2,arg); - a3 = vec_add(a3,arg); - a4 = vec_add(a4,arg); - - vec_st(a1, 0,dst); - vec_st(a2,16,dst); - vec_st(a3,32,dst); - vec_st(a4,48,dst); - } - - while(cnt--) *(dst++) = *(src++)+op; -} - -static void AddAltivec(t_sample *dst,const t_sample *src,const t_sample *op,int cnt) -{ - int n = cnt>>4; - cnt -= n<<4; - - for(; n--; src += 16,op += 16,dst += 16) { - vector float a1 = vec_ld( 0,src),b1 = vec_ld( 0,op); - vector float a2 = vec_ld(16,src),b2 = vec_ld(16,op); - vector float a3 = vec_ld(32,src),b3 = vec_ld(32,op); - vector float a4 = vec_ld(48,src),b4 = vec_ld(48,op); - - a1 = vec_add(a1,b1); - a2 = vec_add(a2,b2); - a3 = vec_add(a3,b3); - a4 = vec_add(a4,b4); - - vec_st(a1, 0,dst); - vec_st(a2,16,dst); - vec_st(a3,32,dst); - vec_st(a4,48,dst); - } - while(cnt--) *(dst++) = *(src++) + *(op++); -} - -static void ScaleAltivec(t_sample *dst,const t_sample *src,t_sample opmul,t_sample opadd,int cnt) -{ - const vector float argmul = LoadValue(opmul); - const vector float argadd = LoadValue(opadd); - int n = cnt>>4; - cnt -= n<<4; - - for(; n--; src += 16,dst += 16) { - vec_st(vec_madd(vec_ld( 0,src),argmul,argadd), 0,dst); - vec_st(vec_madd(vec_ld(16,src),argmul,argadd),16,dst); - vec_st(vec_madd(vec_ld(32,src),argmul,argadd),32,dst); - vec_st(vec_madd(vec_ld(48,src),argmul,argadd),48,dst); - } - - while(cnt--) *(dst++) = *(src++)*opmul+opadd; -} - -static void ScaleAltivec(t_sample *dst,const t_sample *src,t_sample opmul,const t_sample *add,int cnt) -{ - const vector float argmul = LoadValue(opmul); - int n = cnt>>4; - cnt -= n<<4; - - for(; n--; src += 16,dst += 16,add += 16) { - vec_st(vec_madd(vec_ld( 0,src),argmul,vec_ld( 0,add)), 0,dst); - vec_st(vec_madd(vec_ld(16,src),argmul,vec_ld(16,add)),16,dst); - vec_st(vec_madd(vec_ld(32,src),argmul,vec_ld(32,add)),32,dst); - vec_st(vec_madd(vec_ld(48,src),argmul,vec_ld(48,add)),48,dst); - } - - while(cnt--) *(dst++) = *(src++) * opmul + *(add++); -} - -static void ScaleAltivec(t_sample *dst,const t_sample *src,const t_sample *mul,const t_sample *add,int cnt) -{ - int n = cnt>>4; - cnt -= n<<4; - - for(; n--; src += 16,dst += 16,mul += 16,add += 16) { - vec_st(vec_madd(vec_ld( 0,src),vec_ld( 0,mul),vec_ld( 0,add)), 0,dst); - vec_st(vec_madd(vec_ld(16,src),vec_ld(16,mul),vec_ld(16,add)),16,dst); - vec_st(vec_madd(vec_ld(32,src),vec_ld(32,mul),vec_ld(32,add)),32,dst); - vec_st(vec_madd(vec_ld(48,src),vec_ld(48,mul),vec_ld(48,add)),48,dst); - } - - while(cnt--) *(dst++) = *(src++) * *(mul++) + *(add++); -} -#endif - -void flext::SetSamples(t_sample *dst,int cnt,t_sample s) -{ -#ifdef FLEXT_USE_IPP - if(sizeof(t_sample) == 4) - ippsSet_32f((float)s,(float *)dst,cnt); - else if(sizeof(t_sample) == 8) - ippsSet_64f((double)s,(double *)dst,cnt); - else - ERRINTERNAL(); -#else -#ifdef FLEXT_USE_SIMD -#ifdef _MSC_VER - if(GetSIMDCapabilities()&simd_sse) { - // single precision - - int n = cnt>>4; - if(!n) goto zero; - cnt -= n<<4; - - __asm { - movss xmm0,xmmword ptr [s] - shufps xmm0,xmm0,0 - } - - if(IsVectorAligned(dst)) { - // aligned version - __asm { - mov ecx,[n] - mov edx,dword ptr [dst] -loopa: - movaps xmmword ptr[edx],xmm0 - movaps xmmword ptr[edx+4*4],xmm0 - movaps xmmword ptr[edx+8*4],xmm0 - movaps xmmword ptr[edx+12*4],xmm0 - - add edx,16*4 - loop loopa - } - } - else { - // unaligned version - __asm { - mov ecx,[n] - mov edx,dword ptr [dst] -loopu: - movups xmmword ptr[edx],xmm0 - movups xmmword ptr[edx+4*4],xmm0 - movups xmmword ptr[edx+8*4],xmm0 - movups xmmword ptr[edx+12*4],xmm0 - - add edx,16*4 - loop loopu - } - } - - dst += n<<4; -zero: - while(cnt--) *(dst++) = s; - } - else -#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__) - if(GetSIMDCapabilities()&simd_altivec && IsVectorAligned(dst)) - SetAltivec(dst,cnt,s); - else -#endif -#endif // FLEXT_USE_SIMD - { - int n = cnt>>3; - cnt -= n<<3; - while(n--) { - dst[0] = dst[1] = dst[2] = dst[3] = dst[4] = dst[5] = dst[6] = dst[7] = s; - dst += 8; - } - - while(cnt--) *(dst++) = s; - } -#endif -} - - -void flext::MulSamples(t_sample *dst,const t_sample *src,t_sample op,int cnt) -{ -#ifdef FLEXT_USE_IPP - if(sizeof(t_sample) == 4) { - ippsMulC_32f((const float *)src,(float)op,(float *)dst,cnt); - } - else if(sizeof(t_sample) == 8) { - ippsMulC_64f((const double *)src,(double)op,(double *)dst,cnt); - } - else - ERRINTERNAL(); -#else -#ifdef FLEXT_USE_SIMD -#ifdef _MSC_VER - if(GetSIMDCapabilities()&simd_sse) { - // single precision - __m128 a = _mm_load1_ps(&op); - - int n = cnt>>4; - if(!n) goto zero; - cnt -= n<<4; - - __asm { - mov eax,dword ptr [src] - prefetcht0 [eax+0] - prefetcht0 [eax+32] - - movss xmm0,xmmword ptr [op] - shufps xmm0,xmm0,0 - } - - if(VectorsAligned(src,dst)) { - // aligned version - __asm { - mov ecx,[n] - mov eax,dword ptr [src] - mov edx,dword ptr [dst] -loopa: - prefetcht0 [eax+64] - prefetcht0 [eax+96] - - movaps xmm1,xmmword ptr[eax] - mulps xmm1,xmm0 - movaps xmmword ptr[edx],xmm1 - - movaps xmm2,xmmword ptr[eax+4*4] - mulps xmm2,xmm0 - movaps xmmword ptr[edx+4*4],xmm2 - - movaps xmm3,xmmword ptr[eax+8*4] - mulps xmm3,xmm0 - movaps xmmword ptr[edx+8*4],xmm3 - - movaps xmm4,xmmword ptr[eax+12*4] - mulps xmm4,xmm0 - movaps xmmword ptr[edx+12*4],xmm4 - - add eax,16*4 - add edx,16*4 - loop loopa - } - } - else { - // unaligned version - __asm { - mov ecx,[n] - mov eax,dword ptr [src] - mov edx,dword ptr [dst] -loopu: - prefetcht0 [eax+64] - prefetcht0 [eax+96] - - movups xmm1,xmmword ptr[eax] - mulps xmm1,xmm0 - movups xmmword ptr[edx],xmm1 - - movups xmm2,xmmword ptr[eax+4*4] - mulps xmm2,xmm0 - movups xmmword ptr[edx+4*4],xmm2 - - movups xmm3,xmmword ptr[eax+8*4] - mulps xmm3,xmm0 - movups xmmword ptr[edx+8*4],xmm3 - - movups xmm4,xmmword ptr[eax+12*4] - mulps xmm4,xmm0 - movups xmmword ptr[edx+12*4],xmm4 - - add eax,16*4 - add edx,16*4 - loop loopu - } - } - - src += n<<4,dst += n<<4; -zero: - while(cnt--) *(dst++) = *(src++)*op; - } - else -#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VDSP__) - if(true) { - vsmul(src,1,&op,dst,1,cnt); - } - else -#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__) - if(GetSIMDCapabilities()&simd_altivec && VectorsAligned(src,dst)) - MulAltivec(dst,src,op,cnt); - else -#endif // _MSC_VER -#endif // FLEXT_USE_SIMD - { - int n = cnt>>3; - cnt -= n<<3; - - if(src == dst) { - while(n--) { - dst[0] *= op; dst[1] *= op; dst[2] *= op; dst[3] *= op; - dst[4] *= op; dst[5] *= op; dst[6] *= op; dst[7] *= op; - dst += 8; - } - while(cnt--) *(dst++) *= op; - } - else { - while(n--) { - dst[0] = src[0]*op; dst[1] = src[1]*op; - dst[2] = src[2]*op; dst[3] = src[3]*op; - dst[4] = src[4]*op; dst[5] = src[5]*op; - dst[6] = src[6]*op; dst[7] = src[7]*op; - src += 8,dst += 8; - } - while(cnt--) *(dst++) = *(src++)*op; - } - } -#endif -} - - -void flext::MulSamples(t_sample *dst,const t_sample *src,const t_sample *op,int cnt) -{ -#ifdef FLEXT_USE_IPP - if(sizeof(t_sample) == 4) { - ippsMul_32f((const float *)src,(const float *)op,(float *)dst,cnt); - } - else if(sizeof(t_sample) == 8) { - ippsMul_32f((const double *)src,(const double *)op,(double *)dst,cnt); - } - else - ERRINTERNAL(); -#else -#ifdef FLEXT_USE_SIMD -#ifdef _MSC_VER - if(GetSIMDCapabilities()&simd_sse) { - // single precision - int n = cnt>>4; - if(!n) goto zero; - cnt -= n<<4; - - __asm { - mov eax,[src] - mov ebx,[op] - prefetcht0 [eax+0] - prefetcht0 [ebx+0] - prefetcht0 [eax+32] - prefetcht0 [ebx+32] - } - - if(VectorsAligned(src,dst)) { - if(IsVectorAligned(op)) { - __asm { - mov ecx,[n] - mov eax,dword ptr [src] - mov edx,dword ptr [dst] - mov ebx,dword ptr [op] - loopaa: - prefetcht0 [eax+64] - prefetcht0 [ebx+64] - prefetcht0 [eax+96] - prefetcht0 [ebx+96] - - movaps xmm0,xmmword ptr[eax] - movaps xmm1,xmmword ptr[ebx] - mulps xmm0,xmm1 - movaps xmmword ptr[edx],xmm0 - - movaps xmm2,xmmword ptr[eax+4*4] - movaps xmm3,xmmword ptr[ebx+4*4] - mulps xmm2,xmm3 - movaps xmmword ptr[edx+4*4],xmm2 - - movaps xmm4,xmmword ptr[eax+8*4] - movaps xmm5,xmmword ptr[ebx+8*4] - mulps xmm4,xmm5 - movaps xmmword ptr[edx+8*4],xmm4 - - movaps xmm6,xmmword ptr[eax+12*4] - movaps xmm7,xmmword ptr[ebx+12*4] - mulps xmm6,xmm7 - movaps xmmword ptr[edx+12*4],xmm6 - - add eax,16*4 - add ebx,16*4 - add edx,16*4 - loop loopaa - } - } - else { - __asm { - mov ecx,[n] - mov eax,dword ptr [src] - mov edx,dword ptr [dst] - mov ebx,dword ptr [op] - loopau: - prefetcht0 [eax+64] - prefetcht0 [ebx+64] - prefetcht0 [eax+96] - prefetcht0 [ebx+96] - - movaps xmm0,xmmword ptr[eax] - movups xmm1,xmmword ptr[ebx] - mulps xmm0,xmm1 - movaps xmmword ptr[edx],xmm0 - - movaps xmm2,xmmword ptr[eax+4*4] - movups xmm3,xmmword ptr[ebx+4*4] - mulps xmm2,xmm3 - movaps xmmword ptr[edx+4*4],xmm2 - - movaps xmm4,xmmword ptr[eax+8*4] - movups xmm5,xmmword ptr[ebx+8*4] - mulps xmm4,xmm5 - movaps xmmword ptr[edx+8*4],xmm4 - - movaps xmm6,xmmword ptr[eax+12*4] - movups xmm7,xmmword ptr[ebx+12*4] - mulps xmm6,xmm7 - movaps xmmword ptr[edx+12*4],xmm6 - - add eax,16*4 - add ebx,16*4 - add edx,16*4 - loop loopau - } - } - } - else { - if(IsVectorAligned(op)) { - __asm { - mov ecx,[n] - mov eax,dword ptr [src] - mov edx,dword ptr [dst] - mov ebx,dword ptr [op] - loopua: - prefetcht0 [eax+64] - prefetcht0 [ebx+64] - prefetcht0 [eax+96] - prefetcht0 [ebx+96] - - movups xmm0,xmmword ptr[eax] - movaps xmm1,xmmword ptr[ebx] - mulps xmm0,xmm1 - movups xmmword ptr[edx],xmm0 - - movups xmm2,xmmword ptr[eax+4*4] - movaps xmm3,xmmword ptr[ebx+4*4] - mulps xmm2,xmm3 - movups xmmword ptr[edx+4*4],xmm2 - - movups xmm4,xmmword ptr[eax+8*4] - movaps xmm5,xmmword ptr[ebx+8*4] - mulps xmm4,xmm5 - movups xmmword ptr[edx+8*4],xmm4 - - movups xmm6,xmmword ptr[eax+12*4] - movaps xmm7,xmmword ptr[ebx+12*4] - mulps xmm6,xmm7 - movups xmmword ptr[edx+12*4],xmm6 - - add eax,16*4 - add ebx,16*4 - add edx,16*4 - loop loopua - } - } - else { - __asm { - mov ecx,[n] - mov eax,dword ptr [src] - mov edx,dword ptr [dst] - mov ebx,dword ptr [op] -loopuu: - prefetcht0 [eax+64] - prefetcht0 [ebx+64] - prefetcht0 [eax+96] - prefetcht0 [ebx+96] - - movups xmm0,xmmword ptr[eax] - movups xmm1,xmmword ptr[ebx] - mulps xmm0,xmm1 - movups xmmword ptr[edx],xmm0 - - movups xmm2,xmmword ptr[eax+4*4] - movups xmm3,xmmword ptr[ebx+4*4] - mulps xmm2,xmm3 - movups xmmword ptr[edx+4*4],xmm2 - - movups xmm4,xmmword ptr[eax+8*4] - movups xmm5,xmmword ptr[ebx+8*4] - mulps xmm4,xmm5 - movups xmmword ptr[edx+8*4],xmm4 - - movups xmm6,xmmword ptr[eax+12*4] - movups xmm7,xmmword ptr[ebx+12*4] - mulps xmm6,xmm7 - movups xmmword ptr[edx+12*4],xmm6 - - add eax,16*4 - add ebx,16*4 - add edx,16*4 - loop loopuu - } - } - } - - src += n<<4,dst += n<<4,op += n<<4; -zero: - while(cnt--) *(dst++) = *(src++) * *(op++); - } - else -#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VDSP__) - if(true) { - vmul(src,1,op,1,dst,1,cnt); - } - else -#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__) - if(GetSIMDCapabilities()&simd_altivec && VectorsAligned(src,op,dst)) - MulAltivec(dst,src,op,cnt); - else -#endif // _MSC_VER -#endif // FLEXT_USE_SIMD - { - int n = cnt>>3; - cnt -= n<<3; - - if(src == dst) { - while(n--) { - dst[0] *= op[0]; dst[1] *= op[1]; - dst[2] *= op[2]; dst[3] *= op[3]; - dst[4] *= op[4]; dst[5] *= op[5]; - dst[6] *= op[6]; dst[7] *= op[7]; - dst += 8,op += 8; - } - while(cnt--) *(dst++) *= *(op++); - } - else { - while(n--) { - dst[0] = src[0]*op[0]; dst[1] = src[1]*op[1]; - dst[2] = src[2]*op[2]; dst[3] = src[3]*op[3]; - dst[4] = src[4]*op[4]; dst[5] = src[5]*op[5]; - dst[6] = src[6]*op[6]; dst[7] = src[7]*op[7]; - src += 8,dst += 8,op += 8; - } - while(cnt--) *(dst++) = *(src++) * *(op++); - } - } -#endif -} - - -void flext::AddSamples(t_sample *dst,const t_sample *src,t_sample op,int cnt) -{ -#ifdef FLEXT_USE_IPP - if(sizeof(t_sample) == 4) { - ippsAddC_32f((const float *)src,(float)op,(float *)dst,cnt); - } - else if(sizeof(t_sample) == 8) { - ippsAddC_64f_I((const double *)src,(double)op,(double *)dst,cnt); - } - else - ERRINTERNAL(); -#else -#ifdef FLEXT_USE_SIMD -#ifdef _MSC_VER - if(GetSIMDCapabilities()&simd_sse) { - // single precision - int n = cnt>>4; - if(!n) goto zero; - cnt -= n<<4; - - __asm { - mov eax,[src] - prefetcht0 [eax+0] - prefetcht0 [eax+32] - - movss xmm0,xmmword ptr [op] - shufps xmm0,xmm0,0 - } - - if(VectorsAligned(src,dst)) { - // aligned version - __asm { - mov ecx,[n] - mov eax,dword ptr [src] - mov edx,dword ptr [dst] -loopa: - prefetcht0 [eax+64] - prefetcht0 [eax+96] - - movaps xmm1,xmmword ptr[eax] - addps xmm1,xmm0 - movaps xmmword ptr[edx],xmm1 - - movaps xmm2,xmmword ptr[eax+4*4] - addps xmm2,xmm0 - movaps xmmword ptr[edx+4*4],xmm2 - - movaps xmm3,xmmword ptr[eax+8*4] - addps xmm3,xmm0 - movaps xmmword ptr[edx+8*4],xmm3 - - movaps xmm4,xmmword ptr[eax+12*4] - addps xmm4,xmm0 - movaps xmmword ptr[edx+12*4],xmm4 - - add eax,16*4 - add edx,16*4 - loop loopa - } - } - else { - // unaligned version - __asm { - mov ecx,[n] - mov eax,dword ptr [src] - mov edx,dword ptr [dst] -loopu: - prefetcht0 [eax+64] - prefetcht0 [eax+96] - - movups xmm1,xmmword ptr[eax] - addps xmm1,xmm0 - movups xmmword ptr[edx],xmm1 - - movups xmm2,xmmword ptr[eax+4*4] - addps xmm2,xmm0 - movups xmmword ptr[edx+4*4],xmm2 - - movups xmm3,xmmword ptr[eax+8*4] - addps xmm3,xmm0 - movups xmmword ptr[edx+8*4],xmm3 - - movups xmm4,xmmword ptr[eax+12*4] - addps xmm4,xmm0 - movups xmmword ptr[edx+12*4],xmm4 - - add eax,16*4 - add edx,16*4 - loop loopu - } - } - src += n<<4,dst += n<<4,op += n<<4; -zero: - while(cnt--) *(dst++) = *(src++)+op; - } - else -#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__) - if(GetSIMDCapabilities()&simd_altivec && VectorsAligned(src,dst)) - AddAltivec(dst,src,op,cnt); - else -#endif // _MSC_VER -#endif // FLEXT_USE_SIMD - { - int n = cnt>>3; - cnt -= n<<3; - - if(src == dst) { - while(n--) { - dst[0] += op; dst[1] += op; dst[2] += op; dst[3] += op; - dst[4] += op; dst[5] += op; dst[6] += op; dst[7] += op; - dst += 8; - } - while(cnt--) *(dst++) += op; - } - else { - while(n--) { - dst[0] = src[0]+op; dst[1] = src[1]+op; - dst[2] = src[2]+op; dst[3] = src[3]+op; - dst[4] = src[4]+op; dst[5] = src[5]+op; - dst[6] = src[6]+op; dst[7] = src[7]+op; - src += 8,dst += 8; - } - while(cnt--) *(dst++) = *(src++)+op; - } - } -#endif -} - - -void flext::AddSamples(t_sample *dst,const t_sample *src,const t_sample *op,int cnt) -{ -#ifdef FLEXT_USE_IPP - if(sizeof(t_sample) == 4) { - ippsAdd_32f((const float *)src,(const float *)op,(float *)dst,cnt); - } - else if(sizeof(t_sample) == 8) { - ippsAdd_64f((const double *)src,(const double *)op,(double *)dst,cnt); - } - else - ERRINTERNAL(); -#else -#ifdef FLEXT_USE_SIMD -#ifdef _MSC_VER - if(GetSIMDCapabilities()&simd_sse) { - // Prefetch cache - __asm { - mov eax,dword ptr [src] - mov ebx,dword ptr [op] - prefetcht0 [eax] - prefetcht0 [ebx] - prefetcht0 [eax+32] - prefetcht0 [ebx+32] - } - - // single precision - int n = cnt>>4; - if(!n) goto zero; - cnt -= n<<4; - - if(VectorsAligned(src,dst)) { - if(IsVectorAligned(op)) { - __asm { - mov ecx,dword ptr [n] - mov eax,dword ptr [src] - mov edx,dword ptr [dst] - mov ebx,dword ptr [op] - loopaa: - prefetcht0 [eax+64] - prefetcht0 [ebx+64] - prefetcht0 [eax+96] - prefetcht0 [ebx+96] - - movaps xmm0,xmmword ptr[eax] - movaps xmm1,xmmword ptr[ebx] - addps xmm0,xmm1 - movaps xmmword ptr[edx],xmm0 - - movaps xmm2,xmmword ptr[eax+4*4] - movaps xmm3,xmmword ptr[ebx+4*4] - addps xmm2,xmm3 - movaps xmmword ptr[edx+4*4],xmm2 - - movaps xmm4,xmmword ptr[eax+8*4] - movaps xmm5,xmmword ptr[ebx+8*4] - addps xmm4,xmm5 - movaps xmmword ptr[edx+8*4],xmm4 - - movaps xmm6,xmmword ptr[eax+12*4] - movaps xmm7,xmmword ptr[ebx+12*4] - addps xmm6,xmm7 - movaps xmmword ptr[edx+12*4],xmm6 - - add eax,16*4 - add ebx,16*4 - add edx,16*4 - loop loopaa - } - } - else { - __asm { - mov ecx,dword ptr [n] - mov eax,dword ptr [src] - mov edx,dword ptr [dst] - mov ebx,dword ptr [op] - loopau: - prefetcht0 [eax+64] - prefetcht0 [ebx+64] - prefetcht0 [eax+96] - prefetcht0 [ebx+96] - - movaps xmm0,xmmword ptr[eax] - movups xmm1,xmmword ptr[ebx] - addps xmm0,xmm1 - movaps xmmword ptr[edx],xmm0 - - movaps xmm2,xmmword ptr[eax+4*4] - movups xmm3,xmmword ptr[ebx+4*4] - addps xmm2,xmm3 - movaps xmmword ptr[edx+4*4],xmm2 - - movaps xmm4,xmmword ptr[eax+8*4] - movups xmm5,xmmword ptr[ebx+8*4] - addps xmm4,xmm5 - movaps xmmword ptr[edx+8*4],xmm4 - - movaps xmm6,xmmword ptr[eax+12*4] - movups xmm7,xmmword ptr[ebx+12*4] - addps xmm6,xmm7 - movaps xmmword ptr[edx+12*4],xmm6 - - add eax,16*4 - add ebx,16*4 - add edx,16*4 - loop loopau - } - } - } - else { - if(IsVectorAligned(op)) { - __asm { - mov ecx,dword ptr [n] - mov eax,dword ptr [src] - mov edx,dword ptr [dst] - mov ebx,dword ptr [op] - loopua: - prefetcht0 [eax+64] - prefetcht0 [ebx+64] - prefetcht0 [eax+96] - prefetcht0 [ebx+96] - - movups xmm0,xmmword ptr[eax] - movaps xmm1,xmmword ptr[ebx] - addps xmm0,xmm1 - movups xmmword ptr[edx],xmm0 - - movups xmm2,xmmword ptr[eax+4*4] - movaps xmm3,xmmword ptr[ebx+4*4] - addps xmm2,xmm3 - movups xmmword ptr[edx+4*4],xmm2 - - movups xmm4,xmmword ptr[eax+8*4] - movaps xmm5,xmmword ptr[ebx+8*4] - addps xmm4,xmm5 - movups xmmword ptr[edx+8*4],xmm4 - - movups xmm6,xmmword ptr[eax+12*4] - movaps xmm7,xmmword ptr[ebx+12*4] - addps xmm6,xmm7 - movups xmmword ptr[edx+12*4],xmm6 - - add eax,16*4 - add ebx,16*4 - add edx,16*4 - loop loopua - } - } - else { - __asm { - mov ecx,dword ptr [n] - mov eax,dword ptr [src] - mov edx,dword ptr [dst] - mov ebx,dword ptr [op] - loopuu: - prefetcht0 [eax+64] - prefetcht0 [ebx+64] - prefetcht0 [eax+96] - prefetcht0 [ebx+96] - - movups xmm0,xmmword ptr[eax] - movups xmm1,xmmword ptr[ebx] - addps xmm0,xmm1 - movups xmmword ptr[edx],xmm0 - - movups xmm2,xmmword ptr[eax+4*4] - movups xmm3,xmmword ptr[ebx+4*4] - addps xmm2,xmm3 - movups xmmword ptr[edx+4*4],xmm2 - - movups xmm4,xmmword ptr[eax+8*4] - movups xmm5,xmmword ptr[ebx+8*4] - addps xmm4,xmm5 - movups xmmword ptr[edx+8*4],xmm4 - - movups xmm6,xmmword ptr[eax+12*4] - movups xmm7,xmmword ptr[ebx+12*4] - addps xmm6,xmm7 - movups xmmword ptr[edx+12*4],xmm6 - - add eax,16*4 - add ebx,16*4 - add edx,16*4 - loop loopuu - } - } - } - - src += n<<4,dst += n<<4,op += n<<4; -zero: - while(cnt--) *(dst++) = *(src++) + *(op++); - } - else -#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VDSP__) - if(true) { - vadd(src,1,op,1,dst,1,cnt); - } - else -#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__) - if(GetSIMDCapabilities()&simd_altivec && VectorsAligned(src,op,dst)) - AddAltivec(dst,src,op,cnt); - else -#endif // _MSC_VER -#endif // FLEXT_USE_SIMD - { - int n = cnt>>3; - cnt -= n<<3; - - if(dst == src) { - while(n--) { - dst[0] += op[0]; dst[1] += op[1]; - dst[2] += op[2]; dst[3] += op[3]; - dst[4] += op[4]; dst[5] += op[5]; - dst[6] += op[6]; dst[7] += op[7]; - dst += 8,op += 8; - } - while(cnt--) *(dst++) += *(op++); - } - else { - while(n--) { - dst[0] = src[0]+op[0]; dst[1] = src[1]+op[1]; - dst[2] = src[2]+op[2]; dst[3] = src[3]+op[3]; - dst[4] = src[4]+op[4]; dst[5] = src[5]+op[5]; - dst[6] = src[6]+op[6]; dst[7] = src[7]+op[7]; - src += 8,dst += 8,op += 8; - } - while(cnt--) *(dst++) = *(src++) + *(op++); - } - } -#endif -} - - -void flext::ScaleSamples(t_sample *dst,const t_sample *src,t_sample opmul,t_sample opadd,int cnt) -{ -#ifdef FLEXT_USE_IPP - if(sizeof(t_sample) == 4) { - ippsMulC_32f((const float *)src,(float)opmul,(float *)dst,cnt); - ippsAddC_32f_I((float)opadd,(float *)dst,cnt); - } - else if(sizeof(t_sample) == 8) { - ippsMulC_64f((const double *)src,(double)opmul,(double *)dst,cnt); - ippsAddC_64f_I((double)opadd,(double *)dst,cnt); - } - else - ERRINTERNAL(); -#else -#ifdef FLEXT_USE_SIMD -#ifdef _MSC_VER - if(GetSIMDCapabilities()&simd_sse) { - // single precision - int n = cnt>>4; - if(!n) goto zero; - cnt -= n<<4; - - __asm { - mov eax,dword ptr [src] - prefetcht0 [eax+0] - prefetcht0 [eax+32] - - movss xmm0,xmmword ptr [opadd] - shufps xmm0,xmm0,0 - movss xmm1,xmmword ptr [opmul] - shufps xmm1,xmm1,0 - } - - if(VectorsAligned(src,dst)) { - // aligned version - __asm { - mov ecx,dword ptr [n] - mov eax,dword ptr [src] - mov edx,dword ptr [dst] -loopa: - prefetcht0 [eax+64] - prefetcht0 [eax+96] - - movaps xmm2,xmmword ptr[eax] - mulps xmm2,xmm1 - addps xmm2,xmm0 - movaps xmmword ptr[edx],xmm2 - - movaps xmm3,xmmword ptr[eax+4*4] - mulps xmm3,xmm1 - addps xmm3,xmm0 - movaps xmmword ptr[edx+4*4],xmm3 - - movaps xmm4,xmmword ptr[eax+8*4] - mulps xmm4,xmm1 - addps xmm4,xmm0 - movaps xmmword ptr[edx+8*4],xmm4 - - movaps xmm5,xmmword ptr[eax+12*4] - mulps xmm5,xmm1 - addps xmm5,xmm0 - movaps xmmword ptr[edx+12*4],xmm5 - - add eax,16*4 - add edx,16*4 - loop loopa - } - } - else { - // unaligned version - __asm { - mov ecx,dword ptr [n] - mov eax,dword ptr [src] - mov edx,dword ptr [dst] -loopu: - prefetcht0 [eax+64] - prefetcht0 [eax+96] - - movups xmm2,xmmword ptr[eax] - mulps xmm2,xmm1 - addps xmm2,xmm0 - movups xmmword ptr[edx],xmm2 - - movups xmm3,xmmword ptr[eax+4*4] - mulps xmm3,xmm1 - addps xmm3,xmm0 - movups xmmword ptr[edx+4*4],xmm3 - - movups xmm4,xmmword ptr[eax+8*4] - mulps xmm4,xmm1 - addps xmm4,xmm0 - movups xmmword ptr[edx+8*4],xmm4 - - movups xmm5,xmmword ptr[eax+12*4] - mulps xmm5,xmm1 - addps xmm5,xmm0 - movups xmmword ptr[edx+12*4],xmm5 - - add eax,16*4 - add edx,16*4 - loop loopu - } - } - - src += n<<4,dst += n<<4; -zero: - while(cnt--) *(dst++) = *(src++)*opmul+opadd; - } - else -#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__) - if(GetSIMDCapabilities()&simd_altivec && VectorsAligned(src,dst)) - ScaleAltivec(dst,src,opmul,opadd,cnt); - else -#endif // _MSC_VER -#endif // FLEXT_USE_SIMD - { - int n = cnt>>3; - cnt -= n<<3; - while(n--) { - dst[0] = src[0]*opmul+opadd; dst[1] = src[1]*opmul+opadd; - dst[2] = src[2]*opmul+opadd; dst[3] = src[3]*opmul+opadd; - dst[4] = src[4]*opmul+opadd; dst[5] = src[5]*opmul+opadd; - dst[6] = src[6]*opmul+opadd; dst[7] = src[7]*opmul+opadd; - src += 8,dst += 8; - } - while(cnt--) *(dst++) = *(src++)*opmul+opadd; - } -#endif -} - -void flext::ScaleSamples(t_sample *dst,const t_sample *src,t_sample opmul,const t_sample *opadd,int cnt) -{ -#ifdef FLEXT_USE_IPP - if(sizeof(t_sample) == 4) { - ippsMulC_32f((const float *)src,(float)opmul,(float *)dst,cnt); - ippsAdd_32f_I((float *)opadd,(float *)dst,cnt); - } - else if(sizeof(t_sample) == 8) { - ippsMulC_64f((const double *)src,(double)opmul,(double *)dst,cnt); - ippsAdd_64f_I((double *)opadd,(double *)dst,cnt); - } - else - ERRINTERNAL(); -#else -#ifdef FLEXT_USE_SIMD -#ifdef _MSC_VER - if(GetSIMDCapabilities()&simd_sse) { - // single precision - int n = cnt>>4; - if(!n) goto zero; - cnt -= n<<4; - - __asm { - mov eax,dword ptr [src] - prefetcht0 [eax+0] - prefetcht0 [eax+32] - - movss xmm0,xmmword ptr [opmul] - shufps xmm0,xmm0,0 - } - - if(VectorsAligned(src,dst,opadd)) { - // aligned version - __asm { - mov ecx,dword ptr [n] - mov eax,dword ptr [src] - mov edx,dword ptr [dst] - mov ebx,dword ptr [opadd] -loopa: - prefetcht0 [eax+64] - prefetcht0 [ebx+64] - prefetcht0 [eax+96] - prefetcht0 [ebx+96] - - movaps xmm2,xmmword ptr[eax] - movaps xmm1,xmmword ptr[ebx] - mulps xmm2,xmm0 - addps xmm2,xmm1 - movaps xmmword ptr[edx],xmm2 - - movaps xmm3,xmmword ptr[eax+4*4] - movaps xmm1,xmmword ptr[ebx+4*4] - mulps xmm3,xmm0 - addps xmm3,xmm1 - movaps xmmword ptr[edx+4*4],xmm3 - - movaps xmm4,xmmword ptr[eax+8*4] - movaps xmm1,xmmword ptr[ebx+8*4] - mulps xmm4,xmm0 - addps xmm4,xmm1 - movaps xmmword ptr[edx+8*4],xmm4 - - movaps xmm5,xmmword ptr[eax+12*4] - movaps xmm1,xmmword ptr[ebx+12*4] - mulps xmm5,xmm0 - addps xmm5,xmm1 - movaps xmmword ptr[edx+12*4],xmm5 - - add eax,16*4 - add edx,16*4 - add ebx,16*4 - loop loopa - } - } - else { - // unaligned version - __asm { - mov ecx,dword ptr [n] - mov eax,dword ptr [src] - mov edx,dword ptr [dst] - mov ebx,dword ptr [opadd] -loopu: - prefetcht0 [eax+64] - prefetcht0 [ebx+64] - prefetcht0 [eax+96] - prefetcht0 [ebx+96] - - movups xmm2,xmmword ptr[eax] - movups xmm1,xmmword ptr[ebx] - mulps xmm2,xmm0 - addps xmm2,xmm1 - movups xmmword ptr[edx],xmm2 - - movups xmm3,xmmword ptr[eax+4*4] - movups xmm1,xmmword ptr[ebx+4*4] - mulps xmm3,xmm0 - addps xmm3,xmm1 - movups xmmword ptr[edx+4*4],xmm3 - - movups xmm4,xmmword ptr[eax+8*4] - movups xmm1,xmmword ptr[ebx+8*4] - mulps xmm4,xmm0 - addps xmm4,xmm1 - movups xmmword ptr[edx+8*4],xmm4 - - movups xmm5,xmmword ptr[eax+12*4] - movups xmm1,xmmword ptr[ebx+12*4] - mulps xmm5,xmm0 - addps xmm5,xmm1 - movups xmmword ptr[edx+12*4],xmm5 - - add eax,16*4 - add edx,16*4 - add ebx,16*4 - loop loopu - } - } - - src += n<<4,dst += n<<4,opadd += n<<4; -zero: - while(cnt--) *(dst++) = *(src++) * opmul + *(opadd++); - } - else -#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__) - if(GetSIMDCapabilities()&simd_altivec && VectorsAligned(src,dst,opadd)) - ScaleAltivec(dst,src,opmul,opadd,cnt); - else -#endif // _MSC_VER -#endif // FLEXT_USE_SIMD - { - int n = cnt>>3; - cnt -= n<<3; - if(dst == opadd) { - while(n--) { - dst[0] += src[0]*opmul; dst[1] += src[1]*opmul; - dst[2] += src[2]*opmul; dst[3] += src[3]*opmul; - dst[4] += src[4]*opmul; dst[5] += src[5]*opmul; - dst[6] += src[6]*opmul; dst[7] += src[7]*opmul; - src += 8,dst += 8; - } - while(cnt--) *(dst++) += *(src++)*opmul; - } - else { - while(n--) { - dst[0] = src[0]*opmul+opadd[0]; dst[1] = src[1]*opmul+opadd[1]; - dst[2] = src[2]*opmul+opadd[2]; dst[3] = src[3]*opmul+opadd[3]; - dst[4] = src[4]*opmul+opadd[4]; dst[5] = src[5]*opmul+opadd[5]; - dst[6] = src[6]*opmul+opadd[6]; dst[7] = src[7]*opmul+opadd[7]; - src += 8,dst += 8,opadd += 8; - } - while(cnt--) *(dst++) = *(src++)*opmul+*(opadd++); - } - } -#endif -} - -void flext::ScaleSamples(t_sample *dst,const t_sample *src,const t_sample *opmul,const t_sample *opadd,int cnt) -{ -#ifdef FLEXT_USE_IPP - if(sizeof(t_sample) == 4) { - ippsMul_32f((const float *)src,(const float *)opmul,(float *)dst,cnt); - ippsAdd_32f_I((const float *)opadd,(float *)dst,cnt); - } - else if(sizeof(t_sample) == 8) { - ippsMul_64f((const double *)src,(const double *)opmul,(double *)dst,cnt); - ippsAdd_64f_I((const double *)opadd,(double *)dst,cnt); - } - else - ERRINTERNAL(); -#else -#ifdef FLEXT_USE_SIMD -#ifdef _MSC_VER - if(GetSIMDCapabilities()&simd_sse) { - // single precision - int n = cnt>>4; - if(!n) goto zero; - cnt -= n<<4; - - __asm { - mov eax,dword ptr [src] - prefetcht0 [eax+0] - prefetcht0 [eax+32] - } - - if(VectorsAligned(src,dst,opmul,opadd)) { - // aligned version - __asm { - mov ecx,dword ptr [n] - mov eax,dword ptr [src] - mov edx,dword ptr [dst] - mov esi,dword ptr [opmul] - mov ebx,dword ptr [opadd] -loopa: - prefetcht0 [eax+64] - prefetcht0 [ebx+64] - prefetcht0 [esi+64] - prefetcht0 [eax+96] - prefetcht0 [ebx+96] - prefetcht0 [esi+96] - - movaps xmm2,xmmword ptr[eax] - movaps xmm0,xmmword ptr[esi] - movaps xmm1,xmmword ptr[ebx] - mulps xmm2,xmm0 - addps xmm2,xmm1 - movaps xmmword ptr[edx],xmm2 - - movaps xmm3,xmmword ptr[eax+4*4] - movaps xmm0,xmmword ptr[esi+4*4] - movaps xmm1,xmmword ptr[ebx+4*4] - mulps xmm3,xmm0 - addps xmm3,xmm1 - movaps xmmword ptr[edx+4*4],xmm3 - - movaps xmm4,xmmword ptr[eax+8*4] - movaps xmm0,xmmword ptr[esi+8*4] - movaps xmm1,xmmword ptr[ebx+8*4] - mulps xmm4,xmm0 - addps xmm4,xmm1 - movaps xmmword ptr[edx+8*4],xmm4 - - movaps xmm5,xmmword ptr[eax+12*4] - movaps xmm0,xmmword ptr[esi+12*4] - movaps xmm1,xmmword ptr[ebx+12*4] - mulps xmm5,xmm0 - addps xmm5,xmm1 - movaps xmmword ptr[edx+12*4],xmm5 - - add eax,16*4 - add edx,16*4 - add ebx,16*4 - add esi,16*4 - loop loopa - } - } - else { - // unaligned version - __asm { - mov ecx,dword ptr [n] - mov eax,dword ptr [src] - mov edx,dword ptr [dst] - mov esi,dword ptr [opmul] - mov ebx,dword ptr [opadd] -loopu: - prefetcht0 [eax+64] - prefetcht0 [ebx+64] - prefetcht0 [esi+64] - prefetcht0 [eax+96] - prefetcht0 [ebx+96] - prefetcht0 [esi+96] - - movups xmm2,xmmword ptr[eax] - movups xmm0,xmmword ptr[esi] - movups xmm1,xmmword ptr[ebx] - mulps xmm2,xmm0 - addps xmm2,xmm1 - movups xmmword ptr[edx],xmm2 - - movups xmm3,xmmword ptr[eax+4*4] - movups xmm0,xmmword ptr[esi+4*4] - movups xmm1,xmmword ptr[ebx+4*4] - mulps xmm3,xmm0 - addps xmm3,xmm1 - movups xmmword ptr[edx+4*4],xmm3 - - movups xmm4,xmmword ptr[eax+8*4] - movups xmm0,xmmword ptr[esi+8*4] - movups xmm1,xmmword ptr[ebx+8*4] - mulps xmm4,xmm0 - addps xmm4,xmm1 - movups xmmword ptr[edx+8*4],xmm4 - - movups xmm5,xmmword ptr[eax+12*4] - movups xmm0,xmmword ptr[esi+12*4] - movups xmm1,xmmword ptr[ebx+12*4] - mulps xmm5,xmm0 - addps xmm5,xmm1 - movups xmmword ptr[edx+12*4],xmm5 - - add eax,16*4 - add edx,16*4 - add ebx,16*4 - add esi,16*4 - loop loopu - } - } - src += n<<4,dst += n<<4,opmul += n<<4,opadd += n<<4; -zero: - while(cnt--) *(dst++) = *(src++) * *(opmul++) + *(opadd++); - } - else -#elif FLEXT_CPU == FLEXT_CPU_PPC && defined(__VEC__) - if(GetSIMDCapabilities()&simd_altivec && VectorsAligned(src,dst,opmul,opadd)) - ScaleAltivec(dst,src,opmul,opadd,cnt); - else -#endif // _MSC_VER -#endif // FLEXT_USE_SIMD - { - int n = cnt>>3; - cnt -= n<<3; - if(dst == opadd) { - while(n--) { - dst[0] += src[0]*opmul[0]; dst[1] += src[1]*opmul[1]; - dst[2] += src[2]*opmul[2]; dst[3] += src[3]*opmul[3]; - dst[4] += src[4]*opmul[4]; dst[5] += src[5]*opmul[5]; - dst[6] += src[6]*opmul[6]; dst[7] += src[7]*opmul[7]; - src += 8,dst += 8,opmul += 8; - } - while(cnt--) *(dst++) += *(src++) * *(opmul++); - } - else { - while(n--) { - dst[0] = src[0]*opmul[0]+opadd[0]; dst[1] = src[1]*opmul[1]+opadd[1]; - dst[2] = src[2]*opmul[2]+opadd[2]; dst[3] = src[3]*opmul[3]+opadd[3]; - dst[4] = src[4]*opmul[4]+opadd[4]; dst[5] = src[5]*opmul[5]+opadd[5]; - dst[6] = src[6]*opmul[6]+opadd[6]; dst[7] = src[7]*opmul[7]+opadd[7]; - src += 8,dst += 8,opmul += 8,opadd += 8; - } - while(cnt--) *(dst++) = *(src++)* *(opmul++) + *(opadd++); - } - } -#endif -} diff --git a/externals/grill/flext/source/flsndobj.cpp b/externals/grill/flext/source/flsndobj.cpp deleted file mode 100644 index b884ce73..00000000 --- a/externals/grill/flext/source/flsndobj.cpp +++ /dev/null @@ -1,132 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#include "flext.h" -#include "flsndobj.h" - - -flext_sndobj::flext_sndobj(): - inobjs(0),outobjs(0), - inobj(NULL),tmpobj(NULL),outobj(NULL), - smprt(0),blsz(0) -{} - -bool flext_sndobj::Init() -{ - bool ret = flext_dsp::Init(); - inobjs = CntInSig(); - outobjs = CntOutSig(); - return ret; -} - -void flext_sndobj::Exit() -{ - ClearObjs(); - flext_dsp::Exit(); -} - -void flext_sndobj::ClearObjs() -{ - FreeObjs(); - - if(inobj) { - for(int i = 0; i < inobjs; ++i) delete inobj[i]; - delete[] inobj; inobj = NULL; - } - if(tmpobj) { - for(int i = 0; i < inobjs; ++i) delete tmpobj[i]; - delete[] tmpobj; tmpobj = NULL; - } - if(outobj) { - for(int i = 0; i < outobjs; ++i) delete outobj[i]; - delete[] outobj; outobj = NULL; - } -} - -bool flext_sndobj::CbDsp() -{ - // called on every rebuild of the dsp chain - - int i; - if(Blocksize() != blsz || Samplerate() != smprt) { - // block size or sample rate has changed... rebuild all objects - - ClearObjs(); - - blsz = Blocksize(); - smprt = Samplerate(); - - // set up sndobjs for inlets and outlets - if(inobjs) { - inobj = new Inlet *[inobjs]; - tmpobj = new SndObj *[inobjs]; - for(i = 0; i < inobjs; ++i) { - inobj[i] = new Inlet(InSig(i),blsz,smprt); - tmpobj[i] = new SndObj(NULL,blsz,smprt); - } - } - if(outobjs) { - outobj = new Outlet *[outobjs]; - for(i = 0; i < outobjs; ++i) outobj[i] = new Outlet(OutSig(i),blsz,smprt); - } - - if(!NewObjs()) ClearObjs(); - } - else { - // assign changed input/output vectors - - for(i = 0; i < inobjs; ++i) inobj[i]->SetBuf(InSig(i)); - for(i = 0; i < outobjs; ++i) outobj[i]->SetBuf(OutSig(i)); - } - return true; -} - -void flext_sndobj::CbSignal() -{ - for(int i = 0; i < inobjs; ++i) *tmpobj[i] << *inobj[i]; - ProcessObjs(); -} - - -flext_sndobj::Inlet::Inlet(const t_sample *b,int vecsz,float sr): - SndIO(1,sizeof(t_sample)*8,NULL,vecsz,sr),buf(b) -{} - -short flext_sndobj::Inlet::Read() -{ - if(!m_error) { - for(m_vecpos = 0; m_vecpos < m_samples; m_vecpos++) - m_output[m_vecpos] = buf[m_vecpos]; - return 1; - } - else return 0; -} - -short flext_sndobj::Inlet::Write() { return 0; } - - -flext_sndobj::Outlet::Outlet(t_sample *b,int vecsz,float sr): - SndIO(1,sizeof(t_sample)*8,NULL,vecsz,sr),buf(b) -{} - -short flext_sndobj::Outlet::Read() { return 0; } - -short flext_sndobj::Outlet::Write() -{ - if(!m_error) { - if(m_IOobjs[0]) - for(m_vecpos = 0; m_vecpos < m_samples; m_vecpos++) - buf[m_vecpos] = m_IOobjs[0]->Output(m_vecpos); - return 1; - } - else return 0; -} - - diff --git a/externals/grill/flext/source/flsndobj.h b/externals/grill/flext/source/flsndobj.h deleted file mode 100644 index c62b87d5..00000000 --- a/externals/grill/flext/source/flsndobj.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2007 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#ifndef __FLSNDOBJ_H -#define __FLSNDOBJ_H - -#include "flext.h" - -// PI is defined in the Max/MSP SDK, but clashes with SndObj.h -#ifdef PI -#undef PI -#endif - -#ifndef FLEXT_THREADS -#define NOPTHREAD -#endif -#include -#include -#undef NOPTHREAD - - -class FLEXT_SHARE flext_sndobj: - public flext_dsp -{ - FLEXT_HEADER(flext_sndobj,flext_dsp) - -public: - flext_sndobj(); - - // these have to be overridden in child classes - virtual bool NewObjs() { return true; } - virtual void FreeObjs() {} - virtual void ProcessObjs() {} - - // inputs and outputs - SndObj &InObj(int i) { return *tmpobj[i]; } - SndIO &OutObj(int i) { return *outobj[i]; } - -protected: - virtual bool Init(); - virtual void Exit(); - -private: - //! SndObj for reading from inlet buffer - class Inlet: - public SndIO - { - public: - Inlet(const t_sample *b,int vecsz,float sr); - virtual short Read(); - virtual short Write(); - - void SetBuf(const t_sample *b) { buf = b; } - - private: - const t_sample *buf; - }; - - //! SndObj for writing to outlet buffer - class Outlet: - public SndIO - { - public: - Outlet(t_sample *b,int vecsz,float sr); - virtual short Read(); - virtual short Write(); - - void SetBuf(t_sample *b) { buf = b; } - - private: - t_sample *buf; - }; - - virtual bool CbDsp(); - virtual void CbSignal(); - - void ClearObjs(); - - int inobjs,outobjs; - SndObj **tmpobj; - Inlet **inobj; - Outlet **outobj; - - float smprt; - int blsz; -}; - -#endif diff --git a/externals/grill/flext/source/flstdc.h b/externals/grill/flext/source/flstdc.h deleted file mode 100644 index 13ac271c..00000000 --- a/externals/grill/flext/source/flstdc.h +++ /dev/null @@ -1,311 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flstdc.h - \brief Definitions to unite Max/MSP and PD notions - - This file contains a few definitions to unite a few of the notions that - once drifted apart in Max and PD. It is not elegant but helps. -*/ - -#ifndef __FLEXT_STDC_H -#define __FLEXT_STDC_H - -#if defined(_MSC_VER) && (_MSC_VER < 0x1300) -/* - include math.h here - when included with PD or Max/MSP headers, - C linkage would be used which disturbs MSVC6 -*/ -#include -#endif - -#ifdef _MSC_VER -#include -#else -#include -#endif - -// PD stuff - -#if FLEXT_SYS == FLEXT_SYS_PD - -/* PD definitions start here */ - -#ifdef _MSC_VER - #pragma warning (push) - #pragma warning (disable:4091 4005) -#endif - -#if FLEXT_OS == FLEXT_OS_WIN && !defined(NT) -#define NT -#endif - -extern "C" { - // Include the relevant PD header files - #ifdef FLEXT_DEBUG - /* PD header file structure has changed with version 0.37 - from then on m_imp.h needs m_pd.h to be included before - on the other hand versions < 0.37 don't like that.... - (they want m_imp.h solely as m_pd.h is included therein) - So better use the m_pd.h here also for the debug version. - Change that if really needed for debugging PD internals... - */ - - #ifndef PD_VERSION - // include only if not already included - #include - #endif -// #include // for easier debugging - #else - #ifndef PD_VERSION - // include only if not already included - #include - #endif - #endif -} - -#ifdef _MSC_VER - #pragma warning (pop) -#endif - -#ifdef cabs -#undef cabs // this is defined in m_pd.h (clashes with math.h in MacOSX) -#endif - -typedef t_object t_sigobj; -typedef t_gpointer *t_ptrtype; - -typedef t_float t_flint; -typedef t_symbol *t_symtype; -typedef t_class **t_thing; - -typedef t_clock t_qelem; - -#define A_NOTHING A_NULL -#define A_FLINT A_FLOAT -#define A_DEFFLINT A_DEFFLOAT -#define A_DEFSYMBOL A_DEFSYM - - -#elif FLEXT_SYS == FLEXT_SYS_MAX - -/* Max/MSP definitions start here */ - -// 2-byte alignment for Max/MSP structures -#ifdef _MSC_VER -#pragma pack(push,flext_maxsdk) -#pragma pack(2) -#endif - -// Include the relevant Max/MSP header files - -#if FLEXT_OS == FLEXT_OS_MAC - #if FLEXT_OSAPI == FLEXT_OSAPI_MAC_MACH - // MachO version - must insert prefix header - #include - #else - // CFM version - #ifndef __MRC__ - #define powerc - #endif - #define __MOTO__ 0 - - #include - #endif -#elif FLEXT_OS == FLEXT_OS_WIN - #define WIN_VERSION 1 - #define WIN_EXT_VERSION 1 -#endif - -// necessary for the old OS9 SDK -extern "C" { - -#include "ext.h" -#include "ext_user.h" -#if FLEXT_OS != FLEXT_OS_MAC || defined(MAC_VERSION) -// doesn't exist for OS9 -#include "ext_critical.h" -#include "buffer.h" -#else -// for OS9 include "inofficial" header file -#include "flmspbuffer.h" -#endif -#include "z_dsp.h" - -} // extern "C" - -#undef WIN_VERSION - -typedef t_pxobject t_sigobj; // that's the all-in-one object type of Max/MSP (not very memory-efficent, i guess) -typedef t_patcher t_canvas; - -typedef t_int t_flint; -typedef t_symbol *t_symtype; -typedef t_object *t_thing; - -// for the following to work you should have the latest SDK -#if FLEXT_OS == FLEXT_OS_MAC //&& !defined(MAC_VERSION) -typedef struct qelem t_qelem; -#else -typedef void *t_qelem; -#endif - -typedef method t_method; -typedef method t_newmethod; -typedef int t_atomtype; - -typedef struct clock t_clock; -typedef void t_binbuf; - -#undef clock_free -#define clock_free(tick) freeobject((object *)tick) - -#define A_NULL A_NOTHING -#define A_DEFFLINT A_DEFLONG - -#ifndef A_INT -#define A_INT A_LONG -#endif - -#ifndef A_DEFINT -#define A_DEFINT A_DEFLONG -#endif - -#ifndef A_SYMBOL -#define A_SYMBOL A_SYM -#endif - -#ifndef A_DEFSYMBOL -#define A_DEFSYMBOL A_DEFSYM -#endif - -#if FLEXT_OS == FLEXT_OS_MAC && !defined(MAC_VERSION) -// simulate non-existing functions for OS9 -#define critical_enter(N) -#define critical_exit(N) -#endif - -#ifdef _MSC_VER -#pragma pack(pop,flext_maxsdk) -#endif - -#else -#error Platform not supported -#endif // FLEXT_SYS - - -// general definitions - -typedef t_symbol *t_symptr; - - -// ------------------------- - -#ifdef FLEXT_LOGGING -/* If FLEXT_LOGGING is defined implement logging */ - -#ifdef _MSC_VER -#define FLEXT_LOG(s) _CrtDbgReport(_CRT_WARN,__FILE__,__LINE__,"flext",s) -#define FLEXT_LOG1(s,v1) _CrtDbgReport(_CRT_WARN,__FILE__,__LINE__,"flext",s,v1) -#define FLEXT_LOG2(s,v1,v2) _CrtDbgReport(_CRT_WARN,__FILE__,__LINE__,"flext",s,v1,v2) -#define FLEXT_LOG3(s,v1,v2,v3) _CrtDbgReport(_CRT_WARN,__FILE__,__LINE__,"flext",s,v1,v2,v3) -#define FLEXT_LOG4(s,v1,v2,v3,v4) _CrtDbgReport(_CRT_WARN,__FILE__,__LINE__,"flext",s,v1,v2,v3,v4) -#define FLEXT_LOG5(s,v1,v2,v3,v4,v5) _CrtDbgReport(_CRT_WARN,__FILE__,__LINE__,"flext",s,v1,v2,v3,v4,v5) -#define FLEXT_LOG6(s,v1,v2,v3,v4,v5,v6) _CrtDbgReport(_CRT_WARN,__FILE__,__LINE__,"flext",s,v1,v2,v3,v4,v5,v6) -#define FLEXT_LOG7(s,v1,v2,v3,v4,v5,v6,v7) _CrtDbgReport(_CRT_WARN,__FILE__,__LINE__,"flext",s,v1,v2,v3,v4,v5,v6,v7) -#define FLEXT_LOG8(s,v1,v2,v3,v4,v5,v6,v7,v8) _CrtDbgReport(_CRT_WARN,__FILE__,__LINE__,"flext",s,v1,v2,v3,v4,v5,v6,v7,v8) -#define FLEXT_LOG9(s,v1,v2,v3,v4,v5,v6,v7,v8,v9) _CrtDbgReport(_CRT_WARN,__FILE__,__LINE__,"flext",s,v1,v2,v3,v4,v5,v6,v7,v8,v9) -#else -#define FLEXT_LOG(s) post(s) -#define FLEXT_LOG1(s,v1) post(s,v1) -#define FLEXT_LOG2(s,v1,v2) post(s,v1,v2) -#define FLEXT_LOG3(s,v1,v2,v3) post(s,v1,v2,v3) -#define FLEXT_LOG4(s,v1,v2,v3,v4) post(s,v1,v2,v3,v4) -#define FLEXT_LOG5(s,v1,v2,v3,v4,v5) post(s,v1,v2,v3,v4,v5) -#define FLEXT_LOG6(s,v1,v2,v3,v4,v5,v6) post(s,v1,v2,v3,v4,v5,v6) -#define FLEXT_LOG7(s,v1,v2,v3,v4,v5,v6,v7) post(s,v1,v2,v3,v4,v5,v6,v7) -#define FLEXT_LOG8(s,v1,v2,v3,v4,v5,v6,v7,v8) post(s,v1,v2,v3,v4,v5,v6,v7,v8) -#define FLEXT_LOG9(s,v1,v2,v3,v4,v5,v6,v7,v8,v9) post(s,v1,v2,v3,v4,v5,v6,v7,v8,v9) -#endif - -#else - -/* If FLEXT_LOGGING is not defined avoid logging */ -#define FLEXT_LOG(s) ((void)0) -#define FLEXT_LOG1(s,v1) ((void)0) -#define FLEXT_LOG2(s,v1,v2) ((void)0) -#define FLEXT_LOG3(s,v1,v2,v3) ((void)0) -#define FLEXT_LOG4(s,v1,v2,v3,v4) ((void)0) -#define FLEXT_LOG5(s,v1,v2,v3,v4,v5) ((void)0) -#define FLEXT_LOG6(s,v1,v2,v3,v4,v5,v6) ((void)0) -#define FLEXT_LOG7(s,v1,v2,v3,v4,v5,v6,v7) ((void)0) -#define FLEXT_LOG8(s,v1,v2,v3,v4,v5,v6,v7,v8) ((void)0) -#define FLEXT_LOG9(s,v1,v2,v3,v4,v5,v6,v7,v8,v9) ((void)0) - -#endif - -#ifdef FLEXT_DEBUG -#ifdef _MSC_VER -#define FLEXT_ASSERT(b) do { if(!(b)) _CrtDbgReport(_CRT_ASSERT,__FILE__,__LINE__,"flext",#b); } while(false) -#define FLEXT_WARN(str) _CrtDbgReport(_CRT_WARN,__FILE__,__LINE__,"flext",NULL) -#define FLEXT_ERROR(str) _CrtDbgReport(_CRT_ERROR,__FILE__,__LINE__,"flext",NULL) -#else -#define FLEXT_ASSERT(b) assert(b) -//#define FLEXT_ASSERT(b) do { if(!(b)) error("Assertion failed: " #b " - in " __FILE__ " line %i",(int)__LINE__); } while(false) -#define FLEXT_WARN(str) error("Warning: in " __FILE__ " line %i",(int)__LINE__) -#define FLEXT_ERROR(str) error("Error: in " __FILE__ " line %i",(int)__LINE__) -#endif -#else -#define FLEXT_ASSERT(b) (1) -#define FLEXT_WARN(str) (1) -#define FLEXT_ERROR(str) error("Error: in " __FILE__ " line %i",(int)__LINE__) -#endif - -#define ERRINTERNAL() error("flext: Internal error in file " __FILE__ ", line %i - please report",(int)__LINE__) - - -// ----- disable attribute editor for PD version < devel_0_36 or 0.37 -#ifndef PD_MAJOR_VERSION -#undef FLEXT_NOATTREDIT -#define FLEXT_NOATTREDIT -#endif - - -// ----- set message queue mode ----- -#if FLEXT_SYS == FLEXT_SYS_PD && PD_MINOR_VERSION >= 37 - // for PD version >= 0.37test10 FLEXT_PDLOCK is standard - #undef FLEXT_PDLOCK - #define FLEXT_PDLOCK -#endif - -#if FLEXT_SYS == FLEXT_SYS_PD && PD_MINOR_VERSION >= 38 && defined(PD_DEVEL_VERSION) - // use idle callback - #define FLEXT_QMODE 1 -#elif defined(FLEXT_PDLOCK) - // new PD thread locking functionality shall be used - #if FLEXT_SYS == FLEXT_SYS_PD - #ifdef FLEXT_THREADS - // can only be used with PD and threaded build - #define FLEXT_QMODE 2 - #else - #define FLEXT_QMODE 0 - #endif - #else - #error FLEXT_PDLOCK can only be defined with PD - #endif -#else - #define FLEXT_QMODE 0 -#endif - -#ifndef FLEXT_QMODE -#error Internal error: Queueing mode not defined -#endif - -#endif diff --git a/externals/grill/flext/source/flstk.cpp b/externals/grill/flext/source/flstk.cpp deleted file mode 100644 index f3161565..00000000 --- a/externals/grill/flext/source/flstk.cpp +++ /dev/null @@ -1,117 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#include "flext.h" -#include "flstk.h" - -flext_stk::flext_stk(): - inobjs(0),outobjs(0), - inobj(NULL),outobj(NULL), - smprt(0),blsz(0) -{} - -bool flext_stk::Init() -{ - bool ret = flext_dsp::Init(); - inobjs = CntInSig(); - outobjs = CntOutSig(); - return ret; -} - -void flext_stk::Exit() -{ - ClearObjs(); - flext_dsp::Exit(); -} - -void flext_stk::ClearObjs() -{ - FreeObjs(); - - if(inobj) { - for(int i = 0; i < inobjs; ++i) delete inobj[i]; - delete[] inobj; inobj = NULL; - } - if(outobj) { - for(int i = 0; i < outobjs; ++i) delete outobj[i]; - delete[] outobj; outobj = NULL; - } -} - -bool flext_stk::CbDsp() -{ - // called on every rebuild of the dsp chain - - int i; - - if(Blocksize() != blsz || Samplerate() != smprt) { - // block size or sample rate has changed... rebuild all objects - - ClearObjs(); - - smprt = Samplerate(); - blsz = Blocksize(); - Stk::setSampleRate(smprt); - - // set up sndobjs for inlets and outlets - if(inobjs) { - inobj = new Input *[inobjs]; - for(i = 0; i < inobjs; ++i) - inobj[i] = new Input(InSig(i),blsz); - } - if(outobjs) { - outobj = new Output *[outobjs]; - for(i = 0; i < outobjs; ++i) - outobj[i] = new Output(OutSig(i),blsz); - } - - if(!NewObjs()) ClearObjs(); - } - else { - // assign changed input/output vectors - - for(i = 0; i < inobjs; ++i) inobj[i]->SetBuf(InSig(i)); - for(i = 0; i < outobjs; ++i) outobj[i]->SetBuf(OutSig(i)); - } - return true; -} - -void flext_stk::CbSignal() -{ - if(inobjs || outobjs) ProcessObjs(blsz); -} - - -// inlet class - -flext_stk::Input::Input(const t_sample *b,int v): - buf(b),vecsz(v), - index(0) -{} - -MY_FLOAT *flext_stk::Input::tick(MY_FLOAT *vector,unsigned int vectorSize) -{ - for(unsigned int i = 0; i < vectorSize; i++) vector[i] = tick(); - return vector; -} - - -// outlet class - -flext_stk::Output::Output(t_sample *b,int v): - buf(b),vecsz(v), - index(0) -{} - -void flext_stk::Output::tick(const MY_FLOAT *vector,unsigned int vectorSize) -{ - for(unsigned int i = 0; i < vectorSize; i++) tick(vector[i]); -} - diff --git a/externals/grill/flext/source/flstk.h b/externals/grill/flext/source/flstk.h deleted file mode 100644 index c3376cb5..00000000 --- a/externals/grill/flext/source/flstk.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2007 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#ifndef __FLSTK_H -#define __FLSTK_H - -#include "flext.h" - -// PI is defined in the Max/MSP SDK, but clashes with Stk.h -#ifdef PI -#undef PI -#endif - -#include - -class FLEXT_SHARE flext_stk: - public flext_dsp -{ - FLEXT_HEADER(flext_stk,flext_dsp) - -public: - flext_stk(); - - // these have to be overridden in child classes - virtual bool NewObjs() { return true; } - virtual void FreeObjs() {} - virtual void ProcessObjs(int blocksize) {} - -protected: - virtual bool Init(); - virtual void Exit(); - - //! STK object for reading from inlet buffer - class Input: - public Stk - { - public: - Input(const t_sample *b,int vecsz); - - inline MY_FLOAT lastOut() const { return (MY_FLOAT)buf[index]; } - - inline MY_FLOAT tick() - { - if(++index >= vecsz) index = 0; - return lastOut(); - } - - MY_FLOAT *tick(MY_FLOAT *vector,unsigned int vectorSize); - - inline void SetBuf(const t_sample *b) { buf = b; } - - private: - const t_sample *buf; - int vecsz,index; - }; - - //! STK object for writing to outlet buffer - class Output: - public Stk - { - public: - Output(t_sample *b,int vecsz); - - inline void tick(MY_FLOAT s) - { - buf[index] = (t_sample)s; - if(++index >= vecsz) index = 0; - } - - void tick(const MY_FLOAT *vector,unsigned int vectorSize); - - inline void SetBuf(t_sample *b) { buf = b; } - - private: - t_sample *buf; - int vecsz,index; - }; - - Input &Inlet(int ix) { return *inobj[ix]; } - Output &Outlet(int ix) { return *outobj[ix]; } - -private: - virtual bool CbDsp(); - virtual void CbSignal(); - - void ClearObjs(); - - int inobjs,outobjs; - Input **inobj; - Output **outobj; - - float smprt; - int blsz; -}; - -#endif diff --git a/externals/grill/flext/source/flsupport.cpp b/externals/grill/flext/source/flsupport.cpp deleted file mode 100644 index b77729e6..00000000 --- a/externals/grill/flext/source/flsupport.cpp +++ /dev/null @@ -1,316 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flsupport.cpp - \brief flext support functions and classes. -*/ - -#include "flext.h" - -#include -#include -#include -#include -#include - -#ifdef _MSC_VER -#define vsnprintf _vsnprintf -#define snprintf _snprintf -#endif - -const t_symbol *flext::sym__ = NULL; -const t_symbol *flext::sym_float = NULL; -const t_symbol *flext::sym_symbol = NULL; -const t_symbol *flext::sym_bang = NULL; -const t_symbol *flext::sym_list = NULL; -const t_symbol *flext::sym_pointer = NULL; -const t_symbol *flext::sym_int = NULL; -const t_symbol *flext::sym_signal = NULL; - -const t_symbol *flext::sym_anything = NULL; - -const t_symbol *flext::sym_buffer = NULL; -const t_symbol *flext::sym_size = NULL; - -const t_symbol *flext::sym_attributes = NULL; -const t_symbol *flext::sym_methods = NULL; - -bool flext::indsp = false; - - -int flext::Version() { return FLEXT_VERSION; } -const char *flext::VersionStr() { return FLEXT_VERSTR; } - - -void flext::Setup() -{ - static bool issetup = false; - if(issetup) - return; - else issetup = true; - -#if FLEXT_SYS == FLEXT_SYS_PD - sym__ = &s_; - sym_anything = &s_anything; - sym_pointer = &s_pointer; - sym_float = &s_float; - sym_symbol = &s_symbol; - sym_bang = &s_bang; - sym_list = &s_list; - sym_signal = &s_signal; - sym_int = gensym("int"); -#elif FLEXT_SYS == FLEXT_SYS_MAX - sym__ = gensym(""); - sym_int = gensym("int"); - sym_float = gensym("float"); - sym_symbol = gensym("symbol"); - sym_bang = gensym("bang"); - sym_list = gensym("list"); - sym_anything = gensym("anything"); - sym_signal = gensym("signal"); - - sym_buffer = flext::MakeSymbol("buffer~"); - sym_size = flext::MakeSymbol("size"); -#endif - - sym_attributes = flext::MakeSymbol("attributes"); - sym_methods = flext::MakeSymbol("methods"); - -#ifdef FLEXT_THREADS - thrid = GetThreadId(); - StartHelper(); -#endif -} - - -#if FLEXT_SYS == FLEXT_SYS_PD && defined(FLEXT_THREADED) && defined(FLEXT_PDLOCK) -#define SYSLOCK() sys_lock() -#define SYSUNLOCK() sys_unlock() -#else -#define SYSLOCK() (void)0 -#define SYSUNLOCK() (void)0 -#endif - - -///////////////////////////////////////////////////////// -// overloaded new/delete memory allocation methods -// -///////////////////////////////////////////////////////// - -#define LARGEALLOC 32000 - -#ifndef FLEXT_USE_CMEM - -#ifdef FLEXT_DEBUGMEM -static const size_t memtest = 0x12345678L; -#endif - -void *flext_root::operator new(size_t bytes) -{ - bytes += sizeof(size_t); -#ifdef FLEXT_DEBUGMEM - bytes += sizeof(memtest)*2; -#endif - char *blk; - if(UNLIKELY(bytes >= LARGEALLOC)) { -#if FLEXT_SYS == FLEXT_SYS_MAX && defined(_SYSMEM_H_) - blk = (char *)::sysmem_newptr(bytes); -#else - // use C library function for large memory blocks - blk = (char *)::malloc(bytes); -#endif - } - else { - //! We need system locking here for secondary threads! - SYSLOCK(); - -#if defined(FLEXT_USE_CMEM) - blk = (char *)::malloc(bytes); -#else - blk = (char *)::getbytes(bytes); -#endif - SYSUNLOCK(); - } - - FLEXT_ASSERT(blk); - - *(size_t *)blk = bytes; -#ifdef FLEXT_DEBUGMEM - *(size_t *)(blk+sizeof(size_t)) = memtest; - *(size_t *)(blk+bytes-sizeof(memtest)) = memtest; - return blk+sizeof(size_t)+sizeof(memtest); -#else - return blk+sizeof(size_t); -#endif -} - -void flext_root::operator delete(void *blk) -{ - FLEXT_ASSERT(blk); - FLEXT_ASSERT(MemCheck(blk)); - -#ifdef FLEXT_DEBUGMEM - char *ori = (char *)blk-sizeof(size_t)-sizeof(memtest); -#else - char *ori = (char *)blk-sizeof(size_t); -#endif - size_t bytes = *(size_t *)ori; - - if(UNLIKELY(bytes >= LARGEALLOC)) { -#if FLEXT_SYS == FLEXT_SYS_MAX && defined(_SYSMEM_H_) - ::sysmem_freeptr(ori); -#else - // use C library function for large memory blocks - ::free(ori); -#endif - } - else { - //! We need system locking here for secondary threads! - SYSLOCK(); - -#if defined(FLEXT_USE_CMEM) - ::free(ori); -#else - ::freebytes(ori,bytes); -#endif - SYSUNLOCK(); - } -} - -#ifdef FLEXT_DEBUGMEM -bool flext_root::MemCheck(void *blk) -{ - char *ori = (char *)blk-sizeof(size_t)-sizeof(memtest); - size_t bytes = *(size_t *)ori; - - return - *(size_t *)((char *)ori+sizeof(size_t)) == memtest && - *(size_t *)((char *)ori+bytes-sizeof(memtest)) == memtest; -} -#endif - -#endif - -void *flext_root::NewAligned(size_t bytes,int bitalign) -{ - const size_t ovh = sizeof(size_t)+sizeof(char *); - const size_t alignovh = bitalign/8-1; - bytes += ovh+alignovh; - - char *blk; - if(UNLIKELY(bytes >= LARGEALLOC)) { -#if FLEXT_SYS == FLEXT_SYS_MAX && defined(_SYSMEM_H_) - blk = (char *)::sysmem_newptr(bytes); -#else - // use C library function for large memory blocks - blk = (char *)::malloc(bytes); -#endif - } - else { - //! We need system locking here for secondary threads! - SYSLOCK(); - -#if defined(FLEXT_USE_CMEM) - blk = (char *)::malloc(bytes); -#else - blk = (char *)::getbytes(bytes); -#endif - SYSUNLOCK(); - } - FLEXT_ASSERT(blk); - - char *ablk = reinterpret_cast((reinterpret_cast(blk)+ovh+alignovh) & ~alignovh); - *(char **)(ablk-sizeof(size_t)-sizeof(char *)) = blk; - *(size_t *)(ablk-sizeof(size_t)) = bytes; - return ablk; -} - -void flext_root::FreeAligned(void *blk) -{ - FLEXT_ASSERT(blk); - - char *ori = *(char **)((char *)blk-sizeof(size_t)-sizeof(char *)); - size_t bytes = *(size_t *)((char *)blk-sizeof(size_t)); - - if(UNLIKELY(bytes >= LARGEALLOC)) { -#if FLEXT_SYS == FLEXT_SYS_MAX && defined(_SYSMEM_H_) - ::sysmem_freeptr(ori); -#else - // use C library function for large memory blocks - ::free(ori); -#endif - } - else { - //! We need system locking here for secondary threads! - SYSLOCK(); - -#if defined(FLEXT_USE_CMEM) - ::free(ori); -#else - ::freebytes(ori,bytes); -#endif - SYSUNLOCK(); - } -} - -// ------------------------------------------ - -/*! \todo there is probably also a shortcut for Max and jMax - \todo size checking -*/ -void flext::GetAString(const t_atom &a,char *buf,size_t szbuf) -{ -#if FLEXT_SYS == FLEXT_SYS_PD - atom_string(const_cast(&a),buf,(int)szbuf); -#else - if(IsSymbol(a)) STD::strncpy(buf,GetString(a),szbuf); - else if(IsFloat(a)) STD::snprintf(buf,szbuf,"%f",GetFloat(a)); - else if(IsInt(a)) STD::snprintf(buf,szbuf,"%i",GetInt(a)); - else *buf = 0; -#endif -} - -unsigned long flext::AtomHash(const t_atom &a) -{ -#if FLEXT_SYS == FLEXT_SYS_MAX || FLEXT_SYS == FLEXT_SYS_PD - return ((unsigned long)a.a_type<<28)^*(unsigned long *)&a.a_w; -#else -#error Not implemented -#endif -} - -void flext_root::post(const char *fmt, ...) -{ - va_list ap; - va_start(ap, fmt); - - char buf[1024]; - vsnprintf(buf,sizeof buf,fmt, ap); - buf[sizeof buf-1] = 0; // in case of full buffer - ::post(buf); - - va_end(ap); -} - -void flext_root::error(const char *fmt,...) -{ - va_list ap; - va_start(ap, fmt); - - char buf[1024]; - STD::strcpy(buf,"error: "); - vsnprintf(buf+7,sizeof buf-7,fmt, ap); - buf[sizeof buf-1] = 0; // in case of full buffer - ::post(buf); - - va_end(ap); -} - - diff --git a/externals/grill/flext/source/flsupport.h b/externals/grill/flext/source/flsupport.h deleted file mode 100644 index f26437df..00000000 --- a/externals/grill/flext/source/flsupport.h +++ /dev/null @@ -1,1285 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flsupport.h - \brief flext support functions and classes -*/ - -#ifndef __FLSUPPORT_H -#define __FLSUPPORT_H - -#include "flstdc.h" -#include -#include - -/*! \defgroup FLEXT_SUPPORT Flext support classes - @{ -*/ - -class FLEXT_SHARE FLEXT_CLASSDEF(flext_root); -typedef class FLEXT_CLASSDEF(flext_root) flext_root; - -/*! \brief Flext root support class - - Moved memory functions and console output here so that all the classes - contained in flext can use them -*/ -class FLEXT_SHARE FLEXT_CLASSDEF(flext_root) { -public: -// --- console output ----------------------------------------------- - - //! post message to console, with line feed (limited to 1k chars!) - static void post(const char *fmt,...); - //! post error message to console (limited to 1k chars!) - static void error(const char *fmt,...); - -// --- memory ------------------------------------------------------- - - /*! \defgroup FLEXT_S_MEMORY Memory allocation functions - @{ - */ - -#ifdef FLEXT_NOGLOBALNEW -#error FLEXT_NOGLOBALNEW is deprecated, define FLEXT_USE_CMEM instead -#define FLEXT_USE_CMEM -#endif - -#ifdef FLEXT_USE_CMEM - inline void *operator new(size_t bytes) { return ::operator new(bytes); } - inline void operator delete(void *blk) { ::operator delete(blk); } - - inline void *operator new[](size_t bytes) { return ::operator new[](bytes); } - inline void operator delete[](void *blk) { ::operator delete[](blk); } - - static bool MemCheck(void *) { return true; } -#else - /*! Overloaded new memory allocation method - \note this uses a fast allocation method of the real-time system - \warning Max/MSP (or MacOS) allows only 32K in overdrive mode! - */ - void *operator new(size_t bytes); - //! Overloaded delete method - void operator delete(void *blk); - -#ifndef __MRC__ // doesn't allow new[] overloading?! - inline void *operator new[](size_t bytes) { return operator new(bytes); } - inline void operator delete[](void *blk) { operator delete(blk); } -#endif - -#ifdef FLEXT_DEBUGMEM - static bool MemCheck(void *blk); -#else - static bool MemCheck(void *) { return true; } -#endif - -#endif // USECMEM - -#ifndef __BORLANDC__ - inline void *operator new(size_t,void *p) { return p; } - inline void operator delete(void *,void *) {} -#ifndef __MRC__ - inline void *operator new[](size_t,void *p) { return p; } - inline void operator delete[](void *,void *) {} -#endif -#endif - - //! Get an aligned memory block - static void *NewAligned(size_t bytes,int bitalign = 128); - // same with templated type - template - static T *NewAligned(size_t times,int bitalign = 128) { return static_cast(NewAligned(times*sizeof(T),bitalign)); } - //! Free an aligned memory block - static void FreeAligned(void *blk); - //! Test for alignment - static bool IsAligned(void *ptr,int bitalign = 128) { - return (reinterpret_cast(ptr)&(bitalign-1)) == 0; - } - //! @} FLEXT_S_MEMORY -}; - -#ifndef FLEXT_USE_CMEM -/************************************************************************/ -// MFC doesn't like global overloading of allocators -// anyway, who likes MFC - -#if !defined(_MSC_VER) && !defined(__BORLANDC__) -#define NEWTHROW throw(std::bad_alloc) -#define DELTHROW throw() -#else -#define NEWTHROW -#define DELTHROW -#endif - -// define global new/delete operators -inline void *operator new(size_t bytes) NEWTHROW { return flext_root::operator new(bytes); } -inline void operator delete(void *blk) DELTHROW { flext_root::operator delete(blk); } -#ifndef __MRC__ // doesn't allow new[] overloading?! -inline void *operator new[](size_t bytes) NEWTHROW { return flext_root::operator new[](bytes); } -inline void operator delete[](void *blk) DELTHROW { flext_root::operator delete[](blk); } -#endif - -#endif // FLEXT_USE_CMEM - -/************************************************************************/ - - -class FLEXT_SHARE FLEXT_CLASSDEF(flext); -typedef class FLEXT_CLASSDEF(flext) flext; - -class FLEXT_SHARE FLEXT_CLASSDEF(flext_base); - -/*! \brief Flext support class - - A number of methods (most are static functions) are defined here for convenience. - This class doesn't define any data members, hence it can be inherited to all - classes (not only PD objects) to profit from the cross-platform functionality. - Examples are the overloaded memory allocation, atom and atom list functions, - thread functions and classes, the sample buffer class and others. - - This class can also be used for a non-object class (not representing an external object) - and won't give any extra burden to it. -*/ - -class FLEXT_SHARE FLEXT_CLASSDEF(flext): - public flext_root -{ - - /*! \defgroup FLEXT_SUPPORT Flext support class - @{ - */ -public: - -// --- version ----------------------------------------------- - - /*! \brief Flext version number - - Return the version number of the flext library. - For statically linked flext this is identical to the header definition FLEXT_VERSION, - otherwise it reflects the version number of the shared flext library. - */ - static int Version(); - - //! Flext version string - static const char *VersionStr(); - -// --- special typedefs --------------------------------------------- - -// later! -#if 0 - typedef t_float Float; - typedef t_int Int; - typedef t_sample Sample; - typedef const t_symbol *Symbol; - typedef t_atom Atom; -#endif - -// --- buffer/array stuff ----------------------------------------- - - /*! \defgroup FLEXT_S_BUFFER Buffer handling - @{ - */ - - //! Class for platform independent buffer handling - class FLEXT_SHARE buffer: - public flext_root - { - public: - -#if FLEXT_SYS == FLEXT_SYS_PD - typedef bool lock_t; -#elif FLEXT_SYS == FLEXT_SYS_MAX - typedef long lock_t; -#else -#error Not implemented -#endif - - /*! \brief Construct buffer. - \param s: symbol name, can be NULL - \param delayed = true: only sets name, needs another Set(NULL) to really initialize the buffer - \remark As externals can be created prior to the buffer objects they are pointing to, initialization should be done at loadbang! - */ - buffer(const t_symbol *s = NULL,bool delayed = false); - - //! Destroy buffer - ~buffer(); - - /*! \brief Check if the buffer is valid for use - \note This must be true to use any of the other functions except set - */ - bool Ok() const - { - return sym -#if FLEXT_SYS == FLEXT_SYS_PD - && arr -#endif - && data; - } - - /*! \brief Check if buffer content is valid (not in state of content change) - \note buffer must be Ok() - */ - bool Valid() const - { - FLEXT_ASSERT(sym); -#if FLEXT_SYS == FLEXT_SYS_PD - return true; -#elif FLEXT_SYS == FLEXT_SYS_MAX - const t_buffer *p = (const t_buffer *)sym->s_thing; - return p && p->b_valid; -#else -#error not implemented -#endif - } - - /*! \brief Check and update if the buffer has been changed (e.g. resized) - \note buffer must be Ok() - */ - bool Update(); - - /*! \brief Lock buffer - \return previous state (needed for Unlock) - \note buffer must be Ok() - */ - lock_t Lock(); - - /*! \brief Unlock buffer - \param prv: Previous state is returned by Lock() - \note buffer must be Ok() - */ - void Unlock(lock_t prv); - - /*! \brief Set to specified buffer. - \param nameonly: if true sets name only, but doesn't look at buffer actually - \return -1 on failure, 0 on success, 1 if parameters (length, data ptr, channels) have changed - */ - int Set(const t_symbol *s = NULL,bool nameonly = false); - - /*! \brief Declare buffer content as dirty. - \param refr: if true forces immediate graphics refresh - */ - void Dirty(bool refr = false); - - //! Clear the dirty flag. - void ClearDirty(); - - /*! Query whether the buffer content has been changed since the last ClearDirty() - \note With mainstream versions of PD this will always return true, since the dirtiness can't be judged - */ - bool IsDirty() const; - - //! Get symbol of buffer - const t_symbol *Symbol() const { return sym; } - - //! Get literal name of buffer - const char *Name() const { return sym?GetString(sym):""; } - - /*! \brief Get pointer to buffer, channel and frame count. - \remark Channels are interleaved - */ - t_sample *Data() { return data; } - - //! Get channel count - int Channels() const { return chns; } - //! Get frame count - int Frames() const { return frames; } - //! Set frame count - void Frames(int fr,bool keep = false,bool zero = true); - - //! Graphic auto refresh interval - void SetRefrIntv(float intv); - - protected: - //! buffer name - const t_symbol *sym; - //! array holding audio data - t_sample *data; - //! number of audio channels - int chns; - //! number of frames (multiplied by chns for the number of samples) - int frames; -#if FLEXT_SYS == FLEXT_SYS_PD - //! pointer to the PD array structure - t_garray *arr; - //! update interval - float interval; - //! flag signaling that the data has been changed - bool isdirty; - //! flag showing that the update clock is active - bool ticking; - //! update clock - t_clock *tick; - //! last time the dirty flag was cleared (using the clock_getlogicaltime function) - double cleantime; - - private: - //! update clock callback - static void cb_tick(buffer *b); -#elif FLEXT_SYS == FLEXT_SYS_MAX - //! last time the dirty flag was cleared (using the gettime function) - long cleantime; -#endif - }; - - -//! @} FLEXT_S_BUFFER - -// --- utilities -------------------------------------------------- - - /*! \defgroup FLEXT_S_UTIL Utility functions - @{ - */ - - //! Copy an atom - static void CopyAtom(t_atom *dst,const t_atom *src) { *dst = *src; } - - //! Copy atoms - static void CopyAtoms(int cnt,t_atom *dst,const t_atom *src); - - //! Print an atom - static bool PrintAtom(const t_atom &a,char *buf,size_t bufsz); - - /*! Scan an atom until whitespace - \return next token position, or NULL on failure - */ - static const char *ScanAtom(t_atom &a,const char *buf); - - //! Copy a list of atoms - static t_atom *CopyList(int argc,const t_atom *argv); - //! Print an atom list - static bool PrintList(int argc,const t_atom *argv,char *buf,size_t bufsz); - - //! Copy a memory region - static void CopyMem(void *dst,const void *src,int bytes); - //! Copy a sample array - static void CopySamples(t_sample *dst,const t_sample *src,int cnt); - //! Set a memory region - static void ZeroMem(void *dst,int bytes); - //! Set a sample array to a fixed value - static void SetSamples(t_sample *dst,int cnt,t_sample s); - //! Set a sample array to 0 - static void ZeroSamples(t_sample *dst,int cnt) { SetSamples(dst,cnt,0); } - - - //! Get a 32 bit hash value from an atom - static unsigned long AtomHash(const t_atom &a); - -//! @} FLEXT_S_UTIL - -// --- various symbols -------------------------------------------- - - /*! \defgroup FLEXT_S_ATOM Atom/list handling - @{ - */ - - //! Symbol constant for "" - static const t_symbol *sym__; - //! Symbol constant for "float" - static const t_symbol *sym_float; - //! Symbol constant for "symbol" - static const t_symbol *sym_symbol; - //! Symbol constant for "bang" - static const t_symbol *sym_bang; - //! Symbol constant for "list" - static const t_symbol *sym_list; - //! Symbol constant for "anything" - static const t_symbol *sym_anything; - - /*! \brief Symbol constant for "int" - \note Only the Max/MSP system has this defined as an internal type - */ - static const t_symbol *sym_int; - - /*! Symbol constant for "pointer" - \note Only PD has this defined as an internal type - */ - static const t_symbol *sym_pointer; - - //! Symbol constant for "signal" - static const t_symbol *sym_signal; - - //! \note This is used in macros where the type of the arg is not clear - static const t_symbol *MakeSymbol(const t_symbol *s) { return s; } - - //! Make a symbol from a string - static const t_symbol *MakeSymbol(const char *s) { return ::gensym(const_cast(s)); } - //! Get symbol string - static const char *GetString(const t_symbol *s) { return s->s_name; } - //! Check for symbol and get string - static const char *GetAString(const t_symbol *s,const char *def = NULL) { return s?GetString(s):def; } - -// --- atom stuff ---------------------------------------- - - //! Set atom from another atom - static void SetAtom(t_atom &a,const t_atom &b) { CopyAtom(&a,&b); } - //! Compare two atoms - static int CmpAtom(const t_atom &a,const t_atom &b); - - // there are some more comparison functions for t_atom types outside the class - - //! Set atom from another atom - static int GetType(const t_atom &a) { return a.a_type; } - - //! Check whether the atom is nothing - static bool IsNothing(const t_atom &a) { return a.a_type == A_NULL; } - //! Set the atom to represent nothing - static void SetNothing(t_atom &a) { a.a_type = A_NULL; } - - //! Check whether the atom is a float - static bool IsFloat(const t_atom &a) { return a.a_type == A_FLOAT; } - - //! Check whether the atom can be represented as a float - static bool CanbeFloat(const t_atom &a) { return IsFloat(a) || IsInt(a); } - - //! Access the float value (without type check) - static float GetFloat(const t_atom &a) { return a.a_w.w_float; } - //! Set the atom to represent a float - static void SetFloat(t_atom &a,float v) { a.a_type = A_FLOAT; a.a_w.w_float = v; } - - //! Check whether the atom is a symbol - static bool IsSymbol(const t_atom &a) { return a.a_type == A_SYMBOL; } - -#if FLEXT_SYS == FLEXT_SYS_PD - //! Access the symbol value (without type check) - static t_symbol *GetSymbol(const t_atom &a) { return a.a_w.w_symbol; } - //! Set the atom to represent a symbol - static void SetSymbol(t_atom &a,const t_symbol *s) { a.a_type = A_SYMBOL; a.a_w.w_symbol = const_cast(s); } -#elif FLEXT_SYS == FLEXT_SYS_MAX - //! Access the symbol value (without type check) - static t_symbol *GetSymbol(const t_atom &a) { return a.a_w.w_sym; } - //! Set the atom to represent a symbol - static void SetSymbol(t_atom &a,const t_symbol *s) { a.a_type = A_SYMBOL; a.a_w.w_sym = const_cast(s); } -#else -#error -#endif - //! Check for a symbol and get its value - static t_symbol *GetASymbol(const t_atom &a,t_symbol *def = NULL) { return IsSymbol(a)?GetSymbol(a):def; } // NULL or empty symbol? - - //! Check whether the atom is a string - static bool IsString(const t_atom &a) { return IsSymbol(a); } - //! Access the string value (without type check) - static const char *GetString(const t_atom &a) { t_symbol *s = GetSymbol(a); return s?GetString(s):NULL; } - //! Check for a string and get its value - static const char *GetAString(const t_atom &a,const char *def = NULL) { return IsSymbol(a)?GetAString(GetSymbol(a),def):def; } - //! Check for a string and get its value - static void GetAString(const t_atom &a,char *buf,size_t szbuf); - //! Set the atom to represent a string - static void SetString(t_atom &a,const char *c) { SetSymbol(a,MakeSymbol(c)); } - - //! Check whether the atom can be represented as an integer - static bool CanbeInt(const t_atom &a) { return IsFloat(a) || IsInt(a); } - -#if FLEXT_SYS == FLEXT_SYS_PD - //! Check for a float and get its value - static float GetAFloat(const t_atom &a,float def = 0) { return IsFloat(a)?GetFloat(a):def; } - - //! Check whether the atom is an integer - static bool IsInt(const t_atom &) { return false; } - //! Access the integer value (without type check) - static int GetInt(const t_atom &a) { return (int)GetFloat(a); } - //! Check for an integer and get its value - static int GetAInt(const t_atom &a,int def = 0) { return (int)GetAFloat(a,(float)def); } - //! Set the atom to represent a integer (depending on the system) - static void SetInt(t_atom &a,int v) { a.a_type = A_FLOAT; a.a_w.w_float = (float)v; } - -#ifndef FLEXT_COMPATIBLE - //! Check whether the atom strictly is a pointer - static bool IsPointer(const t_atom &a) { return a.a_type == A_POINTER; } - //! Check whether the atom can be a pointer - static bool CanbePointer(const t_atom &a) { return IsPointer(a); } - //! Access the pointer value (without type check) - static t_gpointer *GetPointer(const t_atom &a) { return a.a_w.w_gpointer; } - //! Check for a pointer and get its value - static t_gpointer *GetAPointer(const t_atom &a,t_gpointer *def = NULL) { return IsPointer(a)?GetPointer(a):def; } - //! Set the atom to represent a pointer - static void SetPointer(t_atom &a,t_gpointer *p) { a.a_type = A_POINTER; a.a_w.w_gpointer = (t_gpointer *)p; } -#endif - -#elif FLEXT_SYS == FLEXT_SYS_MAX - //! Check for a float and get its value - static float GetAFloat(const t_atom &a,float def = 0) { return IsFloat(a)?GetFloat(a):(IsInt(a)?GetInt(a):def); } - - //! Check whether the atom is an int - static bool IsInt(const t_atom &a) { return a.a_type == A_INT; } - //! Access the integer value (without type check) - static int GetInt(const t_atom &a) { return a.a_w.w_long; } - //! Check for an integer and get its value - static int GetAInt(const t_atom &a,int def = 0) { return IsInt(a)?GetInt(a):(IsFloat(a)?(int)GetFloat(a):def); } - //! Set the atom to represent an integer - static void SetInt(t_atom &a,int v) { a.a_type = A_INT; a.a_w.w_long = v; } -#else -#error "Platform not supported" -#endif - - //! Set the atom to represent a boolean - static void SetBool(t_atom &a,bool v) { SetInt(a,v?1:0); } - //! Check whether the atom can be represented as a boolean - static bool CanbeBool(const t_atom &a) { return CanbeInt(a); } - //! Check for an boolean and get its value - static bool GetABool(const t_atom &a) { return GetAInt(a) != 0; } - //! Check for an boolean and get its value - static bool GetBool(const t_atom &a) { return GetInt(a) != 0; } - -// --- atom list stuff ------------------------------------------- - - //! Class representing a list of atoms - class FLEXT_SHARE AtomList - : public flext_root - { - public: - //! Construct list - AtomList(): cnt(0),lst(NULL) {} - //! Construct list - explicit AtomList(int argc,const t_atom *argv = NULL): cnt(0),lst(NULL) { operator()(argc,argv); } - //! Construct list - AtomList(const AtomList &a): cnt(0),lst(NULL) { operator =(a); } - //! Destroy list - virtual ~AtomList(); - - //! Clear list - AtomList &Clear() { return operator()(); } - - //! Set list - AtomList &Set(int argc,const t_atom *argv,int offs = 0,bool resize = false); - //! Get list - int Get(t_atom *argv,int mxsz = -1) const; - - //! Set list - AtomList &operator()(int argc = 0,const t_atom *argv = NULL) { return Set(argc,argv,0,true); } - //! Set list by another AtomList - AtomList &operator =(const AtomList &a) { return operator()(a.Count(),a.Atoms()); } - - //! Compare list to another AtomList ( -1..< , 0..==, 1...> ) - int Compare(const AtomList &a) const; - - bool operator <(const AtomList &a) const { return Compare(a) < 0; } - bool operator <=(const AtomList &a) const { return Compare(a) <= 0; } - bool operator >(const AtomList &a) const { return Compare(a) > 0; } - bool operator >=(const AtomList &a) const { return Compare(a) >= 0; } - bool operator ==(const AtomList &a) const { return Compare(a) == 0; } - bool operator !=(const AtomList &a) const { return Compare(a) != 0; } - - //! Get number of atoms in the list - int Count() const { return cnt; } - //! Get a reference to an indexed atom - t_atom &operator [](int ix) { return lst[ix]; } - //! Get a reference to an indexed atom - const t_atom &operator [](int ix) const { return lst[ix]; } - - //! Get a pointer to the list of atoms - t_atom *Atoms() { return lst; } - //! Get a pointer to the list of atoms - const t_atom *Atoms() const { return lst; } - - //! Append an atom list to the list - AtomList &Append(int argc,const t_atom *argv = NULL) - { - int c = Count(); - Alloc(c+argc,0,c); - Set(argc,argv,c); - return *this; - } - - //! Prepend an atom list to the list - AtomList &Prepend(int argc,const t_atom *argv = NULL) - { - int c = Count(); - Alloc(c+argc,0,c,argc); - Set(argc,argv); - return *this; - } - - //! Append an atom to the list - AtomList &Append(const t_atom &a) { return Append(1,&a); } - //! Append an atom list to the list - AtomList &Append(const AtomList &a) { return Append(a.Count(),a.Atoms()); } - //! Prepend an atom to the list - AtomList &Prepend(const t_atom &a) { return Prepend(1,&a); } - //! Prepend an atom list to the list - AtomList &Prepend(const AtomList &a) { return Prepend(a.Count(),a.Atoms()); } - - //! Get a part of the list - void GetPart(int offs,int len,AtomList &ret) const; - //! Set to a part of the list - AtomList &Part(int offs,int len) { GetPart(offs,len,*this); return *this; } - - //! Represent as a string - bool Print(char *buffer,int buflen) const { return flext::PrintList(Count(),Atoms(),buffer,buflen); } - - protected: - virtual void Alloc(int sz,int keepix = -1,int keeplen = -1,int keepto = 0); - virtual void Free(); - - int cnt; - t_atom *lst; - }; - - class FLEXT_SHARE AtomListStaticBase - : public AtomList - { - protected: - explicit AtomListStaticBase(int pc,t_atom *dt): precnt(pc),predata(dt) {} - virtual ~AtomListStaticBase(); - virtual void Alloc(int sz,int keepix = -1,int keeplen = -1,int keepto = 0); - virtual void Free(); - - AtomListStaticBase &operator =(const AtomList &a) { AtomList::operator =(a); return *this; } - AtomListStaticBase &operator =(const AtomListStaticBase &a) { AtomList::operator =(a); return *this; } - - const int precnt; - t_atom *const predata; - }; - - template - class AtomListStatic - : public AtomListStaticBase - { - public: - //! Construct list - explicit AtomListStatic(): AtomListStaticBase(PRE,pre) {} - //! Construct list - explicit AtomListStatic(int argc,const t_atom *argv = NULL): AtomListStaticBase(PRE,pre) { operator()(argc,argv); } - //! Construct list - explicit AtomListStatic(const AtomList &a): AtomListStaticBase(PRE,pre) { operator =(a); } - - //! Set list by another AtomList - AtomListStatic &operator =(const AtomList &a) { AtomListStaticBase::operator =(a); return *this; } - AtomListStatic &operator =(const AtomListStatic &a) { AtomListStaticBase::operator =(a); return *this; } - protected: - t_atom pre[PRE]; - }; - - //! Class representing an "anything" - class FLEXT_SHARE AtomAnything: - public AtomList - { - public: - explicit AtomAnything(): hdr(NULL) {} - - //! Construct anything - explicit AtomAnything(const t_symbol *h,int argc = 0,const t_atom *argv = NULL) - : AtomList(argc,argv),hdr(h?h:sym__) - {} - - //! Construct anything - explicit AtomAnything(const char *h,int argc = 0,const t_atom *argv = NULL) - : AtomList(argc,argv),hdr(MakeSymbol(h)) - {} - - //! Construct anything - AtomAnything(const AtomAnything &a) - : AtomList(a),hdr(a.hdr) - {} - - //! Clear anything - AtomAnything &Clear() { return operator()(); } - - //! Get header symbol of anything - const t_symbol *Header() const { return hdr; } - - //! Set header symbol of anything - void Header(const t_symbol *h) { hdr = h; } - - //! Set anything - AtomAnything &operator()(const t_symbol *h = NULL,int argc = 0,const t_atom *argv = NULL) - { - hdr = h; AtomList::operator()(argc,argv); - return *this; - } - - //! Set list by another AtomAnything - AtomAnything &operator =(const AtomAnything &a) { return operator()(a.Header(),a.Count(),a.Atoms()); } - - protected: - const t_symbol *hdr; - }; - - - //! @} FLEXT_S_ATOM - - -// --- messages ------------------------------------------------------- - - /*! \defgroup FLEXT_S_MSGBUNDLE Flext message handling - @{ - */ - - class MsgBundle; - - //! Make new message bundle - static MsgBundle *MsgNew(); - - //! Destroy message bundle - static void MsgFree(MsgBundle *mb); - - //! Send (and destroy) message bundle - static void ToSysMsg(MsgBundle *mb); - - //! Send (and destroy) message bundle - static void ToOutMsg(MsgBundle *mb); - - //! Send low priority (and destroy) message bundle - static void ToQueueMsg(MsgBundle *mb); - - //! @} FLEXT_S_MSGBUNDLE - - - /*! \defgroup FLEXT_S_MSG Flext message handling - @{ - */ - - static bool Forward(const t_symbol *sym,const t_symbol *s,int argc,const t_atom *argv); - static bool Forward(const t_symbol *sym,const AtomAnything &args) { return Forward(sym,args.Header(),args.Count(),args.Atoms()); } - static bool Forward(const char *sym,const AtomAnything &args) { return Forward(MakeSymbol(sym),args.Header(),args.Count(),args.Atoms()); } - static bool Forward(const t_symbol *sym,int argc,const t_atom *argv) { return Forward(sym,sym_list,argc,argv); } - static bool Forward(const t_symbol *sym,const AtomList &args) { return Forward(sym,args.Count(),args.Atoms()); } - static bool Forward(const char *sym,const AtomList &args) { return Forward(MakeSymbol(sym),args.Count(),args.Atoms()); } - - static bool SysForward(const t_symbol *sym,const t_symbol *s,int argc,const t_atom *argv); - static bool SysForward(const t_symbol *sym,const AtomAnything &args) { return SysForward(sym,args.Header(),args.Count(),args.Atoms()); } - static bool SysForward(const char *sym,const AtomAnything &args) { return SysForward(MakeSymbol(sym),args.Header(),args.Count(),args.Atoms()); } - static bool SysForward(const t_symbol *sym,int argc,const t_atom *argv) { return SysForward(sym,sym_list,argc,argv); } - static bool SysForward(const t_symbol *sym,const AtomList &args) { return SysForward(sym,args.Count(),args.Atoms()); } - static bool SysForward(const char *sym,const AtomList &args) { return SysForward(MakeSymbol(sym),args.Count(),args.Atoms()); } - - static bool QueueForward(const t_symbol *sym,const t_symbol *s,int argc,const t_atom *argv); - static bool QueueForward(const t_symbol *sym,const AtomAnything &args) { return QueueForward(sym,args.Header(),args.Count(),args.Atoms()); } - static bool QueueForward(const char *sym,const AtomAnything &args) { return QueueForward(MakeSymbol(sym),args.Header(),args.Count(),args.Atoms()); } - static bool QueueForward(const t_symbol *sym,int argc,const t_atom *argv) { return QueueForward(sym,sym_list,argc,argv); } - static bool QueueForward(const t_symbol *sym,const AtomList &args) { return QueueForward(sym,args.Count(),args.Atoms()); } - static bool QueueForward(const char *sym,const AtomList &args) { return QueueForward(MakeSymbol(sym),args.Count(),args.Atoms()); } - - static bool MsgForward(MsgBundle *mb,const t_symbol *sym,const t_symbol *s,int argc,const t_atom *argv); - static bool MsgForward(MsgBundle *mb,const t_symbol *sym,const AtomAnything &args) { return MsgForward(mb,sym,args.Header(),args.Count(),args.Atoms()); } - static bool MsgForward(MsgBundle *mb,const char *sym,const AtomAnything &args) { return MsgForward(mb,MakeSymbol(sym),args.Header(),args.Count(),args.Atoms()); } - static bool MsgForward(MsgBundle *mb,const t_symbol *sym,int argc,const t_atom *argv) { return MsgForward(mb,sym,sym_list,argc,argv); } - static bool MsgForward(MsgBundle *mb,const t_symbol *sym,const AtomList &args) { return MsgForward(mb,sym,args.Count(),args.Atoms()); } - static bool MsgForward(MsgBundle *mb,const char *sym,const AtomList &args) { return MsgForward(mb,MakeSymbol(sym),args.Count(),args.Atoms()); } - - //! @} FLEXT_S_MSG - - - -// --- thread stuff ----------------------------------------------- - - /*! \defgroup FLEXT_S_LOCK Global system locking - @{ - */ - -#if FLEXT_SYS == FLEXT_SYS_PD - #if PD_MINOR_VERSION >= 38 || (PD_MINOR_VERSION >= 37 && defined(PD_DEVEL_VERSION)) - static void Lock() { sys_lock(); } - static void Unlock() { sys_unlock(); } - #else - // no system locking for old PD versions - static void Lock() {} - static void Unlock() {} - #endif -#elif FLEXT_SYS == FLEXT_SYS_MAX - // Max 4.2 upwards! - static void Lock() { critical_enter(0); } - static void Unlock() { critical_exit(0); } -#else -#error -#endif - -//! @} FLEXT_S_LOCK - - /*! \defgroup FLEXT_S_THREAD Flext thread handling - @{ - */ - - //! Check if current thread is the realtime system's thread - static bool IsSystemThread() { -#ifdef FLEXT_THREADS - return IsThread(GetSysThreadId()); -#else - return true; -#endif - } - -#ifdef FLEXT_THREADS - - //! thread type -#if FLEXT_THREADS == FLEXT_THR_MP - typedef MPTaskID thrid_t; -#elif FLEXT_THREADS == FLEXT_THR_POSIX - typedef pthread_t thrid_t; -#elif FLEXT_THREADS == FLEXT_THR_WIN32 - typedef DWORD thrid_t; -#else -#error -#endif - - /*! \brief Get current thread id - */ - static thrid_t GetThreadId() { -#if FLEXT_THREADS == FLEXT_THR_POSIX - return pthread_self(); -#elif FLEXT_THREADS == FLEXT_THR_MP - return MPCurrentTaskID(); -#elif FLEXT_THREADS == FLEXT_THR_WIN32 - return GetCurrentThreadId(); -#else -#error -#endif - } - - /*! \brief Get system thread id - */ - static thrid_t GetSysThreadId() { return thrid; } - - //! Check if current thread should terminate - static bool ShouldExit(); - - //! Check if current thread is the realtime system's thread - static bool IsThread(thrid_t t,thrid_t ref = GetThreadId()) { -#if FLEXT_THREADS == FLEXT_THR_POSIX - return pthread_equal(ref,t) != 0; -#else - return ref == t; -#endif - } - - - /*! \brief Thread parameters - \internal - */ - class FLEXT_SHARE thr_params: - public flext_root - { - public: - thr_params(int n = 1); - ~thr_params(); - - void set_any(const t_symbol *s,int argc,const t_atom *argv); - void set_list(int argc,const t_atom *argv); - - FLEXT_CLASSDEF(flext_base) *cl; - union _data { - bool _bool; - float _float; - int _int; - t_symptr _t_symptr; - AtomAnything *_any; - AtomList *_list; - void *_ext; - } *var; - }; - -protected: - - static thrid_t thrhelpid; - static thrid_t thrmsgid; - static void ThrHelper(void *); - - //! the system's thread id - static thrid_t thrid; // the system thread - -private: - static bool StartHelper(); // used in flext::Setup() - -public: - - /*! \brief Yield to other threads - \remark A call to this is only needed for systems with cooperative multitasking like MacOS<=9 - */ - static void ThrYield() { -#if FLEXT_THREADS == FLEXT_THR_POSIX - // for a preemptive system this should do nothing - sched_yield(); -#elif FLEXT_THREADS == FLEXT_THR_MP - MPYield(); -#elif FLEXT_THREADS == FLEXT_THR_WIN32 - SwitchToThread(); -#else -#error -#endif - } - - /*! \brief Query whether task is preemptive - */ - static bool IsThreadPreemptive(thrid_t t = GetThreadId()) { -#if FLEXT_THREADS == FLEXT_THR_POSIX || FLEXT_THREADS == FLEXT_THR_WIN32 - return true; -#elif FLEXT_THREADS == FLEXT_THR_MP - return MPTaskIsPreemptive(t); -#else -#error -#endif - } - - - /*! \brief Increase/Decrease priority of a thread - */ - static bool RelPriority(int dp,thrid_t ref = GetSysThreadId(),thrid_t thr = GetThreadId()); - - /*! \brief Get priority of a thread - */ - static int GetPriority(thrid_t thr = GetThreadId()); - - /*! \brief Set priority of a thread - */ - static bool SetPriority(int p,thrid_t thr = GetThreadId()); - - /*! \brief Thread mutex - \sa pthreads documentation - */ - class FLEXT_SHARE ThrMutex: - public flext_root -#if FLEXT_THREADS == FLEXT_THR_POSIX - { - public: - //! Construct thread mutex - ThrMutex() { pthread_mutex_init(&mutex,NULL); } - //! Destroy thread mutex - ~ThrMutex() { pthread_mutex_destroy(&mutex); } - - //! Lock thread mutex - bool Lock() { return pthread_mutex_lock(&mutex) == 0; } - /*! Wait to lock thread mutex. - \todo Implement! - */ -// bool WaitForLock(double tm) { return pthread_mutex_lock(&mutex) == 0; } - //! Try to lock, but don't wait - bool TryLock() { return pthread_mutex_trylock(&mutex) == 0; } - //! Unlock thread mutex - bool Unlock() { return pthread_mutex_unlock(&mutex) == 0; } - - protected: - pthread_mutex_t mutex; -// int cnt; - }; -#elif FLEXT_THREADS == FLEXT_THR_WIN32 - { - public: - //! Construct thread mutex - ThrMutex() { ::InitializeCriticalSection(&mutex); } - //! Destroy thread mutex - ~ThrMutex() { ::DeleteCriticalSection(&mutex); } - - //! Lock thread mutex - bool Lock() { ::EnterCriticalSection(&mutex); return true; } - /*! Wait to lock thread mutex. - \todo Implement! - */ -// bool WaitForLock(double tm) { return pthread_mutex_lock(&mutex) == 0; } - //! Try to lock, but don't wait - bool TryLock() { return ::TryEnterCriticalSection(&mutex) != 0; } - //! Unlock thread mutex - bool Unlock() { ::LeaveCriticalSection(&mutex); return true; } - - protected: - CRITICAL_SECTION mutex; - }; -#elif FLEXT_THREADS == FLEXT_THR_MP - { - public: - //! Construct thread mutex - ThrMutex() { MPCreateCriticalRegion(&crit); } - //! Destroy thread mutex - ~ThrMutex() { MPDeleteCriticalRegion(crit); } - - //! Lock thread mutex - bool Lock() { return MPEnterCriticalRegion(crit,kDurationForever) == noErr; } - //! Wait to lock thread mutex -// bool WaitForLock(double tm) { return MPEnterCriticalRegion(crit,tm*kDurationMicrosecond*1.e6) == noErr; } - //! Try to lock, but don't wait - bool TryLock() { return MPEnterCriticalRegion(crit,kDurationImmediate) == noErr; } - //! Unlock thread mutex - bool Unlock() { return MPExitCriticalRegion(crit) == noErr; } - - protected: - MPCriticalRegionID crit; - }; -#else -#error "Not implemented" -#endif - - /*! \brief Thread conditional - \sa pthreads documentation - */ - class FLEXT_SHARE ThrCond -#if FLEXT_THREADS == FLEXT_THR_POSIX - :public ThrMutex - { - public: - //! Construct thread conditional - ThrCond() { pthread_cond_init(&cond,NULL); } - //! Destroy thread conditional - ~ThrCond() { pthread_cond_destroy(&cond); } - - //! Wait for condition - bool Wait(); - - /*! Wait for condition (for a certain time). - \param ftime Wait time in seconds - \ret true = signalled, false = timed out - \remark If ftime = 0 this may suck away your cpu if used in a signalled loop. - \remark The time resolution of the implementation is required to be at least ms. - */ - bool TimedWait(double ftime); - - //! Signal condition - bool Signal() { return pthread_cond_signal(&cond) == 0; } - - protected: - pthread_cond_t cond; - }; -#elif FLEXT_THREADS == FLEXT_THR_WIN32 - { - public: - //! Construct thread conditional - ThrCond() { cond = CreateEvent(NULL,FALSE,FALSE,NULL); } - //! Destroy thread conditional - ~ThrCond() { CloseHandle(cond); } - - //! Wait for condition - bool Wait() { return WaitForSingleObject(cond,INFINITE) == WAIT_OBJECT_0; } - - /*! Wait for condition (for a certain time). - \param ftime Wait time in seconds - \ret true = signalled, false = timed out - \remark If ftime = 0 this may suck away your cpu if used in a signalled loop. - \remark The time resolution of the implementation is required to be at least ms. - */ - bool TimedWait(double ftime) { return WaitForSingleObject(cond,(LONG)(ftime*1000)) == WAIT_OBJECT_0; } - - //! Signal condition - bool Signal() { return SetEvent(cond) != 0; } - - protected: - HANDLE cond; - }; -#elif FLEXT_THREADS == FLEXT_THR_MP - { - public: - //! Construct thread conditional - ThrCond() { MPCreateEvent(&ev); } - //! Destroy thread conditional - ~ThrCond() { MPDeleteEvent(ev); } - - //! Wait for condition - bool Wait() { return MPWaitForEvent(ev,NULL,kDurationForever) == noErr; } - - /*! \brief Wait for condition (for a certain time). - \param time Wait time in seconds - */ - bool TimedWait(double tm) { return MPWaitForEvent(ev,NULL,tm*kDurationMicrosecond*1.e6) == noErr; } - - //! Signal condition - bool Signal() { return MPSetEvent(ev,1) == noErr; } // one bit needs to be set at least - - protected: - MPEventID ev; - }; -#else -#error "Not implemented" -#endif - - /*! \brief Add current thread to list of active threads. - \return true on success - \internal - */ - static bool PushThread(); - - /*! \brief Remove current thread from list of active threads. - \internal - */ - static void PopThread(); - - /*! \brief Launch a thread. - \param meth Thread function - \param params Parameters to pass to the thread, may be NULL if not needed. - \return Thread id on success, NULL on failure - */ - static bool LaunchThread(void (*meth)(thr_params *p),thr_params *params = NULL); - - /*! \brief Terminate a thread. - \param meth Thread function - \param params Parameters to pass to the thread, may be NULL if not needed. - \return True if at least one matching thread has been found. - \remark Terminates all running threads with matching meth and params. - \note Function doesn NOT wait for termination - */ - static bool StopThread(void (*meth)(thr_params *p),thr_params *params = NULL,bool wait = false); - -#endif // FLEXT_THREADS - -//! @} FLEXT_S_THREAD - - -// --- timer stuff ----------------------------------------------- - -/*! \defgroup FLEXT_S_TIMER Flext timer handling - @{ - - \remark The clock of the real-time system is used for most of these functions. - \remark Since this clock can be synchronized to an external clock (or e.g. the audio card) - \remark it may differ from the clock of the operating system -*/ - - /*! \brief Get time since real-time system startup. - \note This is not the time of the operating system but of the real-time system. - \note It may depend on the time source the system is synchronized to (e.g. audio sample rate). - */ - static double GetTime() - { - #if FLEXT_SYS == FLEXT_SYS_PD - return clock_gettimesince(0)*0.001; - #elif FLEXT_SYS == FLEXT_SYS_MAX - double tm; - clock_getftime(&tm); - return tm*0.001; - #else - #error Not implemented - #endif - } - - /*! \brief Get time granularity of the GetTime function. - \note This can be zero if not determined. - */ - static double GetTimeGrain() - { - #if FLEXT_SYS == FLEXT_SYS_PD - return 0; - #elif FLEXT_SYS == FLEXT_SYS_MAX - return 0.001; - #else - #error Not implemented - #endif - } - - /*! \brief Get operating system time since flext startup. - */ - static double GetOSTime(); - - /*! \brief Sleep for an amount of time. - \remark The OS clock is used for that. - \note Clearly in a real-time system this should only be used in a detached thread. - */ - static void Sleep(double s); - - /*! \brief Class encapsulating a timer with callback functionality. - This class can either be used with FLEXT_ADDTIMER or used as a base class with an overloaded virtual Work function. - */ - class FLEXT_SHARE Timer: - public flext_root - { - public: - Timer(bool queued = false); - virtual ~Timer(); - - //! Set timer callback function. - void SetCallback(void (*cb)(void *data)) { clss = NULL,cback = cb; } - //! Set timer callback function (with class pointer). - void SetCallback(FLEXT_CLASSDEF(flext_base) &th,bool (*cb)(FLEXT_CLASSDEF(flext_base) *th,void *data)) { clss = &th,cback = (void (*)(void *))cb; } - - //! Clear timer. - bool Reset(); - //! Trigger a one shot at an absolute time. - bool At(double time,void *data = NULL,bool dopast = true); - //! Trigger a one shot interval. - bool Delay(double time,void *data = NULL); - //! Trigger a periodic interval. - bool Periodic(double time,void *data = NULL); - //! Trigger immediately. - bool Now(void *data = NULL) { return Delay(0,data); } - - //! Worker function, called on every timer event. - virtual void Work(); - - protected: - static void callback(Timer *tmr); - -#if FLEXT_SYS == FLEXT_SYS_PD - t_clock *clk; -#elif FLEXT_SYS == FLEXT_SYS_MAX - static void queuefun(Timer *tmr); - t_clock *clk; - t_qelem *qelem; -#else -#error Not implemented -#endif - - const bool queued; - void (*cback)(void *data); - FLEXT_CLASSDEF(flext_base) *clss; - void *userdata; - double period; - }; - -//! @} FLEXT_S_TIMER - - //! Check if we are in DSP time - static bool InDSP() { return indsp; } - -// --- SIMD functionality ----------------------------------------------- - -/*! \defgroup FLEXT_S_SIMD Cross platform SIMD support for modern CPUs - @{ -*/ - enum simd_type { - simd_none = 0, - simd_mmx = 0x01, - simd_3dnow = 0x02, - simd_sse = 0x04, - simd_sse2 = 0x08, - simd_altivec = 0x10 - }; - - /*! Check for SIMD capabilities of the CPU */ - static unsigned long GetSIMDCapabilities(); - - - static void MulSamples(t_sample *dst,const t_sample *src,t_sample mul,int cnt); - static void MulSamples(t_sample *dst,const t_sample *src,const t_sample *mul,int cnt); - static void AddSamples(t_sample *dst,const t_sample *src,t_sample add,int cnt); - static void AddSamples(t_sample *dst,const t_sample *src,const t_sample *add,int cnt); - static void ScaleSamples(t_sample *dst,const t_sample *src,t_sample mul,t_sample add,int cnt); - static void ScaleSamples(t_sample *dst,const t_sample *src,t_sample mul,const t_sample *add,int cnt); - static void ScaleSamples(t_sample *dst,const t_sample *src,const t_sample *mul,const t_sample *add,int cnt); - -//! @} FLEXT_S_SIMD - - -//! @} FLEXT_SUPPORT - -protected: -#ifdef __MRC__ - friend class flext_obj; -#endif - - static void Setup(); - - static bool chktilde(const char *objname); - - static unsigned long simdcaps; - - static const t_symbol *sym_buffer; - static const t_symbol *sym_size; - static const t_symbol *sym_attributes; - static const t_symbol *sym_methods; - - //! flag if we are within DSP - static bool indsp; -}; - - -// gcc doesn't like these to be included into the flext class (even if static) -inline bool operator ==(const t_atom &a,const t_atom &b) { return flext::CmpAtom(a,b) == 0; } -inline bool operator !=(const t_atom &a,const t_atom &b) { return flext::CmpAtom(a,b) != 0; } -inline bool operator <(const t_atom &a,const t_atom &b) { return flext::CmpAtom(a,b) < 0; } -inline bool operator <=(const t_atom &a,const t_atom &b) { return flext::CmpAtom(a,b) <= 0; } -inline bool operator >(const t_atom &a,const t_atom &b) { return flext::CmpAtom(a,b) > 0; } -inline bool operator >=(const t_atom &a,const t_atom &b) { return flext::CmpAtom(a,b) >= 0; } - -//! @} // FLEXT_SUPPORT - -#endif diff --git a/externals/grill/flext/source/flthr.cpp b/externals/grill/flext/source/flthr.cpp deleted file mode 100644 index 36559997..00000000 --- a/externals/grill/flext/source/flthr.cpp +++ /dev/null @@ -1,646 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flthr.cpp - \brief Implementation of the flext thread functionality. -*/ - -#include "flext.h" - -#ifdef FLEXT_THREADS - -// maximum wait time for threads to finish (in ms) -#define MAXIMUMWAIT 100 - - -#include "flinternal.h" -#include "flcontainers.h" - -#include - -#if FLEXT_OSAPI == FLEXT_OSAPI_MAC_MACH || FLEXT_OSAPI == FLEXT_OSAPI_UNIX_POSIX || FLEXT_OSAPI == FLEXT_OSAPI_WIN_POSIX -#include -#include -#elif FLEXT_OS == FLEXT_OS_WIN -#include -#endif - -#if FLEXT_THREADS == FLEXT_THR_WIN32 && WINVER < 0x0500 -#error WIN32 threads need Windows SDK version >= 0x500 -#endif - -#include - -//! Thread id of system thread - will be initialized in flext::Setup -flext::thrid_t flext::thrid; - -//! Thread id of helper thread - will be initialized in flext::Setup -flext::thrid_t flext::thrhelpid; - - -//! \brief This represents an entry to the list of active method threads -class thr_entry - : public flext - , public Fifo::Cell -{ -public: - void Set(void (*m)(thr_params *),thr_params *p,thrid_t id = GetThreadId()) - { - th = p?p->cl:NULL; - meth = m,params = p,thrid = id; - shouldexit = false; -#if FLEXT_THREADS == FLEXT_THR_MP - weight = 100; // MP default weight -#endif - } - - //! \brief Check if this class represents the current thread - bool Is(thrid_t id = GetThreadId()) const { return IsThread(thrid,id); } - - FLEXT_CLASSDEF(flext_base) *This() const { return th; } - thrid_t Id() const { return thrid; } - - FLEXT_CLASSDEF(flext_base) *th; - void (*meth)(thr_params *); - thr_params *params; - thrid_t thrid; - bool shouldexit; -#if FLEXT_THREADS == FLEXT_THR_MP - int weight; -#endif -}; - -template -class ThrFinder: - public T -{ -public: - void Push(thr_entry *e) { T::Push(e); } - thr_entry *Pop() { return T::Pop(); } - - thr_entry *Find(flext::thrid_t id,bool pop = false) - { - TypedLifo qutmp; - thr_entry *fnd; - while((fnd = Pop()) && !fnd->Is(id)) qutmp.Push(fnd); - // put back entries - for(thr_entry *ti; (ti = qutmp.Pop()) != NULL; ) Push(ti); - if(fnd && !pop) Push(fnd); - return fnd; - } -}; - -static ThrFinder< PooledLifo > thrpending; -static ThrFinder< TypedLifo > thractive,thrstopped; - -//! Helper thread conditional -static flext::ThrCond *thrhelpcond = NULL; - - -static void LaunchHelper(thr_entry *e) -{ - e->thrid = flext::GetThreadId(); - e->meth(e->params); -} - -bool initialized = false; - -//! Start helper thread -bool flext::StartHelper() -{ - bool ok = false; - initialized = false; -#if FLEXT_THREADS == FLEXT_THR_POSIX - pthread_attr_t attr; - pthread_attr_init(&attr); - pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED); - - pthread_t tmp; - ok = pthread_create (&tmp,&attr,(void *(*)(void *))ThrHelper,NULL) == 0; -#elif FLEXT_THREADS == FLEXT_THR_MP - if(!MPLibraryIsLoaded()) - error("Thread library is not loaded"); - else { - MPTaskID tmp; - OSStatus ret = MPCreateTask((TaskProc)ThrHelper,NULL,0,0,0,0,0,&tmp); - ok = ret == noErr; - } -#elif FLEXT_THREADS == FLEXT_THR_WIN32 - ok = _beginthread(ThrHelper,0,NULL) >= 0; -#else -#error -#endif - if(!ok) - error("flext - Could not launch helper thread!"); - else { - // now we have to wait for thread helper to initialize - while(!initialized) Sleep(0.001); - - // we are ready for threading now! - } - -#if FLEXT_THREADS == FLEXT_THR_POSIX - pthread_attr_destroy(&attr); -#endif - return ok; -} - -//! Static helper thread function -void flext::ThrHelper(void *) -{ - thrhelpid = GetThreadId(); - -#if FLEXT_THREADS == FLEXT_THR_POSIX - // set prototype thread attributes - pthread_attr_t attr; - pthread_attr_init(&attr); - pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED); -#endif - - // set thread priority one point below normal - // so thread construction won't disturb real-time audio - RelPriority(-1); - - thrhelpcond = new ThrCond; - - initialized = true; - - // helper loop - for(;;) { - thrhelpcond->Wait(); - - // start all inactive threads - thr_entry *ti; - while((ti = thrpending.Pop()) != NULL) { - bool ok; - - #if FLEXT_THREADS == FLEXT_THR_POSIX - thrid_t dummy; - ok = pthread_create (&dummy,&attr,(void *(*)(void *))LaunchHelper,ti) == 0; - #elif FLEXT_THREADS == FLEXT_THR_MP - thrid_t dummy; - ok = MPCreateTask((TaskProc)LaunchHelper,ti,0,0,0,0,0,&dummy) == noErr; - #elif FLEXT_THREADS == FLEXT_THR_WIN32 - ok = _beginthread((void (*)(void *))LaunchHelper,0,ti) >= 0; - #else - #error - #endif - if(!ok) { - error("flext - Could not launch thread!"); - thrpending.Free(ti); ti = NULL; - } - else - // insert into queue of active threads - thractive.Push(ti); - } - } - - FLEXT_ASSERT(false); -/* - // Never reached! - - delete thrhelpcond; - thrhelpcond = NULL; - -#if FLEXT_THREADS == FLEXT_THR_POSIX - pthread_attr_destroy(&attr); -#endif -*/ -} - - -bool flext::LaunchThread(void (*meth)(thr_params *p),thr_params *p) -{ - FLEXT_ASSERT(thrhelpcond); - - // make an entry into thread list - thr_entry *e = thrpending.New(); - e->Set(meth,p); - thrpending.Push(e); - // signal thread helper - thrhelpcond->Signal(); - - return true; -} - -static bool waitforstopped(TypedFifo &qufnd,float wait = 0) -{ - TypedLifo qutmp; - - double until; - if(wait) until = flext::GetOSTime()+wait; - - for(;;) { - thr_entry *fnd = qufnd.Get(); - if(!fnd) break; // no more entries -> done! - - thr_entry *ti; - // search for entry - while((ti = thrstopped.Pop()) != NULL && ti != fnd) qutmp.Push(ti); - // put back entries - while((ti = qutmp.Pop()) != NULL) thrstopped.Push(ti); - - if(ti) { - // still in thrstopped queue - qufnd.Put(fnd); - // yield to other threads - flext::ThrYield(); - - if(wait && flext::GetOSTime() > until) - // not successful -> remaining thread are still in qufnd queue - return false; - } - } - return true; -} - -bool flext::StopThread(void (*meth)(thr_params *p),thr_params *p,bool wait) -{ - FLEXT_ASSERT(thrhelpcond); - - TypedLifo qutmp; - thr_entry *ti; - - // first search pending queue - // -------------------------- - - { - bool found = false; - while((ti = thrpending.Pop()) != NULL) - if(ti->meth == meth && ti->params == p) { - // found -> thread hasn't started -> just delete - thrpending.Free(ti); - found = true; - } - else - qutmp.Push(ti); - - // put back into pending queue (order doesn't matter) - while((ti = qutmp.Pop()) != NULL) thrpending.Push(ti); - - if(found) return true; - } - - // now search active queue - // ----------------------- - - TypedFifo qufnd; - - while((ti = thractive.Pop()) != NULL) - if(ti->meth == meth && ti->params == p) { - thrstopped.Push(ti); - thrhelpcond->Signal(); - qufnd.Put(ti); - } - else - qutmp.Push(ti); - - // put back into pending queue (order doesn't matter) - while((ti = qutmp.Pop()) != NULL) thractive.Push(ti); - - // wakeup helper thread - thrhelpcond->Signal(); - - // now wait for entries in qufnd to have vanished from thrstopped - if(wait) - return waitforstopped(qufnd); - else - return qufnd.Size() == 0; -} - -bool flext::ShouldExit() -{ - return thrstopped.Find(GetThreadId()) != NULL; -} - -bool flext::PushThread() -{ - // set priority of newly created thread one point below the system thread's - RelPriority(-1); - return true; -} - -void flext::PopThread() -{ - thrid_t id = GetThreadId(); - thr_entry *fnd = thrstopped.Find(id,true); - if(!fnd) fnd = thractive.Find(id,true); - - if(fnd) - thrpending.Free(fnd); -#ifdef FLEXT_DEBUG - else - post("flext - INTERNAL ERROR: Thread not found!"); -#endif -} - -//! Terminate all object threads -bool flext_base::StopThreads() -{ - FLEXT_ASSERT(thrhelpcond); - - TypedLifo qutmp; - thr_entry *ti; - - // first search pending queue - // -------------------------- - - while((ti = thrpending.Pop()) != NULL) - if(ti->This() == this) - // found -> thread hasn't started -> just delete - thrpending.Free(ti); - else - qutmp.Push(ti); - - // put back into pending queue (order doesn't matter) - while((ti = qutmp.Pop()) != NULL) thrpending.Push(ti); - - // now search active queue - // ----------------------- - - TypedFifo qufnd; - - while((ti = thractive.Pop()) != NULL) - if(ti->This() == this) { - thrstopped.Push(ti); - thrhelpcond->Signal(); - qufnd.Put(ti); - } - else - qutmp.Push(ti); - - // put back into pending queue (order doesn't matter) - while((ti = qutmp.Pop()) != NULL) thractive.Push(ti); - - // wakeup helper thread - thrhelpcond->Signal(); - - // now wait for entries in qufnd to have vanished from thrstopped - if(!waitforstopped(qufnd,MAXIMUMWAIT*0.001f)) { -#ifdef FLEXT_DEBUG - post("flext - doing hard thread termination"); -#endif - - // timeout -> hard termination - while((ti = qufnd.Get()) != NULL) { -#if FLEXT_THREADS == FLEXT_THR_POSIX - if(pthread_cancel(ti->thrid)) - post("%s - Thread could not be terminated!",thisName()); -#elif FLEXT_THREADS == FLEXT_THR_MP - MPTerminateTask(ti->thrid,0); - // here, we should use a task queue to check whether the task has really terminated!! -#elif FLEXT_THREADS == FLEXT_THR_WIN32 - // can't use the c library function _endthread.. memory leaks will occur - HANDLE hnd = OpenThread(THREAD_ALL_ACCESS,TRUE,ti->thrid); - TerminateThread(hnd,0); -#else -#error Not implemented -#endif - thrpending.Free(ti); - } - return false; - } - else - return true; -} - -bool flext::RelPriority(int dp,thrid_t ref,thrid_t id) -{ -#if FLEXT_THREADS == FLEXT_THR_POSIX - sched_param parm; - int policy; - if(pthread_getschedparam(ref,&policy,&parm) < 0) { -#ifdef FLEXT_DEBUG - post("flext - failed to get thread priority"); -#endif - return false; - } - else { - parm.sched_priority += dp; - - // MSVC++ 6 produces wrong code with the following lines!!! -// int schmin = sched_get_priority_min(policy); -// int schmax = sched_get_priority_max(policy); - - if(parm.sched_priority < sched_get_priority_min(policy)) { -#ifdef FLEXT_DEBUG - post("flext - minimum thread priority reached"); -#endif - parm.sched_priority = sched_get_priority_min(policy); - } - else if(parm.sched_priority > sched_get_priority_max(policy)) { -#ifdef FLEXT_DEBUG - post("flext - maximum thread priority reached"); -#endif - parm.sched_priority = sched_get_priority_max(policy); - } - - if(pthread_setschedparam(id,policy,&parm) < 0) { -#ifdef FLEXT_DEBUG - post("flext - failed to change thread priority"); -#endif - return false; - } - } - return true; - -#elif FLEXT_THREADS == FLEXT_THR_WIN32 - HANDLE href = OpenThread(THREAD_ALL_ACCESS,TRUE,ref); - HANDLE hid = OpenThread(THREAD_ALL_ACCESS,TRUE,id); - int pr = GetThreadPriority(href); - - if(pr == THREAD_PRIORITY_ERROR_RETURN) { -#ifdef FLEXT_DEBUG - post("flext - failed to get thread priority"); -#endif - return false; - } - - pr += dp; - if(pr < THREAD_PRIORITY_IDLE) { -#ifdef FLEXT_DEBUG - post("flext - minimum thread priority reached"); -#endif - pr = THREAD_PRIORITY_IDLE; - } - else if(pr > THREAD_PRIORITY_TIME_CRITICAL) { -#ifdef FLEXT_DEBUG - post("flext - maximum thread priority reached"); -#endif - pr = THREAD_PRIORITY_TIME_CRITICAL; - } - - if(SetThreadPriority(hid,pr) == 0) { -#ifdef FLEXT_DEBUG - post("flext - failed to change thread priority"); -#endif - return false; - } - return true; - -#elif FLEXT_THREADS == FLEXT_THR_MP - thr_entry *ti = thrpending.Find(id); - if(!ti) ti = thractive.Find(id); - if(ti) { - // thread found in list - int w = GetPriority(id); - if(dp < 0) w /= 1<<(-dp); - else w *= 1< 10000) { - #ifdef FLEXT_DEBUG - post("flext - maximum thread priority reached"); - #endif - w = 10000; - } - ti->weight = w; - return MPSetTaskWeight(id,w) == noErr; - } - else return false; -#else -#error -#endif -} - - -int flext::GetPriority(thrid_t id) -{ -#if FLEXT_THREADS == FLEXT_THR_POSIX - sched_param parm; - int policy; - if(pthread_getschedparam(id,&policy,&parm) < 0) { -#ifdef FLEXT_DEBUG - post("flext - failed to get parms"); -#endif - return -1; - } - return parm.sched_priority; - -#elif FLEXT_THREADS == FLEXT_THR_WIN32 - HANDLE hid = OpenThread(THREAD_ALL_ACCESS,TRUE,id); - int pr = GetThreadPriority(hid); - - if(pr == THREAD_PRIORITY_ERROR_RETURN) { -#ifdef FLEXT_DEBUG - post("flext - failed to get thread priority"); -#endif - return -1; - } - return pr; - -#elif FLEXT_THREADS == FLEXT_THR_MP - thr_entry *ti = thrpending.Find(id); - if(!ti) ti = thractive.Find(id); - return ti?ti->weight:-1; -#else -#error -#endif -} - - -bool flext::SetPriority(int p,thrid_t id) -{ -#if FLEXT_THREADS == FLEXT_THR_POSIX - sched_param parm; - int policy; - if(pthread_getschedparam(id,&policy,&parm) < 0) { -#ifdef FLEXT_DEBUG - post("flext - failed to get parms"); -#endif - return false; - } - else { - parm.sched_priority = p; - if(pthread_setschedparam(id,policy,&parm) < 0) { -#ifdef FLEXT_DEBUG - post("flext - failed to change priority"); -#endif - return false; - } - } - return true; - -#elif FLEXT_THREADS == FLEXT_THR_WIN32 - HANDLE hid = OpenThread(THREAD_ALL_ACCESS,TRUE,id); - if(SetThreadPriority(hid,p) == 0) { -#ifdef FLEXT_DEBUG - post("flext - failed to change thread priority"); -#endif - return false; - } - return true; - -#elif FLEXT_THREADS == FLEXT_THR_MP - thr_entry *ti = thrpending.Find(id); - if(!ti) ti = thractive.Find(id); - return ti && MPSetTaskWeight(id,ti->weight = p) == noErr; -#else -#error -#endif -} - - -flext_base::thr_params::thr_params(int n): cl(NULL),var(new _data[n]) {} -flext_base::thr_params::~thr_params() { if(var) delete[] var; } - -void flext_base::thr_params::set_any(const t_symbol *s,int argc,const t_atom *argv) { var[0]._any = new AtomAnything(s,argc,argv); } -void flext_base::thr_params::set_list(int argc,const t_atom *argv) { var[0]._list = new AtomList(argc,argv); } - - -#if FLEXT_THREADS == FLEXT_THR_POSIX -bool flext::ThrCond::Wait() { - Lock(); - bool ret = pthread_cond_wait(&cond,&mutex) == 0; - Unlock(); - return ret; -} - -bool flext::ThrCond::TimedWait(double ftm) -{ - timespec tm; -#if FLEXT_OS == FLEXT_OS_WIN && FLEXT_OSAPI == FLEXT_OSAPI_WIN_NATIVE -#ifdef _MSC_VER - _timeb tmb; - _ftime(&tmb); -#else - timeb tmb; - ftime(&tmb); -#endif - tm.tv_nsec = tmb.millitm*1000000; - tm.tv_sec = (long)tmb.time; -#else // POSIX -#if 0 // find out when the following is defined - clock_gettime(CLOCK_REALTIME,tm); -#else - struct timeval tp; - gettimeofday(&tp, NULL); - tm.tv_nsec = tp.tv_usec*1000; - tm.tv_sec = tp.tv_sec; -#endif -#endif - - tm.tv_nsec += (long)((ftm-(long)ftm)*1.e9); - long nns = tm.tv_nsec%1000000000; - tm.tv_sec += (long)ftm+(tm.tv_nsec-nns)/1000000000; - tm.tv_nsec = nns; - - Lock(); - bool ret = pthread_cond_timedwait(&cond,&mutex,&tm) == 0; - Unlock(); - return ret; -} -#endif - -#endif // FLEXT_THREADS diff --git a/externals/grill/flext/source/fltimer.cpp b/externals/grill/flext/source/fltimer.cpp deleted file mode 100644 index 6f13999f..00000000 --- a/externals/grill/flext/source/fltimer.cpp +++ /dev/null @@ -1,275 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file fltimer.cpp - \brief flext timer functions and classes -*/ - -#include "flext.h" - -#if FLEXT_OS == FLEXT_OS_WIN -#include -#elif FLEXT_OS == FLEXT_OS_LINUX || FLEXT_OS == FLEXT_OS_IRIX || FLEXT_OSAPI == FLEXT_OSAPI_MAC_MACH -#include -#include -#elif FLEXT_OS == FLEXT_OS_MAC -#include -#include -#endif - - -#if FLEXT_OS == FLEXT_OS_WIN -static double perffrq = 0; -#endif - -static double getstarttime(); -static double starttime = getstarttime(); - -static double getstarttime() -{ -#if FLEXT_OS == FLEXT_OS_WIN - LARGE_INTEGER frq; - if(QueryPerformanceFrequency(&frq)) perffrq = (double)frq.QuadPart; -#endif - - starttime = 0; - return flext::GetOSTime(); -} - -double flext::GetOSTime() -{ - double tm; - -#if FLEXT_OS == FLEXT_OS_WIN - LARGE_INTEGER cnt; - if(perffrq && QueryPerformanceCounter(&cnt)) - tm = cnt.QuadPart/perffrq; - else { - SYSTEMTIME systm; - FILETIME fltm; - GetSystemTime(&systm); - SystemTimeToFileTime(&systm,&fltm); - tm = ((LARGE_INTEGER *)&fltm)->QuadPart*1.e-7; - } -#elif FLEXT_OS == FLEXT_OS_LINUX || FLEXT_OS == FLEXT_OS_IRIX || FLEXT_OSAPI == FLEXT_OSAPI_MAC_MACH // POSIX - timeval tmv; - gettimeofday(&tmv,NULL); - tm = tmv.tv_sec+tmv.tv_usec*1.e-6; -#elif FLEXT_OS == FLEXT_OS_MAC // that's just for OS9 & Carbon! - UnsignedWide tick; - Microseconds(&tick); - tm = (tick.hi*((double)(1L<<((sizeof tick.lo)*4))*(double)(1L<<((sizeof tick.lo)*4)))+tick.lo)*1.e-6; -#else - #error Not implemented -#endif - return tm-starttime; -} - -void flext::Sleep(double s) -{ - if(s <= 0) return; -#if FLEXT_OS == FLEXT_OS_WIN -#if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x400 -#if 0 - LARGE_INTEGER liDueTime; - liDueTime.QuadPart = (LONGLONG)(-1.e7*s); - - // Create a waitable timer. - HANDLE hTimer = CreateWaitableTimer(NULL,TRUE,NULL); - if(hTimer) { - if(SetWaitableTimer(hTimer,&liDueTime,0,NULL,NULL,0)) - // Wait for the timer. - WaitForSingleObject(hTimer,INFINITE); // != WAIT_OBJECT_0) - else - ::Sleep((long)(s*1000.)); - CloseHandle(hTimer); - } - else -#else - LARGE_INTEGER cnt; - if(perffrq && QueryPerformanceCounter(&cnt)) { - LONGLONG dst = (LONGLONG)(cnt.QuadPart+perffrq*s); - for(;;) { - SwitchToThread(); // while waiting switch to another thread - QueryPerformanceCounter(&cnt); - if(cnt.QuadPart > dst) break; - } - } - else -#endif -#endif - // last resort.... - ::Sleep((long)(s*1000.)); -#elif FLEXT_OS == FLEXT_OS_LINUX || FLEXT_OS == FLEXT_OS_IRIX || FLEXT_OSAPI == FLEXT_OSAPI_MAC_MACH // POSIX - usleep((long)(s*1000000.)); -#elif FLEXT_OS == FLEXT_OS_MAC // that's just for OS9 & Carbon! - UnsignedWide tick; - Microseconds(&tick); - double target = tick.hi*((double)(1L<<((sizeof tick.lo)*4))*(double)(1L<<((sizeof tick.lo)*4)))+tick.lo+s*1.e6; - for(;;) { - // this is just a loop running until the time has passed - stone age (but we yield at least) - Microseconds(&tick); - if(target <= tick.hi*((double)(1L<<((sizeof tick.lo)*4))*(double)(1L<<((sizeof tick.lo)*4)))+tick.lo) break; - YieldToAnyThread(); // yielding surely reduces the timing precision (but we're civilized) - } -#else - #error Not implemented -#endif -} - -/* \param qu determines whether timed messages should be queued (low priority - only when supported by the system). -*/ -flext::Timer::Timer(bool qu): - queued(qu), - clss(NULL),userdata(NULL), - period(0) -{ -#if FLEXT_SYS == FLEXT_SYS_PD - clk = (t_clock *)clock_new(this,(t_method)callback); -#elif FLEXT_SYS == FLEXT_SYS_MAX - clk = (t_clock *)clock_new(this,(t_method)callback); - if(queued) qelem = (t_qelem *)qelem_new(this,(method)queuefun); -#else - #error Not implemented -#endif -} - -flext::Timer::~Timer() -{ -#if FLEXT_SYS == FLEXT_SYS_PD - clock_free(clk); -#elif FLEXT_SYS == FLEXT_SYS_MAX - clock_free(clk); - if(queued) ::qelem_free(qelem); -#else - #error Not implemented -#endif -} - -bool flext::Timer::Reset() -{ -#if FLEXT_SYS == FLEXT_SYS_PD - clock_unset(clk); -#elif FLEXT_SYS == FLEXT_SYS_MAX - clock_unset(clk); - if(queued) ::qelem_unset(qelem); -#else - #error Not implemented -#endif - return true; -} - -/*! \param tm absolute time (in seconds) - \param data user data - \param dopast if set events with times lying in the past will be triggered immediately, if not set they are ignored - \return true on success -*/ -bool flext::Timer::At(double tm,void *data,bool dopast) -{ - userdata = data; - period = 0; -#if FLEXT_SYS == FLEXT_SYS_PD - const double systm = clock_gettimesince(0); - double df = tm*1000.-systm; - if(dopast && df < 0) df = 0; - if(df >= 0) - clock_delay(clk,df); -#elif FLEXT_SYS == FLEXT_SYS_MAX - const double ms = tm*1000.; - double cur; - clock_getftime(&cur); - if(cur <= ms) - clock_fdelay(clk,ms-cur); - else if(dopast) // trigger timer is past - clock_fdelay(clk,0); -#else - #error Not implemented -#endif - return true; -} - -/*! \param tm relative time (in seconds) - \param data user data - \return true on success -*/ -bool flext::Timer::Delay(double tm,void *data) -{ - userdata = data; - period = 0; -#if FLEXT_SYS == FLEXT_SYS_PD - clock_delay(clk,tm*1000); -#elif FLEXT_SYS == FLEXT_SYS_MAX - clock_fdelay(clk,tm*1000.); -#else - #error Not implemented -#endif - return true; -} - -/*! \param tm relative time between periodic events (in seconds) - \param data user data - \return true on success - \note the first event will be delayed by tm -*/ -bool flext::Timer::Periodic(double tm,void *data) -{ - userdata = data; - period = tm; -#if FLEXT_SYS == FLEXT_SYS_PD - clock_delay(clk,tm*1000.); -#elif FLEXT_SYS == FLEXT_SYS_MAX - clock_fdelay(clk,tm*1000.); -#else - #error Not implemented -#endif - return true; -} - -//! \brief Callback function for system clock. -void flext::Timer::callback(Timer *tmr) -{ -#if FLEXT_SYS == FLEXT_SYS_MAX - if(tmr->queued) - qelem_set(tmr->qelem); - else -#endif - tmr->Work(); - - if(tmr->period) { - // reschedule -#if FLEXT_SYS == FLEXT_SYS_PD - clock_delay(tmr->clk,tmr->period*1000.); -#elif FLEXT_SYS == FLEXT_SYS_MAX - clock_fdelay(tmr->clk,tmr->period*1000.); -#else - #error Not implemented -#endif - } -} - -#if FLEXT_SYS == FLEXT_SYS_MAX -/*! \brief Callback function for low priority clock (for queued messages). -*/ -void flext::Timer::queuefun(Timer *tmr) { tmr->Work(); } -#endif - -/*! \brief Virtual worker function - by default it calls the user callback function. - \remark The respective callback parameter format is chosen depending on whether clss is defined or not. -*/ -void flext::Timer::Work() -{ - if(cback) { - if(clss) - ((bool (*)(flext_base *,void *))cback)(clss,userdata); - else - cback(userdata); - } -} - diff --git a/externals/grill/flext/source/flutil.cpp b/externals/grill/flext/source/flutil.cpp deleted file mode 100644 index 3437ee75..00000000 --- a/externals/grill/flext/source/flutil.cpp +++ /dev/null @@ -1,48 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flutil.cpp - \brief Implementation of the various utility functions. -*/ - -#include "flext.h" -#include - -#if FLEXT_OS == FLEXT_OS_WIN -#include -#elif FLEXT_OS == FLEXT_OS_MAC - #if FLEXT_OSAPI != FLEXT_OSAPI_MAC_MACH - #include - #else - #include - #endif -#endif - -void flext::CopyMem(void *dst,const void *src,int bytes) -{ -#if FLEXT_OS == FLEXT_OS_WIN - MoveMemory(dst,src,bytes); -#elif FLEXT_OS == FLEXT_OS_MAC - BlockMoveData(src,dst,bytes); -#else - memcpy(dst,src,bytes); -#endif -} - -void flext::ZeroMem(void *dst,int bytes) -{ -#if FLEXT_OS == FLEXT_OS_WIN - ZeroMemory(dst,bytes); -#elif FLEXT_OS == FLEXT_OS_MAC - BlockZero(dst,bytes); -#else - memset(dst,0,bytes); -#endif -} diff --git a/externals/grill/flext/source/flxlet.cpp b/externals/grill/flext/source/flxlet.cpp deleted file mode 100644 index 9fa9486a..00000000 --- a/externals/grill/flext/source/flxlet.cpp +++ /dev/null @@ -1,112 +0,0 @@ -/* - -flext - C++ layer for Max/MSP and pd (pure data) externals - -Copyright (c) 2001-2005 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -/*! \file flxlet.cpp - \brief Implementation of the variable inlet/outlet functionality. -*/ - -#include "flext.h" -#include "flinternal.h" -#include -#include - -#define MAXLETS 256 - -flext_base::xlet flext_base::inlist[MAXLETS],flext_base::outlist[MAXLETS]; - -flext_base::xlet::xlet(): tp(xlet_none),desc(NULL) {} -flext_base::xlet::~xlet() { if(desc) delete[] desc; } - -void flext_base::xlet::Desc(const char *c) -{ - if(desc) delete[] desc; - if(c) { - size_t l = strlen(c); - desc = new char[l+1]; - memcpy(desc,c,l+1); - } - else - desc = NULL; -} - -void flext_base::AddInlet(xlettype tp,int mult,const char *desc) -{ - if(UNLIKELY(incnt+mult >= MAXLETS)) - post("%s - too many inlets",thisName()); - else - for(int i = 0; i < mult; ++i) { - xlet &x = inlist[incnt++]; - x.tp = tp; - x.Desc(desc); - } -} - -void flext_base::AddOutlet(xlettype tp,int mult,const char *desc) -{ - if(UNLIKELY(outcnt+mult >= MAXLETS)) - post("%s - too many outlets",thisName()); - else - for(int i = 0; i < mult; ++i) { - xlet &x = outlist[outcnt++]; - x.tp = tp; - x.Desc(desc); - } -} - -void flext_base::DescInlet(int ix,const char *d) -{ - if(UNLIKELY(ix >= incnt)) - post("%s - inlet %i not found",thisName(),ix); - else - inlist[ix].Desc(d); -} - -void flext_base::DescOutlet(int ix,const char *d) -{ - if(UNLIKELY(ix >= incnt)) - post("%s - outlet %i not found",thisName(),ix); - else - outlist[ix].Desc(d); -} - -unsigned long flext_base::XletCode(xlettype tp,...) -{ - unsigned long code = 0; - - va_list marker; - va_start(marker,tp); - int cnt = 0; - xlettype arg = tp; - for(; arg; ++cnt) { -#ifdef FLEXT_DEBUG - if(cnt > 9) { - error("%s - Too many in/outlets defined - truncated to 9",thisName()); - break; - } -#endif - - code = code*10+(int)arg; - arg = (xlettype)va_arg(marker,int); - } - va_end(marker); - - return code; -} - -void flext_base::AddInlets(unsigned long code) -{ - for(; code; code /= 10) AddInlet((xlettype)(code%10)); -} - -void flext_base::AddOutlets(unsigned long code) -{ - for(; code; code /= 10) AddOutlet((xlettype)(code%10)); -} - diff --git a/externals/grill/flext/tutorial/Makefile.am b/externals/grill/flext/tutorial/Makefile.am deleted file mode 100644 index f3247e81..00000000 --- a/externals/grill/flext/tutorial/Makefile.am +++ /dev/null @@ -1,55 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -SUBDIRS = \ - adv1 \ - adv2 \ - adv3 \ - attr1 \ - attr2 \ - attr3 \ - bind1 \ - buffer1 \ - lib1 \ - signal1 \ - signal2 \ - simple1 \ - simple2 \ - simple3 \ - sndobj1 \ - stk1 \ - stk2 \ - thread1 \ - thread2 \ - timer1 - - -EXTRA_DIST = \ - readme.txt \ - gpl.txt \ - tutorial.sln - -DIST_SUBDIRS = pd \ - maxmsp \ - adv1 \ - adv2 \ - adv3 \ - attr1 \ - attr2 \ - attr3 \ - bind1 \ - buffer1 \ - lib1 \ - signal1 \ - signal2 \ - simple1 \ - simple2 \ - simple3 \ - sndobj1 \ - stk1 \ - stk2 \ - thread1 \ - thread2 \ - timer1 diff --git a/externals/grill/flext/tutorial/adv1/Makefile.am b/externals/grill/flext/tutorial/adv1/Makefile.am deleted file mode 100644 index d849ba2f..00000000 --- a/externals/grill/flext/tutorial/adv1/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -NAME = adv1 - -BUILT_SOURCES = main.cpp - -EXTRA_DIST = main.cpp \ - $(NAME).mcp \ - $(NAME).vcproj - -CXXFLAGS = @CXXFLAGS@ \ - @OPT_FLAGS@ \ - @INCLUDEDIR@ \ - -I../../source \ - $(DEFS) \ - -DFLEXT_SHARED - -LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \ - $(patsubst %,-framework %,$(FRAMEWORKS)) - -LIBS = @LIBS@ -lflext-pd - -FRAMEWORKS = @FRAMEWORKS@ - -TARGETDIR = @TARGETDIR@ - -TARGET =$(NAME).@EXTENSION@ - -OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES)) - -SYSDIR = @SYSDIR@ - - -# ----------------------------- targets -------------------------------- - -all-local: $(OBJECTS) - $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET) - strip --strip-unneeded ../$(TARGETDIR)/$(TARGET) - -./%.@OBJEXT@ : %.cpp - $(CXX) -c $(CXXFLAGS) $< -o $@ - -clean-local: - rm -f ../$(TARGETDIR)/$(TARGET) - rm -f ./$(OBJECTS) - -install-exec-local: - install ../$(TARGET) $(SYSDIR)extra diff --git a/externals/grill/flext/tutorial/adv1/adv1.mcp b/externals/grill/flext/tutorial/adv1/adv1.mcp deleted file mode 100755 index 7b89200a..00000000 Binary files a/externals/grill/flext/tutorial/adv1/adv1.mcp and /dev/null differ diff --git a/externals/grill/flext/tutorial/adv1/adv1.vcproj b/externals/grill/flext/tutorial/adv1/adv1.vcproj deleted file mode 100644 index 3737a2a8..00000000 --- a/externals/grill/flext/tutorial/adv1/adv1.vcproj +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/flext/tutorial/adv1/main.cpp b/externals/grill/flext/tutorial/adv1/main.cpp deleted file mode 100644 index 4150800f..00000000 --- a/externals/grill/flext/tutorial/adv1/main.cpp +++ /dev/null @@ -1,101 +0,0 @@ -/* -flext tutorial - advanced 1 - -Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -------------------------------------------------------------------------- - -This is an example of a simplified prepend object -*/ - -#include - -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 401) -#error You need at least flext version 0.4.1 -#endif - - -class adv1: - public flext_base -{ - FLEXT_HEADER(adv1,flext_base) - -public: - // constructor with variable argument list - adv1(int argc,t_atom *argv); - -protected: - void m_any(const t_symbol *s,int argc,t_atom *argv); // method which digests anything - - AtomList lst; -private: - FLEXT_CALLBACK_A(m_any); // callback for method "m_any" (with anything argument) -}; - -// instantiate the class (constructor has a variable argument list) -// note the two words in the string: prepend acts as an alias for adv1! -FLEXT_NEW_V("adv1 prepend",adv1) - - - -// constructor - -adv1::adv1(int argc,t_atom *argv) -{ - AddInAnything(); // one inlet that can receive anything - AddOutAnything(); // one outlet for anything - - // register method - FLEXT_ADDMETHOD(0,m_any); // register method "m_any" for inlet 0 - - if(argc != 0) { // check for arg count - // store arg list - lst(argc,argv); - } - else { - // no args given - post("%s - no arguments given",thisName()); - - // tell flext that the initialization was not successful... object will not live - InitProblem(); - } -} - - - -// method - -void adv1::m_any(const t_symbol *s,int argc,t_atom *argv) -{ - // reserve space for as many atoms as possibly necessary - AtomList result(lst.Count()+argc+2); - - // ix is our counter of atoms to output - int ix = 0; - - int i = 0; - if(!IsSymbol(lst[0])) { - // if first element to prepend is no symbol then make it a "list" - SetSymbol(result[ix++],sym_list); - } - // copy atoms to prepend to result list - for(; i < lst.Count(); ++i) CopyAtom(&result[ix++],&lst[i]); - - // if anything is no "list" or "float" then append it to result list - if(s != sym_list && s != sym_float -#if FLEXT_SYS == FLEXT_SYS_MAX - && s != sym_int // in Max integers are system data types -#endif - ) - SetSymbol(result[ix++],s); - - // append pending arguments to result list - for(i = 0; i < argc; ++i) CopyAtom(&result[ix++],argv+i); - - // output result list as an anything - ToOutAnything(0,GetSymbol(result[0]),ix-1,result.Atoms()+1); -} - - diff --git a/externals/grill/flext/tutorial/adv1/package.txt b/externals/grill/flext/tutorial/adv1/package.txt deleted file mode 100644 index f685a0e2..00000000 --- a/externals/grill/flext/tutorial/adv1/package.txt +++ /dev/null @@ -1,2 +0,0 @@ -NAME=adv1 -SRCS=main.cpp diff --git a/externals/grill/flext/tutorial/adv2/Makefile.am b/externals/grill/flext/tutorial/adv2/Makefile.am deleted file mode 100644 index 6daf4f32..00000000 --- a/externals/grill/flext/tutorial/adv2/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -NAME = adv2 - -BUILT_SOURCES = main.cpp - -EXTRA_DIST = main.cpp \ - $(NAME).mcp \ - $(NAME).vcproj - -CXXFLAGS = @CXXFLAGS@ \ - @OPT_FLAGS@ \ - @INCLUDEDIR@ \ - -I../../source \ - $(DEFS) \ - -DFLEXT_SHARED - -LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \ - $(patsubst %,-framework %,$(FRAMEWORKS)) - -LIBS = @LIBS@ -lflext-pd - -FRAMEWORKS = @FRAMEWORKS@ - -TARGETDIR = @TARGETDIR@ - -TARGET =$(NAME).@EXTENSION@ - -OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES)) - -SYSDIR = @SYSDIR@ - - -# ----------------------------- targets -------------------------------- - -all-local: $(OBJECTS) - $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET) - strip --strip-unneeded ../$(TARGETDIR)/$(TARGET) - -./%.@OBJEXT@ : %.cpp - $(CXX) -c $(CXXFLAGS) $< -o $@ - -clean-local: - rm -f ../$(TARGETDIR)/$(TARGET) - rm -f ./$(OBJECTS) - -install-exec-local: - install ../$(TARGET) $(SYSDIR)extra diff --git a/externals/grill/flext/tutorial/adv2/adv2.mcp b/externals/grill/flext/tutorial/adv2/adv2.mcp deleted file mode 100755 index b46cd6d9..00000000 Binary files a/externals/grill/flext/tutorial/adv2/adv2.mcp and /dev/null differ diff --git a/externals/grill/flext/tutorial/adv2/adv2.vcproj b/externals/grill/flext/tutorial/adv2/adv2.vcproj deleted file mode 100644 index e87ac448..00000000 --- a/externals/grill/flext/tutorial/adv2/adv2.vcproj +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/flext/tutorial/adv2/main.cpp b/externals/grill/flext/tutorial/adv2/main.cpp deleted file mode 100644 index 6558f5d1..00000000 --- a/externals/grill/flext/tutorial/adv2/main.cpp +++ /dev/null @@ -1,100 +0,0 @@ -/* -flext tutorial - advanced 2 - -Copyright (c) 2002-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -------------------------------------------------------------------------- - -This is an optimized version of the example "simple 3" - -It has the exact same functionality but methods are registered at class setup opposed to -object setup (in the constructor) in "simple 3" - -The advantage of this lies in the fact that the message database needs only be constructed -once for all objects, namely on creation of the first object of this class. -All objects [adv2] will share the same database, saving memory. - -*/ - -// include flext header -#include - -// check for appropriate flext version -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500) -#error You need at least flext version 0.5.0 -#endif - -class adv2: - public flext_base -{ - // flext header with a setup function called "setup" - FLEXT_HEADER_S(adv2,flext_base,setup) - -public: - adv2(); - -protected: - void m_tag(); - void m_tag_and_int(int i); - void m_sym(t_symbol *s); - - void m_help(); - -private: - // define the _static_ class setup function - static void setup(t_classid c); - - FLEXT_CALLBACK(m_tag) - FLEXT_CALLBACK_I(m_tag_and_int) - FLEXT_CALLBACK_S(m_sym) - FLEXT_CALLBACK(m_help) -}; - -// instantiate the class (constructor takes no arguments) -FLEXT_NEW("adv2",adv2) - - -adv2::adv2() -{ - // define inlets - AddInAnything(); // add inlet of type anything (index 0) -} - -void adv2::setup(t_classid c) -{ - // register methods: - // notice the naming FLEXT_CADD_METHOD* instead of FLEXT_ADD_METHOD* - // there is also an additional parameter c pointing to the class definition - FLEXT_CADDMETHOD_(c,0,"born",m_tag); - FLEXT_CADDMETHOD_(c,0,"to",m_tag); - FLEXT_CADDMETHOD_(c,0,"hula",m_tag); - FLEXT_CADDMETHOD_I(c,0,"hula",m_tag_and_int); - - FLEXT_CADDMETHOD(c,0,m_sym); - - FLEXT_CADDMETHOD_(c,0,"help",m_help); -} - -void adv2::m_tag() -{ - post("tag recognized"); -} - -void adv2::m_tag_and_int(int i) -{ - post("tag recognized (has int arg: %i)",i); -} - -void adv2::m_sym(t_symbol *s) -{ - post("symbol: %s",GetString(s)); -} - -void adv2::m_help() -{ - post("%s - example for tagged messages",thisName()); -} - - diff --git a/externals/grill/flext/tutorial/adv2/package.txt b/externals/grill/flext/tutorial/adv2/package.txt deleted file mode 100644 index 58b91927..00000000 --- a/externals/grill/flext/tutorial/adv2/package.txt +++ /dev/null @@ -1,2 +0,0 @@ -NAME=adv2 -SRCS=main.cpp diff --git a/externals/grill/flext/tutorial/adv3/Makefile.am b/externals/grill/flext/tutorial/adv3/Makefile.am deleted file mode 100644 index 6c083c80..00000000 --- a/externals/grill/flext/tutorial/adv3/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -NAME = adv3 - -BUILT_SOURCES = main.cpp - -EXTRA_DIST = main.cpp \ - $(NAME).mcp \ - $(NAME).vcproj - -CXXFLAGS = @CXXFLAGS@ \ - @OPT_FLAGS@ \ - @INCLUDEDIR@ \ - -I../../source \ - $(DEFS) \ - -DFLEXT_SHARED - -LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \ - $(patsubst %,-framework %,$(FRAMEWORKS)) - -LIBS = @LIBS@ -lflext-pd - -FRAMEWORKS = @FRAMEWORKS@ - -TARGETDIR = @TARGETDIR@ - -TARGET =$(NAME).@EXTENSION@ - -OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES)) - -SYSDIR = @SYSDIR@ - - -# ----------------------------- targets -------------------------------- - -all-local: $(OBJECTS) - $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET) - strip --strip-unneeded ../$(TARGETDIR)/$(TARGET) - -./%.@OBJEXT@ : %.cpp - $(CXX) -c $(CXXFLAGS) $< -o $@ - -clean-local: - rm -f ../$(TARGETDIR)/$(TARGET) - rm -f ./$(OBJECTS) - -install-exec-local: - install ../$(TARGET) $(SYSDIR)extra diff --git a/externals/grill/flext/tutorial/adv3/adv3.mcp b/externals/grill/flext/tutorial/adv3/adv3.mcp deleted file mode 100755 index a951fec5..00000000 Binary files a/externals/grill/flext/tutorial/adv3/adv3.mcp and /dev/null differ diff --git a/externals/grill/flext/tutorial/adv3/adv3.vcproj b/externals/grill/flext/tutorial/adv3/adv3.vcproj deleted file mode 100644 index c52e8835..00000000 --- a/externals/grill/flext/tutorial/adv3/adv3.vcproj +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/flext/tutorial/adv3/main.cpp b/externals/grill/flext/tutorial/adv3/main.cpp deleted file mode 100644 index 77f886d7..00000000 --- a/externals/grill/flext/tutorial/adv3/main.cpp +++ /dev/null @@ -1,153 +0,0 @@ -/* -flext tutorial - advanced 3 - -Copyright (c) 2002-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -------------------------------------------------------------------------- - -This is a port of Iohannes Zmölnigs "counter" example to the flext paradigm. -Find the original at http://iem.kug.ac.at/pd/externals-HOWTO/node5.html - -The functionality is exactly the same, with one exception: -flext doesn't support default arguments, hence a message "bound 1" will translate into -"bound 1 0" in the original example, but won't be recognized with flext. -This can be easily circumvented by using a method digesting a variable argument list, but -was omitted for the sake of clearness. - -Apart from that you'll notice several differences to the original C object: -- with flext, callbacks have to be declared for all registered methods -- Flext allows the full usage of integer types -- there are no real "passive" methods with flext. - These can be emulated by methods, or more flexibly, attributes (see example "attr3") -- Help symbols can't be defined that freely. This is because in Max/MSP help files always - have the name of the object with a suffix .help appended. - However with flext, a path to the respective help file may be specified -*/ - -// include flext header -#include - -// check for appropriate flext version -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 501) -#error You need at least flext version 0.5.1 -#endif - -class adv3: - public flext_base -{ - FLEXT_HEADER_S(adv3,flext_base,setup) - -public: - // constructor with no arguments - adv3(int argc,t_atom *argv): - i_step(1) - { - // --- initialize bounds and step size --- - int f1 = 0,f2 = 0; - switch(argc) { - default: - case 3: - i_step = GetInt(argv[2]); - case 2: - f2 = GetInt(argv[1]); - case 1: - f1 = GetInt(argv[0]); - case 0: - ; - } - if(argc < 2) f2 = f1; - - m_bound(f1,f2); - - i_count = i_down; - - // --- define inlets and outlets --- - AddInAnything("bang, reset, etc."); // default inlet - AddInList("bounds (2 element list)"); // inlet for bounds - AddInInt("step size"); // inlet for step size - - AddOutInt("counter"); // outlet for integer count - AddOutBang("overflow bang"); // outlet for bang - } - -protected: - - void m_reset() - { - i_count = i_down; - } - - void m_set(int argc,t_atom *argv) - { - i_count = argc?GetAInt(argv[0]):0; - } - - void m_bang() - { - int f = i_count; - i_count += i_step; - if(i_down != i_up) { - if((i_step > 0) && (i_count > i_up)) { - i_count = i_down; - ToOutBang(1); - } - else if(i_count < i_down) { - i_count = i_up; - ToOutBang(1); - } - } - ToOutInt(0,f); - } - - void m_bound(int f1,int f2) - { - i_down = f1 < f2?f1:f2; - i_up = f1 > f2?f1:f2; - } - - void m_step(int s) - { - i_step = s; - } - - int i_count,i_down,i_up,i_step; - -private: - - static void setup(t_classid c) - { - // --- set up methods (class scope) --- - - // register a bang method to the default inlet (0) - FLEXT_CADDBANG(c,0,m_bang); - - // set up tagged methods for the default inlet (0) - // the underscore _ after CADDMETHOD indicates that a message tag is used - // no, variable list or anything and all single arguments are recognized automatically, ... - FLEXT_CADDMETHOD_(c,0,"reset",m_reset); - FLEXT_CADDMETHOD_(c,0,"set",m_set); - // ..., more complex types (combinations of types) have to be specified explicitly - FLEXT_CADDMETHOD_II(c,0,"bound",m_bound); // two int arguments - - // set up methods for inlets 1 and 2 - // no message tag used - FLEXT_CADDMETHOD(c,1,m_bound); // variable arg type recognized automatically - FLEXT_CADDMETHOD(c,2,m_step); // single int arg also recognized automatically - } - - // for every registered method a callback has to be declared - FLEXT_CALLBACK(m_bang) - FLEXT_CALLBACK(m_reset) - FLEXT_CALLBACK_V(m_set) - FLEXT_CALLBACK_II(m_bound) - FLEXT_CALLBACK_I(m_step) -}; - -// instantiate the class (constructor has a variable argument list) -// let "counter" be an alternative name -// after the colon define the path/name of the help file (a path has a trailing /, a file has not) -FLEXT_NEW_V("adv3 counter,help/",adv3) - - diff --git a/externals/grill/flext/tutorial/adv3/package.txt b/externals/grill/flext/tutorial/adv3/package.txt deleted file mode 100644 index 9bd894d4..00000000 --- a/externals/grill/flext/tutorial/adv3/package.txt +++ /dev/null @@ -1,2 +0,0 @@ -NAME=adv3 -SRCS=main.cpp diff --git a/externals/grill/flext/tutorial/attr1/Makefile.am b/externals/grill/flext/tutorial/attr1/Makefile.am deleted file mode 100644 index 000b2a85..00000000 --- a/externals/grill/flext/tutorial/attr1/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -NAME = attr1 - -BUILT_SOURCES = main.cpp - -EXTRA_DIST = main.cpp \ - $(NAME).mcp \ - $(NAME).vcproj - -CXXFLAGS = @CXXFLAGS@ \ - @OPT_FLAGS@ \ - @INCLUDEDIR@ \ - -I../../source \ - $(DEFS) \ - -DFLEXT_SHARED - -LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \ - $(patsubst %,-framework %,$(FRAMEWORKS)) - -LIBS = @LIBS@ -lflext-pd - -FRAMEWORKS = @FRAMEWORKS@ - -TARGETDIR = @TARGETDIR@ - -TARGET =$(NAME).@EXTENSION@ - -OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES)) - -SYSDIR = @SYSDIR@ - - -# ----------------------------- targets -------------------------------- - -all-local: $(OBJECTS) - $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET) - strip --strip-unneeded ../$(TARGETDIR)/$(TARGET) - -./%.@OBJEXT@ : %.cpp - $(CXX) -c $(CXXFLAGS) $< -o $@ - -clean-local: - rm -f ../$(TARGETDIR)/$(TARGET) - rm -f ./$(OBJECTS) - -install-exec-local: - install ../$(TARGET) $(SYSDIR)extra diff --git a/externals/grill/flext/tutorial/attr1/attr1.mcp b/externals/grill/flext/tutorial/attr1/attr1.mcp deleted file mode 100755 index 32e4ec8f..00000000 Binary files a/externals/grill/flext/tutorial/attr1/attr1.mcp and /dev/null differ diff --git a/externals/grill/flext/tutorial/attr1/attr1.vcproj b/externals/grill/flext/tutorial/attr1/attr1.vcproj deleted file mode 100644 index e962984f..00000000 --- a/externals/grill/flext/tutorial/attr1/attr1.vcproj +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/flext/tutorial/attr1/main.cpp b/externals/grill/flext/tutorial/attr1/main.cpp deleted file mode 100644 index e4abc47b..00000000 --- a/externals/grill/flext/tutorial/attr1/main.cpp +++ /dev/null @@ -1,79 +0,0 @@ -/* -flext tutorial - attributes 1 - -Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -------------------------------------------------------------------------- - -This is an example of a simple object doing a float addition -It is a variation of the tutorial "simple 2" -*/ - - -// IMPORTANT: enable attribute processing (specify before inclusion of flext headers!) -// For clarity, this is done here, but you'd better specify it as a compiler definition -// FLEXT_ATTRIBUTES must be 0 or 1, -#define FLEXT_ATTRIBUTES 1 - - -// include flext header -#include - -// check for appropriate flext version -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 400) -#error You need at least flext version 0.4.0 -#endif - - -class attr1: - public flext_base -{ - FLEXT_HEADER(attr1,flext_base) - -public: - // constructor - attr1(); - -protected: - void m_trigger(float f); - - // stored argument - float arg; - -private: - // callback for method "m_trigger" (with one float argument) - FLEXT_CALLBACK_F(m_trigger) - - // define attribute callbacks for variable "arg" (with GET and SET properties) - FLEXT_ATTRVAR_F(arg) -}; - -// instantiate the class -FLEXT_NEW("attr1",attr1) - - -attr1::attr1(): - arg(0) // initialize argument -{ - // define inlets - AddInAnything(); // first inlet of type anything (index 0) - - // define outlets - AddOutFloat(); // one float outlet (has index 0) - - // register methods - FLEXT_ADDMETHOD(0,m_trigger); // register method (for floats) "m_trigger" for inlet 0 - - FLEXT_ADDATTR_VAR1("arg",arg); // register attribute "arg" with variable arg -} - -void attr1::m_trigger(float f) -{ - float res = arg+f; - - // output value to outlet - ToOutFloat(0,res); // (0 stands for the outlet index 0) -} - diff --git a/externals/grill/flext/tutorial/attr1/package.txt b/externals/grill/flext/tutorial/attr1/package.txt deleted file mode 100644 index 938feb56..00000000 --- a/externals/grill/flext/tutorial/attr1/package.txt +++ /dev/null @@ -1,2 +0,0 @@ -NAME=attr1 -SRCS=main.cpp diff --git a/externals/grill/flext/tutorial/attr2/Makefile.am b/externals/grill/flext/tutorial/attr2/Makefile.am deleted file mode 100644 index ed29b067..00000000 --- a/externals/grill/flext/tutorial/attr2/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -NAME = attr2 - -BUILT_SOURCES = main.cpp - -EXTRA_DIST = main.cpp \ - $(NAME).mcp \ - $(NAME).vcproj - -CXXFLAGS = @CXXFLAGS@ \ - @OPT_FLAGS@ \ - @INCLUDEDIR@ \ - -I../../source \ - $(DEFS) \ - -DFLEXT_SHARED - -LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \ - $(patsubst %,-framework %,$(FRAMEWORKS)) - -LIBS = @LIBS@ -lflext-pd - -FRAMEWORKS = @FRAMEWORKS@ - -TARGETDIR = @TARGETDIR@ - -TARGET =$(NAME).@EXTENSION@ - -OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES)) - -SYSDIR = @SYSDIR@ - - -# ----------------------------- targets -------------------------------- - -all-local: $(OBJECTS) - $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET) - strip --strip-unneeded ../$(TARGETDIR)/$(TARGET) - -./%.@OBJEXT@ : %.cpp - $(CXX) -c $(CXXFLAGS) $< -o $@ - -clean-local: - rm -f ../$(TARGETDIR)/$(TARGET) - rm -f ./$(OBJECTS) - -install-exec-local: - install ../$(TARGET) $(SYSDIR)extra diff --git a/externals/grill/flext/tutorial/attr2/attr2.mcp b/externals/grill/flext/tutorial/attr2/attr2.mcp deleted file mode 100755 index c2713289..00000000 Binary files a/externals/grill/flext/tutorial/attr2/attr2.mcp and /dev/null differ diff --git a/externals/grill/flext/tutorial/attr2/attr2.vcproj b/externals/grill/flext/tutorial/attr2/attr2.vcproj deleted file mode 100644 index 7cce4376..00000000 --- a/externals/grill/flext/tutorial/attr2/attr2.vcproj +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/flext/tutorial/attr2/main.cpp b/externals/grill/flext/tutorial/attr2/main.cpp deleted file mode 100644 index fe61f6da..00000000 --- a/externals/grill/flext/tutorial/attr2/main.cpp +++ /dev/null @@ -1,195 +0,0 @@ -/* -flext tutorial - attributes 2 - -Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -------------------------------------------------------------------------- - -This is an example of an object doing various float operations. - -Methods and attributes are registered at class level (opposed to object level in example "attr1"). -For details, see also example "adv2" - -*/ - - -// IMPORTANT: enable attribute processing (specify before inclusion of flext headers!) -// For clarity, this is done here, but you'd better specify it as a compiler definition -// FLEXT_ATTRIBUTES must be 0 or 1, -#define FLEXT_ATTRIBUTES 1 - - -// include flext header -#include - -// check for appropriate flext version -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 401) -#error You need at least flext version 0.4.1 -#endif - -#include - - -class attr2: - public flext_base -{ - // compulsory flext header with a class setup function - FLEXT_HEADER_S(attr2,flext_base,setup) - -public: - // constructor - attr2(); - -protected: - void m_trigger(float f); - - // stored argument of operation - float arg; - - // stored result - float res; - - enum operation { - op_set,op_add,op_sub,op_mul,op_div,op_pow - } op; - - static const t_symbol *sym_set,*sym_add,*sym_sub,*sym_div,*sym_mul,*sym_pow; - -private: - - static void setup(t_classid); - - // callback for method "m_trigger" (with one float argument) - FLEXT_CALLBACK_F(m_trigger) - - // define attribute callbacks for variable "arg" ("ATTRVAR" means GET and SET) - FLEXT_ATTRVAR_F(arg) - - // define attribute callbacks for variable "res" (GET only) - FLEXT_ATTRGET_F(res) - - // methods for getting/setting the operation mode - void opget(const t_symbol *&s) const; - void opset(const t_symbol *&s); - - // define attribute callbacks for variable "res" (GET only) - FLEXT_CALLGET_S(opget) - FLEXT_CALLSET_S(opset) -}; - -// instantiate the class -FLEXT_NEW("attr2",attr2) - - -// instantiate static variables -const t_symbol - *attr2::sym_set, - *attr2::sym_add,*attr2::sym_sub, - *attr2::sym_div,*attr2::sym_mul, - *attr2::sym_pow; - -void attr2::setup(t_classid c) -{ - // Upon class creation setup some symbols - // This is done only upon creation of of the first "attr2" object - sym_set = MakeSymbol("="); - sym_add = MakeSymbol("+"); - sym_sub = MakeSymbol("-"); - sym_mul = MakeSymbol("*"); - sym_div = MakeSymbol("/"); - sym_pow = MakeSymbol("**"); - - - // setup methods and attributes at class scope - - // register method (for floats) "m_trigger" for inlet 0 - FLEXT_CADDMETHOD(c,0,m_trigger); - - // register attribute "arg" with the variable "arg" - FLEXT_CADDATTR_VAR1(c,"arg",arg); - - // register attribute "result" with variable "res" - FLEXT_CADDATTR_GET(c,"result",res); - - // register attribute "op" with methods "opget" and "opset" - FLEXT_CADDATTR_VAR(c,"op",opget,opset); -} - - -attr2::attr2(): - arg(0),res(0), // initialize argument and result - op(op_set) // initialize operation -{ - // define inlets - AddInAnything(); // first inlet of type anything (index 0) - - // define outlets - AddOutFloat(); // one float outlet (has index 0) -} - -// receive an operand, do the math operation and trigger the output -void attr2::m_trigger(float f) -{ - switch(op) { - case op_set: res = f; break; - case op_add: res = f+arg; break; - case op_sub: res = f-arg; break; - case op_mul: res = f*arg; break; - case op_div: - if(arg) res = f/arg; - else { - post("%s - argument to division is 0: result set to 0",thisName()); - res = 0; - } - break; - case op_pow: res = (float)pow(f,arg); break; -#ifdef FLEXT_DEBUG - default: ERRINTERNAL(); // operation not defined -#endif - } - - // output value to outlet - ToOutFloat(0,res); // (0 stands for the outlet index 0) -} - - -// report the operation mode -void attr2::opget(const t_symbol *&s) const -{ - - switch(op) { - case op_set: s = sym_set; break; - case op_add: s = sym_add; break; - case op_sub: s = sym_sub; break; - case op_mul: s = sym_mul; break; - case op_div: s = sym_div; break; - case op_pow: s = sym_pow; break; -#ifdef FLEXT_DEBUG - default: ERRINTERNAL(); // operation not defined -#endif - } -} - -// set the operation mode -void attr2::opset(const t_symbol *&s) -{ - if(s == sym_set) - op = op_set; - else if(s == sym_add) - op = op_add; - else if(s == sym_sub) - op = op_sub; - else if(s == sym_mul) - op = op_mul; - else if(s == sym_div) - op = op_div; - else if(s == sym_pow) - op = op_pow; - else { - post("%s - operation is not defined, set to =",thisName()); - op = op_set; - } -} - diff --git a/externals/grill/flext/tutorial/attr2/package.txt b/externals/grill/flext/tutorial/attr2/package.txt deleted file mode 100644 index d028f1b4..00000000 --- a/externals/grill/flext/tutorial/attr2/package.txt +++ /dev/null @@ -1,2 +0,0 @@ -NAME=attr2 -SRCS=main.cpp diff --git a/externals/grill/flext/tutorial/attr3/Makefile.am b/externals/grill/flext/tutorial/attr3/Makefile.am deleted file mode 100644 index eb4befbb..00000000 --- a/externals/grill/flext/tutorial/attr3/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -NAME = attr3 - -BUILT_SOURCES = main.cpp - -EXTRA_DIST = main.cpp \ - $(NAME).mcp \ - $(NAME).vcproj - -CXXFLAGS = @CXXFLAGS@ \ - @OPT_FLAGS@ \ - @INCLUDEDIR@ \ - -I../../source \ - $(DEFS) \ - -DFLEXT_SHARED - -LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \ - $(patsubst %,-framework %,$(FRAMEWORKS)) - -LIBS = @LIBS@ -lflext-pd - -FRAMEWORKS = @FRAMEWORKS@ - -TARGETDIR = @TARGETDIR@ - -TARGET =$(NAME).@EXTENSION@ - -OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES)) - -SYSDIR = @SYSDIR@ - - -# ----------------------------- targets -------------------------------- - -all-local: $(OBJECTS) - $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET) - strip --strip-unneeded ../$(TARGETDIR)/$(TARGET) - -./%.@OBJEXT@ : %.cpp - $(CXX) -c $(CXXFLAGS) $< -o $@ - -clean-local: - rm -f ../$(TARGETDIR)/$(TARGET) - rm -f ./$(OBJECTS) - -install-exec-local: - install ../$(TARGET) $(SYSDIR)extra diff --git a/externals/grill/flext/tutorial/attr3/attr3.mcp b/externals/grill/flext/tutorial/attr3/attr3.mcp deleted file mode 100755 index 644c96a6..00000000 Binary files a/externals/grill/flext/tutorial/attr3/attr3.mcp and /dev/null differ diff --git a/externals/grill/flext/tutorial/attr3/attr3.vcproj b/externals/grill/flext/tutorial/attr3/attr3.vcproj deleted file mode 100644 index 0e2a0680..00000000 --- a/externals/grill/flext/tutorial/attr3/attr3.vcproj +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/flext/tutorial/attr3/main.cpp b/externals/grill/flext/tutorial/attr3/main.cpp deleted file mode 100644 index 8d37f467..00000000 --- a/externals/grill/flext/tutorial/attr3/main.cpp +++ /dev/null @@ -1,157 +0,0 @@ -/* -flext tutorial - attributes 3 - -Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -------------------------------------------------------------------------- - -This is tutorial example "advanced 3" with the usage of attributes. - -*/ - - -// IMPORTANT: enable attribute processing (specify before inclusion of flext headers!) -// For clarity, this is done here, but you'd better specify it as a compiler definition -// FLEXT_ATTRIBUTES must be 0 or 1, -#define FLEXT_ATTRIBUTES 1 - - -// include flext header -#include - - -// check for appropriate flext version -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 401) -#error You need at least flext version 0.4.1 -#endif - - -class attr3: - public flext_base -{ - FLEXT_HEADER_S(attr3,flext_base,setup) - -public: - // constructor with no arguments - // initial values are set by attributes at creation time (see help file) - attr3(): - // initialize data members - i_down(0),i_up(0),i_count(0),i_step(1) - { - // --- define inlets and outlets --- - AddInAnything(); // default inlet - AddInList(); // inlet for bounds - AddInInt(); // inlet for step size - - AddOutInt(); // outlet for integer count - AddOutBang(); // outlet for bang - } - -protected: - - void m_reset() { i_count = i_down; } - - void m_set(int argc,t_atom *argv) - { - i_count = argc?GetAInt(argv[0]):0; - } - - void m_bang() - { - int f = i_count; - i_count += i_step; - if(i_down != i_up) { - if((i_step > 0) && (i_count > i_up)) { - i_count = i_down; - ToOutBang(1); - } - else if(i_count < i_down) { - i_count = i_up; - ToOutBang(1); - } - } - ToOutInt(0,f); - } - - void m_bounds(int f1,int f2) - { - i_down = f1 < f2?f1:f2; - i_up = f1 > f2?f1:f2; - } - - void m_step(int s) { i_step = s; } - - - // setter method of bounds variables - void ms_bounds(const AtomList &l) - { - if(l.Count() == 2 && CanbeInt(l[0]) && CanbeInt(l[1])) - // if it is a two element integer list use m_bounds method - m_bounds(GetAInt(l[0]),GetAInt(l[1])); - else - // else post a warning - post("%s - 'bounds' needs two integer parameters",thisName()); - } - - // getter method of bounds variables - void mg_bounds(AtomList &l) const - { - l(2); // initialize two element list - SetInt(l[0],i_down); // set first element - SetInt(l[1],i_up); // set second element - } - - - int i_count,i_down,i_up,i_step; - -private: - - static void setup(t_classid c) - { - // --- set up methods (class scope) --- - - // register a bang method to the default inlet (0) - FLEXT_CADDBANG(c,0,m_bang); - - // set up tagged methods for the default inlet (0) - FLEXT_CADDMETHOD_(c,0,"reset",m_reset); - FLEXT_CADDMETHOD_(c,0,"set",m_set); - - // set up methods for inlets 1 and 2 - // no message tag used - FLEXT_CADDMETHOD(c,1,m_bounds); // variable arg type recognized automatically - FLEXT_CADDMETHOD(c,2,m_step); // single int arg also recognized automatically - - // --- set up attributes (class scope) --- - - // these have equally named getters and setters - // see the wrappers below - FLEXT_CADDATTR_VAR1(c,"count",i_count); - FLEXT_CADDATTR_VAR1(c,"step",i_step); - - // bounds has differently named getter and setter functions - // see the wrappers below - FLEXT_CADDATTR_VAR(c,"bounds",mg_bounds,ms_bounds); - } - - // normal method callbacks for bang and reset - FLEXT_CALLBACK(m_bang) - FLEXT_CALLBACK(m_reset) - - FLEXT_CALLBACK_V(m_set) // normal method wrapper for m_set - FLEXT_ATTRVAR_I(i_count) // wrapper functions (get and set) for integer variable i_count - - FLEXT_CALLBACK_II(m_bounds) // normal method wrapper for m_bounds - FLEXT_CALLVAR_V(mg_bounds,ms_bounds) // getter and setter method of bounds - - FLEXT_CALLBACK_I(m_step) // normal method wrapper for m_step - FLEXT_ATTRVAR_I(i_step) // wrapper functions (get and set) for integer variable i_step -}; - - -// instantiate the class (constructor takes no arguments) -FLEXT_NEW("attr3",attr3) - - diff --git a/externals/grill/flext/tutorial/attr3/package.txt b/externals/grill/flext/tutorial/attr3/package.txt deleted file mode 100644 index a87c4e1e..00000000 --- a/externals/grill/flext/tutorial/attr3/package.txt +++ /dev/null @@ -1,2 +0,0 @@ -NAME=attr3 -SRCS=main.cpp diff --git a/externals/grill/flext/tutorial/bind1/Makefile.am b/externals/grill/flext/tutorial/bind1/Makefile.am deleted file mode 100644 index 085de2d2..00000000 --- a/externals/grill/flext/tutorial/bind1/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -NAME = bind1 - -BUILT_SOURCES = main.cpp - -EXTRA_DIST = main.cpp \ - $(NAME).mcp \ - $(NAME).vcproj - -CXXFLAGS = @CXXFLAGS@ \ - @OPT_FLAGS@ \ - @INCLUDEDIR@ \ - -I../../source \ - $(DEFS) \ - -DFLEXT_SHARED - -LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \ - $(patsubst %,-framework %,$(FRAMEWORKS)) - -LIBS = @LIBS@ -lflext-pd - -FRAMEWORKS = @FRAMEWORKS@ - -TARGETDIR = @TARGETDIR@ - -TARGET =$(NAME).@EXTENSION@ - -OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES)) - -SYSDIR = @SYSDIR@ - - -# ----------------------------- targets -------------------------------- - -all-local: $(OBJECTS) - $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET) - strip --strip-unneeded ../$(TARGETDIR)/$(TARGET) - -./%.@OBJEXT@ : %.cpp - $(CXX) -c $(CXXFLAGS) $< -o $@ - -clean-local: - rm -f ../$(TARGETDIR)/$(TARGET) - rm -f ./$(OBJECTS) - -install-exec-local: - install ../$(TARGET) $(SYSDIR)extra diff --git a/externals/grill/flext/tutorial/bind1/bind1.mcp b/externals/grill/flext/tutorial/bind1/bind1.mcp deleted file mode 100755 index 750d275b..00000000 Binary files a/externals/grill/flext/tutorial/bind1/bind1.mcp and /dev/null differ diff --git a/externals/grill/flext/tutorial/bind1/bind1.vcproj b/externals/grill/flext/tutorial/bind1/bind1.vcproj deleted file mode 100644 index b0a3a2da..00000000 --- a/externals/grill/flext/tutorial/bind1/bind1.vcproj +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/flext/tutorial/bind1/main.cpp b/externals/grill/flext/tutorial/bind1/main.cpp deleted file mode 100644 index debfa68a..00000000 --- a/externals/grill/flext/tutorial/bind1/main.cpp +++ /dev/null @@ -1,134 +0,0 @@ -/* -flext tutorial - bind 1 - -Copyright (c) 2003 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -------------------------------------------------------------------------- - -This is an example of a simple object demonstrating method to symbol binding and message forwarding -*/ - - -// include flext header -#include - -// check for appropriate flext version -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 400) -#error You need at least flext version 0.4.0 -#endif - - -// define the class that stands for a pd/Max object - -class bind1: - // inherit from basic flext class - public flext_base -{ - // obligatory flext header (class name,base class name) featuring a setup function - FLEXT_HEADER_S(bind1,flext_base,setup) - -public: - // constructor with no arguments - bind1() - { - // define inlets: - // first inlet must always be of type anything (or signal for dsp objects) - AddInAnything("message inlet"); // add one inlet for any message - AddInAnything("forwarding inlet"); // add one inlet for any message - - AddOutAnything("bound message"); // output received bound message - } - - /* - no destructor necessary here: - flext frees all eventually remaining bound symbols when the object is destroyed - (but NOT the data that can be passed via the FLEXT_BINDMETHOD call!) - */ - -protected: - const t_symbol *bufname; - buffer *buf; - - // bind object - void m_bind(const t_symbol *s) - { - if(!Bind(s)) { - post("%s (%s) - Binding failed",thisName(),GetString(thisTag())); - } - } - - // unbind object - void m_unbind(const t_symbol *s) - { - if(!Unbind(s)) { - post("%s (%s) - Binding failed",thisName(),GetString(thisTag())); - } - } - - // bind method - void m_bindmethod(const t_symbol *s) - { - if(!FLEXT_BINDMETHOD(s,m_bound,NULL)) { - post("%s (%s) - Binding failed",thisName(),GetString(thisTag())); - } - } - - // unbind method - void m_unbindmethod(const t_symbol *s) - { - if(!FLEXT_UNBINDMETHOD(s)) { - post("%s (%s) - Binding failed",thisName(),GetString(thisTag())); - } - } - - // forward message - void m_forward(const t_symbol *s,int argc,const t_atom *argv) - { - Forward(s,argc,argv); - } - - // method for symbol-bound messages - void m_bound(const t_symbol *sym,int argc,const t_atom *argv,void *data) - { - ToOutAnything(0,sym,argc,argv); - } - - // method for binding test - void m_test(float value) - { - post("%s - TEST METHOD: value %f",thisName(),value); - } - -private: - static void setup(t_classid c) - { - // register methods - - FLEXT_CADDMETHOD_(c,0,"bind",m_bind); // register method "bind" for inlet 0 - FLEXT_CADDMETHOD_(c,0,"unbind",m_unbind); // register method "unbind" for inlet 0 - FLEXT_CADDMETHOD_(c,0,"bindmethod",m_bindmethod); // register method "bindmethod" for inlet 0 - FLEXT_CADDMETHOD_(c,0,"unbindmethod",m_unbindmethod); // register method "unbindmethod" for inlet 0 - - FLEXT_CADDMETHOD_(c,0,"test",m_test); // register method m_test for inlet 0 - - FLEXT_CADDMETHOD(c,1,m_forward); // register method m_forward for inlet 1 - } - - FLEXT_CALLBACK_S(m_bind) // wrapper for method m_bind (with symbol argument) - FLEXT_CALLBACK_S(m_unbind) // wrapper for method m_unbind (with symbol argument) - FLEXT_CALLBACK_S(m_bindmethod) // wrapper for method m_bindmethod (with symbol argument) - FLEXT_CALLBACK_S(m_unbindmethod) // wrapper for method m_unbindmethod (with symbol argument) - - FLEXT_CALLBACK_A(m_forward) // wrapper for method m_forward (with anything argument) - - FLEXT_CALLBACK_AX(m_bound) // wrapper for method m_bound (anything+data arguments) - FLEXT_CALLBACK_F(m_test) // wrapper for method m_test (one float argument) -}; - -// instantiate the class -FLEXT_NEW("bind1",bind1) - - - diff --git a/externals/grill/flext/tutorial/bind1/package.txt b/externals/grill/flext/tutorial/bind1/package.txt deleted file mode 100644 index c7e82359..00000000 --- a/externals/grill/flext/tutorial/bind1/package.txt +++ /dev/null @@ -1,2 +0,0 @@ -NAME=bind1 -SRCS=main.cpp diff --git a/externals/grill/flext/tutorial/buffer1/Makefile.am b/externals/grill/flext/tutorial/buffer1/Makefile.am deleted file mode 100644 index 05a9b98a..00000000 --- a/externals/grill/flext/tutorial/buffer1/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -NAME = buffer1 - -BUILT_SOURCES = main.cpp - -EXTRA_DIST = main.cpp \ - $(NAME).mcp \ - $(NAME).vcproj - -CXXFLAGS = @CXXFLAGS@ \ - @OPT_FLAGS@ \ - @INCLUDEDIR@ \ - -I../../source \ - $(DEFS) \ - -DFLEXT_SHARED - -LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \ - $(patsubst %,-framework %,$(FRAMEWORKS)) - -LIBS = @LIBS@ -lflext-pd - -FRAMEWORKS = @FRAMEWORKS@ - -TARGETDIR = @TARGETDIR@ - -TARGET =$(NAME).@EXTENSION@ - -OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES)) - -SYSDIR = @SYSDIR@ - - -# ----------------------------- targets -------------------------------- - -all-local: $(OBJECTS) - $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET) - strip --strip-unneeded ../$(TARGETDIR)/$(TARGET) - -./%.@OBJEXT@ : %.cpp - $(CXX) -c $(CXXFLAGS) $< -o $@ - -clean-local: - rm -f ../$(TARGETDIR)/$(TARGET) - rm -f ./$(OBJECTS) - -install-exec-local: - install ../$(TARGET) $(SYSDIR)extra diff --git a/externals/grill/flext/tutorial/buffer1/buffer1.mcp b/externals/grill/flext/tutorial/buffer1/buffer1.mcp deleted file mode 100755 index 31671b11..00000000 Binary files a/externals/grill/flext/tutorial/buffer1/buffer1.mcp and /dev/null differ diff --git a/externals/grill/flext/tutorial/buffer1/buffer1.vcproj b/externals/grill/flext/tutorial/buffer1/buffer1.vcproj deleted file mode 100644 index c583befb..00000000 --- a/externals/grill/flext/tutorial/buffer1/buffer1.vcproj +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/flext/tutorial/buffer1/main.cpp b/externals/grill/flext/tutorial/buffer1/main.cpp deleted file mode 100644 index 7f604c87..00000000 --- a/externals/grill/flext/tutorial/buffer1/main.cpp +++ /dev/null @@ -1,257 +0,0 @@ -/* -flext tutorial - buffer 1 - -Copyright (c) 2003 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -------------------------------------------------------------------------- - -This is an example of a simple object doing some basic buffer operation -*/ - - -// IMPORTANT: enable attribute processing (specify before inclusion of flext headers!) -// For clarity, this is done here, but you'd better specify it as a compiler definition -// FLEXT_ATTRIBUTES must be 0 or 1, -#define FLEXT_ATTRIBUTES 1 - - -// include flext header -#include - -// check for appropriate flext version -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 400) -#error You need at least flext version 0.4.0 -#endif - - -// define the class that stands for a pd/Max object - -class buffer1: - // inherit from basic flext class - public flext_base -{ - // obligatory flext header (class name,base class name) featuring a setup function - FLEXT_HEADER_S(buffer1,flext_base,setup) - -public: - // constructor with a variable argument list - buffer1(int argc,const t_atom *argv); - -protected: - const t_symbol *bufname; - buffer *buf; - - // set new buffer (or none if name omitted) - void m_set(int argc,const t_atom *argv); - - // get buffer name - void mg_buf(AtomList &lst) const; - // set buffer name (simply reuse m_set method) - inline void ms_buf(const AtomList &lst) { m_set(lst.Count(),lst.Atoms()); } - - // get buffer channels - inline void mg_chns(int &chns) { chns = Check()?buf->Channels():0; } - - // get buffer length in frames - inline void mg_frames(int &frames) { frames = Check()?buf->Frames():0; } - // set buffer length in frames - inline void ms_frames(int frames) { if(Check()) buf->Frames(frames); } - - // get sample (index channel) - void m_peek(int argc,const t_atom *argv); - // set sample (index value channel) - void m_poke(int argc,const t_atom *argv); - - // delete eventual existing buffer - void Clear(); - - // check and eventually update buffer reference (return true if valid) - bool Check(); - -private: - static void setup(t_classid c); - - FLEXT_CALLBACK_V(m_set) // wrapper for method m_set (with variable argument list) - FLEXT_CALLBACK_V(m_peek) // wrapper for method m_peek (with variable argument list) - FLEXT_CALLBACK_V(m_poke) // wrapper for method m_poke (with variable argument list) - - FLEXT_CALLVAR_V(mg_buf,ms_buf) // wrappers for attribute getter/setter mg_buffer/ms_buffer (with variable argument list) - FLEXT_CALLGET_I(mg_chns) // wrappers for attribute getter mg_chns (with integer arguments) - FLEXT_CALLVAR_I(mg_frames,ms_frames) // wrappers for attribute getter/setter mg_frames/ms_frames (with integer arguments) -}; - -// instantiate the class -FLEXT_NEW_V("buffer1",buffer1) - - -void buffer1::setup(t_classid c) -{ - // register methods and attributes - - FLEXT_CADDMETHOD_(c,0,"set",m_set); // register method "set" for inlet 0 - FLEXT_CADDMETHOD_(c,0,"peek",m_peek); // register method "peek" for inlet 0 - FLEXT_CADDMETHOD_(c,0,"poke",m_poke); // register method "poke" for inlet 0 - - FLEXT_CADDATTR_VAR(c,"buffer",mg_buf,ms_buf); // register attribute "buffer" - FLEXT_CADDATTR_GET(c,"channels",mg_chns); // register attribute "channels" - FLEXT_CADDATTR_VAR(c,"frames",mg_frames,ms_frames); // register attribute "frames" -} - - -buffer1::buffer1(int argc,const t_atom *argv): - // clear buffer - buf(NULL),bufname(NULL) -{ - // define inlets: - // first inlet must always be of type anything (or signal for dsp objects) - AddInAnything("message inlet"); // add one inlet for any message - - // peek outlet - AddOutFloat("peek value outlet"); - - // set buffer according to creation arguments - m_set(argc,argv); -} - - -void buffer1::Clear() -{ - if(buf) { - delete buf; - buf = NULL; bufname = NULL; - } -} - -bool buffer1::Check() -{ - if(!buf || !buf->Valid()) { - post("%s (%s) - no valid buffer defined",thisName(),GetString(thisTag())); - // return zero length - return false; - } - else { - if(buf->Update()) { - // buffer parameters have been updated - if(buf->Valid()) { - post("%s (%s) - updated buffer reference",thisName(),GetString(thisTag())); - return true; - } - else { - post("%s (%s) - buffer has become invalid",thisName(),GetString(thisTag())); - return false; - } - } - else - return true; - } -} - -void buffer1::m_set(int argc,const t_atom *argv) -{ - if(argc == 0) { - // argument list is empty - - // clear existing buffer - Clear(); - } - else if(argc == 1 && IsSymbol(argv[0])) { - // one symbol given as argument - - // clear existing buffer - Clear(); - // save buffer name - bufname = GetSymbol(argv[0]); - // make new reference to system buffer object - buf = new buffer(bufname); - - if(!buf->Ok()) { - post("%s (%s) - warning: buffer is currently not valid!",thisName(),GetString(thisTag())); - } - } - else { - // invalid argument list, leave buffer as is but issue error message to console - post("%s (%s) - message argument must be a symbol (or left blank)",thisName(),GetString(thisTag())); - } -} - -void buffer1::mg_buf(AtomList &lst) const -{ - if(buf) { - // buffer exists: return buffer name - lst(1); SetSymbol(lst[0],bufname); - } - else - // no buffer: set empty list - lst(0); -} - - -void buffer1::m_poke(int argc,const t_atom *argv) -{ - // if buffer is invalid bail out - if(!Check()) return; - - bool ok = true; - int ix,chn = 0; - float val; - - if(argc == 3) { - if(CanbeInt(argv[2])) - // get channel index - chn = GetAInt(argv[2]); - else - ok = false; - } - - if(ok && (argc == 2 || argc == 3) && CanbeInt(argv[0]) && CanbeFloat(argv[1])) { - // get frame index - ix = GetAInt(argv[0]); - // get value - val = GetAFloat(argv[1]); - } - else - ok = false; - - if(ok) { - // correct syntax, set sample - buf->Data()[ix] = val; - } - else - post("%s (%s) - syntax error - use \"poke index value [channel]\"",thisName(),GetString(thisTag())); -} - -void buffer1::m_peek(int argc,const t_atom *argv) -{ - // if buffer is invalid bail out - if(!Check()) return; - - bool ok = true; - int ix,chn = 0; - - if(argc == 2) { - if(CanbeInt(argv[1])) - // get channel index - chn = GetAInt(argv[1]); - else - ok = false; - } - - if(ok && (argc == 1 || argc == 2) && CanbeInt(argv[0])) { - // get frame index - ix = GetAInt(argv[0]); - } - else - ok = false; - - if(ok) - // correct syntax, output value - ToOutFloat(0,buf->Data()[ix]); - else - post("%s (%s) - syntax error - use \"peek index [channel]\"",thisName(),GetString(thisTag())); -} - - - - diff --git a/externals/grill/flext/tutorial/buffer1/package.txt b/externals/grill/flext/tutorial/buffer1/package.txt deleted file mode 100644 index 2e8fceec..00000000 --- a/externals/grill/flext/tutorial/buffer1/package.txt +++ /dev/null @@ -1,2 +0,0 @@ -NAME=buffer1 -SRCS=main.cpp diff --git a/externals/grill/flext/tutorial/build.bat b/externals/grill/flext/tutorial/build.bat deleted file mode 100644 index 431454d4..00000000 --- a/externals/grill/flext/tutorial/build.bat +++ /dev/null @@ -1,32 +0,0 @@ -@echo off - -if "%1"=="" goto syntax -if "%2"=="" goto syntax - -rem first check configuration -call ..\build.bat %1 %2 config "PKGINFO=" "NAME=tutorial" "SRCS=." -if errorlevel 1 goto end - -for /D %%i in (*) do ( - pushd %%i - if exist package.txt ( - call ..\..\build.bat %1 %2 - ) - popd -) - -goto end - -rem ----------------------------------------- -:syntax - -echo . -echo SYNTAX: build [system] [compiler] -echo system ... pd / max -echo compiler ... msvc / gcc / mingw / cygwin / bcc / icc -echo . -echo Please make sure that your make program and compiler can be accessed with the -echo system path and that all relevant environment variables are properly set. -echo . - -:end diff --git a/externals/grill/flext/tutorial/build.sh b/externals/grill/flext/tutorial/build.sh deleted file mode 100644 index 6ea19cb1..00000000 --- a/externals/grill/flext/tutorial/build.sh +++ /dev/null @@ -1,27 +0,0 @@ -#! /bin/bash - -if - [ -n "$1" -a -n "$2" ] -then - # make config first - if - bash ../build.sh $1 $2 config "PKGINFO=" "NAME=tutorial" "SRCS=\"\"" - then - for i in * ; do - if [ -e $i/package.txt ] ; then - pushd $i - bash ../../build.sh $1 $2 - popd - fi - done - fi -else - echo - echo SYNTAX: build.sh [platform] [system] [compiler] - echo system ..... pd / max - echo compiler ... msvc / gcc / mingw / cygwin / bcc / icc - echo - echo Please make sure that your make program and compiler can be accessed with the - echo system path and that all relevant environment variables are properly set. - echo -fi diff --git a/externals/grill/flext/tutorial/gpl.txt b/externals/grill/flext/tutorial/gpl.txt deleted file mode 100644 index 5ea29a7d..00000000 --- a/externals/grill/flext/tutorial/gpl.txt +++ /dev/null @@ -1,346 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) 19yy - - 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 - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. - diff --git a/externals/grill/flext/tutorial/lib1/Makefile.am b/externals/grill/flext/tutorial/lib1/Makefile.am deleted file mode 100644 index 6083365d..00000000 --- a/externals/grill/flext/tutorial/lib1/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -NAME = lib1 - -BUILT_SOURCES = main.cpp - -EXTRA_DIST = main.cpp \ - $(NAME).mcp \ - $(NAME).vcproj - -CXXFLAGS = @CXXFLAGS@ \ - @OPT_FLAGS@ \ - @INCLUDEDIR@ \ - -I../../source \ - $(DEFS) \ - -DFLEXT_SHARED - -LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \ - $(patsubst %,-framework %,$(FRAMEWORKS)) - -LIBS = @LIBS@ -lflext-pd - -FRAMEWORKS = @FRAMEWORKS@ - -TARGETDIR = @TARGETDIR@ - -TARGET =$(NAME).@EXTENSION@ - -OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES)) - -SYSDIR = @SYSDIR@ - - -# ----------------------------- targets -------------------------------- - -all-local: $(OBJECTS) - $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET) - strip --strip-unneeded ../$(TARGETDIR)/$(TARGET) - -./%.@OBJEXT@ : %.cpp - $(CXX) -c $(CXXFLAGS) $< -o $@ - -clean-local: - rm -f ../$(TARGETDIR)/$(TARGET) - rm -f ./$(OBJECTS) - -install-exec-local: - install ../$(TARGET) $(SYSDIR)extra diff --git a/externals/grill/flext/tutorial/lib1/lib1.mcp b/externals/grill/flext/tutorial/lib1/lib1.mcp deleted file mode 100755 index afa029c5..00000000 Binary files a/externals/grill/flext/tutorial/lib1/lib1.mcp and /dev/null differ diff --git a/externals/grill/flext/tutorial/lib1/lib1.vcproj b/externals/grill/flext/tutorial/lib1/lib1.vcproj deleted file mode 100644 index 3c713151..00000000 --- a/externals/grill/flext/tutorial/lib1/lib1.vcproj +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/flext/tutorial/lib1/main.cpp b/externals/grill/flext/tutorial/lib1/main.cpp deleted file mode 100644 index e90c154d..00000000 --- a/externals/grill/flext/tutorial/lib1/main.cpp +++ /dev/null @@ -1,132 +0,0 @@ -/* -flext tutorial - library 1 - -Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -------------------------------------------------------------------------- - -This is an example of an external library containing a few simple objects - -It uses attributes, so be sure that you've already worked through attr1 and attr2 - -*/ - -// Enable attribute processing -// For clarity, this is done here, but you'd better specify it as a compiler definition -#define FLEXT_ATTRIBUTES 1 - -// include flext header -#include - -// check for appropriate flext version -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 400) -#error You need at least flext version 0.4.0 -#endif - - -// ------------------------------------------------------------------------------------- -// Define the base class -// Note that you don't have to instantiate the base class (with FLEXT_NEW or variants) - -class libbase: - // inherit from basic flext class - public flext_base -{ - // obligatory flext header (class name,base class name) - FLEXT_HEADER(libbase,flext_base) - -public: - // constructor - libbase(); - -protected: - void Output(float f) const { ToOutFloat(0,f); } - - // method for floats into left inlet - virtual void m_trigger(float f) = 0; - - float arg; // argument variable -private: - FLEXT_CALLBACK_F(m_trigger) // callback for method "m_trigger" (with one float argument) - FLEXT_ATTRVAR_F(arg) -}; - -libbase::libbase(): - arg(0) // initialize argument -{ - // define inlets: - // first inlet must always by of type anything (or signal for dsp objects) - AddInAnything(); // add one inlet for any message - - // define outlets: - AddOutFloat(); // add one float outlet (has index 0) - - // register methods - FLEXT_ADDMETHOD(0,m_trigger); // register method (for float messages) "m_float" for inlet 0 - - // register attributes - FLEXT_ADDATTR_VAR1("arg",arg); // register attribute "arg" -} - - -// ------------------------------------------------------------------ -// Define the actual library objects (derived from the base class) -// These classes have an implementation of the virtual function m_trigger - -class libadd: - public libbase -{ - // obligatory flext header, inherit from libbase - FLEXT_HEADER(libadd,libbase) -public: - virtual void m_trigger(float f) { Output(f+arg); } -}; - -FLEXT_LIB("lib1.+",libadd); - - - -class libsub: - public libbase -{ - // obligatory flext header, inherit from libbase - FLEXT_HEADER(libsub,libbase) -public: - virtual void m_trigger(float f) { Output(f-arg); } -}; - -FLEXT_LIB("lib1.-",libsub); - - - -class libmul: - public libbase -{ - // obligatory flext header, inherit from libbase - FLEXT_HEADER(libmul,libbase) -public: - virtual void m_trigger(float f) { Output(f*arg); } -}; - -FLEXT_LIB("lib1.*",libmul); - - -// ------------------------------------------------ -// Do the library setup - -static void lib_setup() -{ - post("flext tutorial lib1, (C)2002 Thomas Grill"); - post("lib1: lib1.+ lib1.- lib1.*"); - post(""); - - // call the objects' setup routines - FLEXT_SETUP(libadd); - FLEXT_SETUP(libsub); - FLEXT_SETUP(libmul); -} - -// setup the library -FLEXT_LIB_SETUP(lib1,lib_setup) diff --git a/externals/grill/flext/tutorial/lib1/package.txt b/externals/grill/flext/tutorial/lib1/package.txt deleted file mode 100644 index 1a60aa12..00000000 --- a/externals/grill/flext/tutorial/lib1/package.txt +++ /dev/null @@ -1,2 +0,0 @@ -NAME=lib1 -SRCS=main.cpp diff --git a/externals/grill/flext/tutorial/license.txt b/externals/grill/flext/tutorial/license.txt deleted file mode 100644 index d48095bd..00000000 --- a/externals/grill/flext/tutorial/license.txt +++ /dev/null @@ -1,50 +0,0 @@ -flext - C++ layer for Max/MSP and pd (pure data) externals -Copyright (C) 2001-2006 Thomas Grill - -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. - -In the official flext distribution, the GNU General Public License is -in the file gpl.txt - ---------------------------------------------------------- - - OTHER COPYRIGHT NOTICES - ---------------------------------------------------------- -This package uses a lot of code from GEM by Mark Danks - -See the license text below: - ---- GEM -------------------------------------- -GEM - Graphics Environment for Multimedia -Copyright (C) 1997-2000 Mark Danks - -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. - -In the official GEM distribution, the GNU General Public License is -in the file GnuGPL.LICENSE - diff --git a/externals/grill/flext/tutorial/maxmsp/Makefile.am b/externals/grill/flext/tutorial/maxmsp/Makefile.am deleted file mode 100644 index 63406221..00000000 --- a/externals/grill/flext/tutorial/maxmsp/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -EXTRA_DIST = *.pat \ No newline at end of file diff --git a/externals/grill/flext/tutorial/maxmsp/ex-adv1.pat b/externals/grill/flext/tutorial/maxmsp/ex-adv1.pat deleted file mode 100755 index f086ab57..00000000 Binary files a/externals/grill/flext/tutorial/maxmsp/ex-adv1.pat and /dev/null differ diff --git a/externals/grill/flext/tutorial/maxmsp/ex-adv2.pat b/externals/grill/flext/tutorial/maxmsp/ex-adv2.pat deleted file mode 100755 index b6aa0065..00000000 Binary files a/externals/grill/flext/tutorial/maxmsp/ex-adv2.pat and /dev/null differ diff --git a/externals/grill/flext/tutorial/maxmsp/ex-adv3.pat b/externals/grill/flext/tutorial/maxmsp/ex-adv3.pat deleted file mode 100755 index 1f041257..00000000 Binary files a/externals/grill/flext/tutorial/maxmsp/ex-adv3.pat and /dev/null differ diff --git a/externals/grill/flext/tutorial/maxmsp/ex-attr1.pat b/externals/grill/flext/tutorial/maxmsp/ex-attr1.pat deleted file mode 100755 index 5dc46f10..00000000 Binary files a/externals/grill/flext/tutorial/maxmsp/ex-attr1.pat and /dev/null differ diff --git a/externals/grill/flext/tutorial/maxmsp/ex-attr2.pat b/externals/grill/flext/tutorial/maxmsp/ex-attr2.pat deleted file mode 100755 index aab02c92..00000000 Binary files a/externals/grill/flext/tutorial/maxmsp/ex-attr2.pat and /dev/null differ diff --git a/externals/grill/flext/tutorial/maxmsp/ex-attr3.pat b/externals/grill/flext/tutorial/maxmsp/ex-attr3.pat deleted file mode 100755 index 7ef7292f..00000000 Binary files a/externals/grill/flext/tutorial/maxmsp/ex-attr3.pat and /dev/null differ diff --git a/externals/grill/flext/tutorial/maxmsp/ex-bind1.pat b/externals/grill/flext/tutorial/maxmsp/ex-bind1.pat deleted file mode 100755 index 96421f2d..00000000 Binary files a/externals/grill/flext/tutorial/maxmsp/ex-bind1.pat and /dev/null differ diff --git a/externals/grill/flext/tutorial/maxmsp/ex-buffer1.pat b/externals/grill/flext/tutorial/maxmsp/ex-buffer1.pat deleted file mode 100755 index 979774ac..00000000 Binary files a/externals/grill/flext/tutorial/maxmsp/ex-buffer1.pat and /dev/null differ diff --git a/externals/grill/flext/tutorial/maxmsp/ex-lib1.pat b/externals/grill/flext/tutorial/maxmsp/ex-lib1.pat deleted file mode 100755 index 26f65f2b..00000000 Binary files a/externals/grill/flext/tutorial/maxmsp/ex-lib1.pat and /dev/null differ diff --git a/externals/grill/flext/tutorial/maxmsp/ex-signal1.pat b/externals/grill/flext/tutorial/maxmsp/ex-signal1.pat deleted file mode 100755 index aa50e2e3..00000000 Binary files a/externals/grill/flext/tutorial/maxmsp/ex-signal1.pat and /dev/null differ diff --git a/externals/grill/flext/tutorial/maxmsp/ex-signal2.pat b/externals/grill/flext/tutorial/maxmsp/ex-signal2.pat deleted file mode 100755 index 21c12f88..00000000 Binary files a/externals/grill/flext/tutorial/maxmsp/ex-signal2.pat and /dev/null differ diff --git a/externals/grill/flext/tutorial/maxmsp/ex-simple1.pat b/externals/grill/flext/tutorial/maxmsp/ex-simple1.pat deleted file mode 100755 index 133eefe9..00000000 Binary files a/externals/grill/flext/tutorial/maxmsp/ex-simple1.pat and /dev/null differ diff --git a/externals/grill/flext/tutorial/maxmsp/ex-simple2.pat b/externals/grill/flext/tutorial/maxmsp/ex-simple2.pat deleted file mode 100755 index acc74744..00000000 Binary files a/externals/grill/flext/tutorial/maxmsp/ex-simple2.pat and /dev/null differ diff --git a/externals/grill/flext/tutorial/maxmsp/ex-simple3.pat b/externals/grill/flext/tutorial/maxmsp/ex-simple3.pat deleted file mode 100755 index 7dda678c..00000000 Binary files a/externals/grill/flext/tutorial/maxmsp/ex-simple3.pat and /dev/null differ diff --git a/externals/grill/flext/tutorial/maxmsp/ex-thread1.pat b/externals/grill/flext/tutorial/maxmsp/ex-thread1.pat deleted file mode 100755 index cd204b4a..00000000 Binary files a/externals/grill/flext/tutorial/maxmsp/ex-thread1.pat and /dev/null differ diff --git a/externals/grill/flext/tutorial/maxmsp/ex-thread2.pat b/externals/grill/flext/tutorial/maxmsp/ex-thread2.pat deleted file mode 100755 index d68690c4..00000000 Binary files a/externals/grill/flext/tutorial/maxmsp/ex-thread2.pat and /dev/null differ diff --git a/externals/grill/flext/tutorial/maxmsp/ex-timer1.pat b/externals/grill/flext/tutorial/maxmsp/ex-timer1.pat deleted file mode 100755 index d3828986..00000000 Binary files a/externals/grill/flext/tutorial/maxmsp/ex-timer1.pat and /dev/null differ diff --git a/externals/grill/flext/tutorial/pd/Makefile.am b/externals/grill/flext/tutorial/pd/Makefile.am deleted file mode 100644 index d2f5ad4d..00000000 --- a/externals/grill/flext/tutorial/pd/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -EXTRA_DIST = *.pd \ No newline at end of file diff --git a/externals/grill/flext/tutorial/pd/ex-adv1.pd b/externals/grill/flext/tutorial/pd/ex-adv1.pd deleted file mode 100644 index 8dd10bc1..00000000 --- a/externals/grill/flext/tutorial/pd/ex-adv1.pd +++ /dev/null @@ -1,23 +0,0 @@ -#N canvas 46 58 592 347 12; -#X msg 34 92 or two words; -#X msg 169 93 2 3; -#X msg 48 291 one or two words; -#X obj 72 213 print result; -#X obj 49 172 adv1 one; -#X obj 48 263 prepend set; -#X text 162 257 you can also use "prepend"; -#X obj 16 8 cnv 15 550 40 empty empty adv1 10 22 0 24 -260818 -1 0 -; -#X text 175 28 http://grrrr.org; -#X text 199 214 watch the console!; -#X text 210 110 send the object various messages; -#X text 160 274 (if adv1 has already been loaded); -#X text 145 10 flext tutorial \, (C)2002-2006 Thomas Grill; -#X obj 66 127 nbx 3 18 0 100 0 0 empty empty empty 0 -6 0 14 -262144 --1 -1 24 256; -#X connect 0 0 4 0; -#X connect 1 0 4 0; -#X connect 4 0 3 0; -#X connect 4 0 5 0; -#X connect 5 0 2 0; -#X connect 13 0 4 0; diff --git a/externals/grill/flext/tutorial/pd/ex-adv2.pd b/externals/grill/flext/tutorial/pd/ex-adv2.pd deleted file mode 100644 index b4fa1ce4..00000000 --- a/externals/grill/flext/tutorial/pd/ex-adv2.pd +++ /dev/null @@ -1,23 +0,0 @@ -#N canvas 329 97 595 356 12; -#X msg 26 97 help; -#X msg 123 146 born; -#X msg 172 147 to; -#X msg 214 149 hula; -#X msg 228 192 hula 1; -#X text 261 150 tag without argument; -#X text 297 190 tag and argument; -#X text 72 97 print a help message; -#X obj 16 7 cnv 15 550 40 empty empty adv2 10 22 0 24 -260818 -1 0 -; -#X text 146 27 http://grrrr.org; -#X obj 148 293 adv2; -#X text 21 49 this is identical to the simple3 example; -#X text 145 9 flext tutorial \, (C)2002-2006 Thomas Grill; -#X text 345 231 symbol message; -#X msg 228 230 symbol yeah; -#X connect 0 0 10 0; -#X connect 1 0 10 0; -#X connect 2 0 10 0; -#X connect 3 0 10 0; -#X connect 4 0 10 0; -#X connect 14 0 10 0; diff --git a/externals/grill/flext/tutorial/pd/ex-adv3.pd b/externals/grill/flext/tutorial/pd/ex-adv3.pd deleted file mode 100644 index 0fdfc735..00000000 --- a/externals/grill/flext/tutorial/pd/ex-adv3.pd +++ /dev/null @@ -1,40 +0,0 @@ -#N canvas 175 139 603 361 12; -#X obj 16 7 cnv 15 550 40 empty empty adv3 10 22 0 24 -260818 -1 0 -; -#X text 174 28 http://grrrr.org; -#X obj 229 266 adv3 2 5 1; -#X obj 305 303 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 223 300 nbx 5 18 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -12 -228992 -1 -1 2 256; -#X msg 269 130 1 10; -#X msg 389 128 1; -#X msg 429 128 -1; -#X msg 469 128 2; -#X obj 88 129 bng 25 250 50 0 empty empty empty 0 -6 0 8 -258699 -1 --1; -#X msg 317 130 7 2; -#X text 325 300 end has been reached; -#X obj 157 127 nbx 5 18 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -12 -228992 -1 -1 25 256; -#X msg 158 150 set \$1; -#X text 72 108 trigger; -#X text 147 108 set counter; -#X text 264 109 set bounds; -#X text 390 106 set step size; -#X msg 80 196 reset; -#X text 83 176 reset; -#X text 174 8 flext tutorial \, (C)2002-2006 Thomas Grill; -#X text 21 49 this is a port of IOhannes Zmoelnigs "counter" example -; -#X connect 2 0 4 0; -#X connect 2 1 3 0; -#X connect 5 0 2 1; -#X connect 6 0 2 2; -#X connect 7 0 2 2; -#X connect 8 0 2 2; -#X connect 9 0 2 0; -#X connect 10 0 2 1; -#X connect 12 0 13 0; -#X connect 13 0 2 0; -#X connect 18 0 2 0; diff --git a/externals/grill/flext/tutorial/pd/ex-attr1.pd b/externals/grill/flext/tutorial/pd/ex-attr1.pd deleted file mode 100644 index 27ab0bb6..00000000 --- a/externals/grill/flext/tutorial/pd/ex-attr1.pd +++ /dev/null @@ -1,31 +0,0 @@ -#N canvas 70 150 694 465 12; -#X obj 59 296 attr1 @arg 3; -#X text 114 273 attribute as a creation arg; -#X msg 160 98 getattributes; -#X text 167 319 there is one additional outlet; -#X text 167 334 for all attribute-enabled objects; -#X obj 150 367 print; -#X msg 160 141 getarg; -#X text 12 92 trigger output; -#X msg 160 203 arg \$1; -#X text 230 191 set attribute "arg"; -#X text 295 98 query object attributes (watch console); -#X text 228 142 query attribute "arg" (watch console); -#X obj 16 8 cnv 15 550 40 empty empty attr1 10 22 0 24 -260818 -1 0 -; -#X text 175 28 http://grrrr.org; -#X text 26 388 result; -#X obj 23 114 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681 --1 -1 0 256; -#X obj 29 370 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12 --228992 -1 -1 0 256; -#X obj 161 181 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681 --1 -1 0 256; -#X text 175 10 flext tutorial \, (C)2002-2006 Thomas Grill; -#X connect 0 0 16 0; -#X connect 0 1 5 0; -#X connect 2 0 0 0; -#X connect 6 0 0 0; -#X connect 8 0 0 0; -#X connect 15 0 0 0; -#X connect 17 0 8 0; diff --git a/externals/grill/flext/tutorial/pd/ex-attr2.pd b/externals/grill/flext/tutorial/pd/ex-attr2.pd deleted file mode 100644 index 4e377725..00000000 --- a/externals/grill/flext/tutorial/pd/ex-attr2.pd +++ /dev/null @@ -1,47 +0,0 @@ -#N canvas 364 29 620 426 12; -#X msg 22 88 getattributes; -#X text 264 326 there is one additional outlet; -#X text 264 341 for all attribute-enabled objects; -#X obj 246 365 print; -#X msg 22 124 getarg; -#X text 14 218 trigger output; -#X msg 270 263 arg \$1; -#X text 159 87 query object attributes (watch console); -#X msg 95 124 getop; -#X obj 158 306 attr2 @op +; -#X text 251 124 query attributes; -#X text 332 179 set attributes; -#X msg 168 169 op +; -#X msg 167 194 op -; -#X msg 218 169 op *; -#X msg 268 193 op **; -#X msg 268 169 op =; -#X msg 218 193 op /; -#X msg 157 124 getresult; -#X obj 16 8 cnv 15 550 40 empty empty attr2 10 22 0 24 -260818 -1 0 -; -#X text 173 28 http://grrrr.org; -#X text 90 367 result; -#X obj 22 240 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681 --1 -1 0 256; -#X obj 270 242 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681 --1 -1 0 256; -#X obj 150 367 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12 --228992 -1 -1 0 256; -#X text 171 10 flext tutorial \, (C)2002-2006 Thomas Grill; -#X text 327 243 set argument; -#X connect 0 0 9 0; -#X connect 4 0 9 0; -#X connect 6 0 9 0; -#X connect 8 0 9 0; -#X connect 9 0 24 0; -#X connect 9 1 3 0; -#X connect 12 0 9 0; -#X connect 13 0 9 0; -#X connect 14 0 9 0; -#X connect 15 0 9 0; -#X connect 16 0 9 0; -#X connect 17 0 9 0; -#X connect 18 0 9 0; -#X connect 22 0 9 0; -#X connect 23 0 6 0; diff --git a/externals/grill/flext/tutorial/pd/ex-attr3.pd b/externals/grill/flext/tutorial/pd/ex-attr3.pd deleted file mode 100644 index b2832c18..00000000 --- a/externals/grill/flext/tutorial/pd/ex-attr3.pd +++ /dev/null @@ -1,60 +0,0 @@ -#N canvas 175 139 607 457 12; -#X obj 16 7 cnv 15 550 40 empty empty attr3 10 22 0 24 -260818 -1 0 -; -#X text 174 28 http://grrrr.org; -#X obj 293 364 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 196 361 nbx 5 18 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12 --228992 -1 -1 2 256; -#X msg 296 126 1 10; -#X msg 419 127 1; -#X msg 459 127 -1; -#X msg 498 127 2; -#X obj 36 128 bng 25 250 50 0 empty empty empty 0 -6 0 8 -258699 -1 --1; -#X msg 344 126 7 2; -#X obj 173 119 nbx 5 18 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12 --228992 -1 -1 20 256; -#X msg 174 142 set \$1; -#X text 20 107 trigger; -#X text 163 100 set counter; -#X text 291 105 set bounds; -#X text 420 105 set step size; -#X msg 97 135 reset; -#X text 100 115 reset; -#X text 21 64 with attributes; -#X obj 197 327 attr3 @bounds 2 5 @step 1; -#X msg 32 195 getattributes; -#X obj 392 363 print; -#X text 385 381 attributes; -#X msg 32 237 getcount; -#X msg 388 232 getstep; -#X text 22 178 list all attributes; -#X msg 32 266 count 3; -#X text 117 238 get count; -#X text 112 266 set count; -#X msg 387 259 step 3; -#X text 21 49 this is a port of IOhannes Zmoelnigs "counter" example -; -#X msg 258 234 getbounds; -#X msg 257 261 bounds 5 15; -#X text 174 8 flext tutorial \, (C)2002-2006 Thomas Grill; -#X connect 4 0 19 1; -#X connect 5 0 19 2; -#X connect 6 0 19 2; -#X connect 7 0 19 2; -#X connect 8 0 19 0; -#X connect 9 0 19 1; -#X connect 10 0 11 0; -#X connect 11 0 19 0; -#X connect 16 0 19 0; -#X connect 19 0 3 0; -#X connect 19 1 2 0; -#X connect 19 2 21 0; -#X connect 20 0 19 0; -#X connect 23 0 19 0; -#X connect 24 0 19 0; -#X connect 26 0 19 0; -#X connect 29 0 19 0; -#X connect 31 0 19 0; -#X connect 32 0 19 0; diff --git a/externals/grill/flext/tutorial/pd/ex-bind1.pd b/externals/grill/flext/tutorial/pd/ex-bind1.pd deleted file mode 100644 index 355b97e8..00000000 --- a/externals/grill/flext/tutorial/pd/ex-bind1.pd +++ /dev/null @@ -1,55 +0,0 @@ -#N canvas 405 36 626 400 12; -#X obj 15 8 cnv 15 550 40 empty empty bind1 10 22 0 24 -260818 -1 0 -; -#X text 175 28 http://grrrr.org; -#X text 175 8 flext tutorial \, (C)2002-2006 Thomas Grill; -#X obj 14 330 bind1; -#X text 48 72 bind object to symbol; -#X msg 50 94 bind sym1; -#X msg 174 94 bind sym2; -#X msg 48 126 unbind sym1; -#X msg 173 125 unbind sym2; -#X text 43 159 bind object to symbol; -#X msg 45 181 bindmethod sym1; -#X msg 47 213 unbindmethod sym1; -#X msg 227 181 bindmethod sym2; -#X msg 230 212 unbindmethod sym2; -#X obj 13 359 print OUT; -#X text 109 358 watch the console!; -#X obj 351 103 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 --262131 -1 -1 0 256; -#X obj 446 103 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 --262131 -1 -1 0 256; -#X msg 351 122 test \$1; -#X msg 446 122 test \$1; -#X msg 521 100 1 2 3; -#X obj 351 155 s sym1; -#X obj 446 155 s sym2; -#X text 349 67 send message to bound; -#X text 350 81 object or method; -#X obj 345 272 r sym3; -#X text 344 250 receive forwarded message; -#X obj 347 299 print MSG; -#X text 47 258 receive forwarded message; -#X msg 48 279 sym3 myforward; -#X obj 202 280 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 --262131 -1 -1 0 256; -#X msg 201 297 sym3 \$1; -#X connect 3 0 14 0; -#X connect 5 0 3 0; -#X connect 6 0 3 0; -#X connect 7 0 3 0; -#X connect 8 0 3 0; -#X connect 10 0 3 0; -#X connect 11 0 3 0; -#X connect 12 0 3 0; -#X connect 13 0 3 0; -#X connect 16 0 18 0; -#X connect 17 0 19 0; -#X connect 18 0 21 0; -#X connect 19 0 22 0; -#X connect 20 0 22 0; -#X connect 25 0 27 0; -#X connect 29 0 3 1; -#X connect 30 0 31 0; -#X connect 31 0 3 1; diff --git a/externals/grill/flext/tutorial/pd/ex-buffer1.pd b/externals/grill/flext/tutorial/pd/ex-buffer1.pd deleted file mode 100644 index 09d0655a..00000000 --- a/externals/grill/flext/tutorial/pd/ex-buffer1.pd +++ /dev/null @@ -1,121 +0,0 @@ -#N canvas 94 140 763 489 12; -#X obj 11 -12 cnv 15 550 40 empty empty buffer1 10 22 0 24 -260818 --1 0; -#X text 178 8 http://grrrr.org; -#X text 178 -12 flext tutorial \, (C)2002-2006 Thomas Grill; -#N canvas 0 22 450 300 graph1 0; -#X array buf1 1000 float 1; -#A 0 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 --0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 --0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 --0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 --0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 --0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 --0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 -0.0142856 --0.0142856 -0.0142856 -0.0114285 -0.00857134 -0.00571423 -0.00285711 -5.58794e-10 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 --0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 --0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 --0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 --0 -0 0.51 0.51 0 0 0 0 0 0 0 0 0 0 0 0 0 0.51 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 -0 -0 0.51 0.51 -5.58794e-10 0.00285711 0.00571423 0.00857134 -0.0114285 0.0142856 0.0166665 0.0190474 0.0214283 0.0238093 0.0261902 -0.0285711 0.030952 0.033333 0.0357139 0.51 0.0404758 0.51 0.0452376 -0.0476185 0.0499995 0.0523804 0.0547613 0.0571422 0.0595232 0.0619041 -0.064285 0.0666659 0.0690469 0.51 0.0738087 0.0761897 0.0785706 0.0809515 -0.0833325 0.0857134 0.0857134 0.0857134 0.0857134 0.0857134 0.0857134 -0.51 0.0799992 0.51 0.0742849 0.0571423 0 0 0 0 0.51 0 0 0 0 0 0 0 -0 0 0.51 0 0 0 0 0 0.51 0 0 0 0 0 0.51 0 0.51 0 0 0.51 0 0 0.51 0 0.51 -0 0.51 0.51 0 0.51 0.51 0 0 0 0 0 0.51 0 0 0 0 0 0.51 0 0 0.51 0 0 -0 0 0 0.51 0 0 0 0 0 0 0 0.51 0 0 0 0 0 0 0 0.51 0 0 0 0 0.51 0 0 0 -0 0 0 0.51 0 0 0 0 0 0 0 0 0 0 0.51 0 0 0 0 0 0 0 0 0.51 0.51 0 0 0.51 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0.00357139 0.00714278 0.0107142 -0.0142856 0.0171427 0.0199998 0.0228569 0.025714 0.0285711 0.0314283 -0.0342854 0.0371425 0.0399996 0.0428567 0.0457138 0.0485709 0.051428 -0.0542852 0.0571423 0.0599994 0.0628565 0.0657136 0.0685707 0.0714278 -0.0728564 0.0742849 0.0757135 0.077142 0.0785706 0.0799991 0.0814277 -0.0828563 0.0842848 0.0857134 0.0857134 0.0857134 0.0857134 0.0857134 -0.0857134 0.0857134 0.0857134 0.0857134 0.0857134 0.0857134 0.0857134 -0.0857134 0.0857134 0.0857134 0.0857134 0.0828563 0.0799992 0.077142 -0.0742849 0.0714278 0.0714278 0.0714278 0.0714278 0.0714278 0.0714278 -0.0714278 0.0714278 0.0714278 0.0714278 0.0714278 0.0685707 0.0657136 -0.0628565 0.0599994 0.0571423 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0; -#X coords 0 1 999 -1 200 140 1; -#X restore 539 49 graph; -#N canvas 0 22 450 300 graph1 0; -#X array buf2 300 float 1; -#A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; -#X coords 0 1 299 -1 200 140 1; -#X restore 539 194 graph; -#X obj 24 406 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 --262131 -1 -1 1.06 256; -#X text 19 423 peek value; -#X obj 137 400 print A; -#X text 137 421 print attributes to the console; -#X msg 41 46 set; -#X msg 65 98 set buf1; -#X msg 154 98 buffer buf2; -#X msg 65 129 getbuffer; -#X text 164 129 query current buffer; -#X text 73 43 set no buffer; -#X text 68 78 set buffer; -#X msg 84 185 frames 1000; -#X msg 85 213 getframes; -#X text 199 185 set buffer length; -#X text 184 213 query buffer length; -#X msg 16 265 getchannels; -#X text 23 290 always 1 for PD!; -#X obj 231 281 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 --262131 -1 -1 13 256; -#X obj 336 281 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 --262131 -1 -1 91 256; -#X obj 394 281 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 --262131 -1 -1 0.51 256; -#X obj 334 304 pack 0 0; -#X msg 335 331 poke \$1 \$2 0; -#X msg 230 331 peek \$1 0; -#X text 230 258 get sample; -#X text 338 258 set sample; -#X text 348 363 the change is not immediately seen on PD; -#X text 350 376 (you'll have to draw in the window); -#X obj 24 368 buffer1; -#X connect 9 0 32 0; -#X connect 10 0 32 0; -#X connect 11 0 32 0; -#X connect 12 0 32 0; -#X connect 16 0 32 0; -#X connect 17 0 32 0; -#X connect 20 0 32 0; -#X connect 22 0 27 0; -#X connect 23 0 25 0; -#X connect 24 0 25 1; -#X connect 25 0 26 0; -#X connect 26 0 32 0; -#X connect 27 0 32 0; -#X connect 32 0 5 0; -#X connect 32 1 7 0; diff --git a/externals/grill/flext/tutorial/pd/ex-lib1.pd b/externals/grill/flext/tutorial/pd/ex-lib1.pd deleted file mode 100644 index 1f1390b2..00000000 --- a/externals/grill/flext/tutorial/pd/ex-lib1.pd +++ /dev/null @@ -1,51 +0,0 @@ -#N canvas 120 205 580 295 12; -#X msg 102 172 arg \$1; -#X obj 30 208 lib1.+ @arg 3; -#X text 101 124 set arg; -#X msg 285 171 arg \$1; -#X text 284 125 set arg; -#X msg 472 174 arg \$1; -#X text 471 128 set arg; -#X obj 392 212 lib1.* @arg 2; -#X obj 210 210 lib1.- @arg 7; -#X text 25 123 trigger; -#X text 207 127 trigger; -#X text 391 128 trigger; -#X obj 16 8 cnv 15 550 40 empty empty lib1 10 22 0 24 -260818 -1 0 -; -#X text 173 28 http://grrrr.org; -#X obj 30 147 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681 --1 -1 0 256; -#X obj 101 146 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681 --1 -1 0 256; -#X obj 212 147 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681 --1 -1 0 256; -#X obj 284 149 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681 --1 -1 0 256; -#X obj 394 149 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681 --1 -1 0 256; -#X obj 472 152 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681 --1 -1 0 256; -#X obj 30 241 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12 --228992 -1 -1 0 256; -#X obj 210 241 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12 --228992 -1 -1 0 256; -#X obj 392 241 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12 --228992 -1 -1 0 256; -#X text 25 56 In order to use the objects the library must have been -; -#X text 26 74 loaded at PD startup (with the "-lib lib1" argument) -; -#X text 173 8 flext tutorial \, (C)2002-2006 Thomas Grill; -#X connect 0 0 1 0; -#X connect 1 0 20 0; -#X connect 3 0 8 0; -#X connect 5 0 7 0; -#X connect 7 0 22 0; -#X connect 8 0 21 0; -#X connect 14 0 1 0; -#X connect 15 0 0 0; -#X connect 16 0 8 0; -#X connect 17 0 3 0; -#X connect 18 0 7 0; -#X connect 19 0 5 0; diff --git a/externals/grill/flext/tutorial/pd/ex-signal1.pd b/externals/grill/flext/tutorial/pd/ex-signal1.pd deleted file mode 100644 index 45b9a94c..00000000 --- a/externals/grill/flext/tutorial/pd/ex-signal1.pd +++ /dev/null @@ -1,27 +0,0 @@ -#N canvas 335 232 586 291 12; -#X obj 250 121 hsl 128 15 0 1 0 0 empty empty empty 20 8 0 8 -261681 --1 -1 0 1; -#X obj 28 121 osc~ 440; -#X obj 87 248 dac~; -#X obj 123 121 osc~ 880; -#X obj 97 175 signal1~; -#X obj 16 8 cnv 15 550 40 empty empty signal1 10 22 0 24 -260818 -1 -0; -#X text 175 28 http://grrrr.org; -#X text 342 138 control the mixing; -#X text 166 210 adjust the volume; -#X obj 97 209 *~ 0.5; -#X text 25 102 source 1; -#X text 125 101 source 2; -#X obj 248 143 nbx 5 16 0 1 0 0 empty empty empty 0 -6 0 12 -261681 --1 -1 0 256; -#X text 175 8 flext tutorial \, (C)2002-2006 Thomas Grill; -#X text 21 51 this is a port of IOhannes Zmoelnigs pan~ example; -#X text 21 66 done by Frank Barknecht; -#X connect 0 0 12 0; -#X connect 1 0 4 0; -#X connect 3 0 4 1; -#X connect 4 0 9 0; -#X connect 9 0 2 0; -#X connect 9 0 2 1; -#X connect 12 0 4 2; diff --git a/externals/grill/flext/tutorial/pd/ex-signal2.pd b/externals/grill/flext/tutorial/pd/ex-signal2.pd deleted file mode 100644 index 750828a0..00000000 --- a/externals/grill/flext/tutorial/pd/ex-signal2.pd +++ /dev/null @@ -1,25 +0,0 @@ -#N canvas 41 125 585 250 12; -#X obj 109 126 signal2~; -#X obj 104 81 bng 25 250 50 0 empty empty empty 0 -6 0 8 -261681 -1 --1; -#X text 136 87 bang to get audio system parameters; -#X text 261 205 channels in and out; -#X obj 16 8 cnv 15 550 40 empty empty signal2 10 22 0 24 -260818 -1 -0; -#X text 175 28 http://grrrr.org; -#X obj 66 184 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -12 -228992 -1 -1 0 256; -#X obj 158 184 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -12 -228992 -1 -1 0 256; -#X obj 261 184 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -12 -228992 -1 -1 0 256; -#X obj 353 184 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -12 -228992 -1 -1 0 256; -#X text 40 204 samplerate; -#X text 156 204 blocksize; -#X text 173 10 flext tutorial \, (C)2002-2006 Thomas Grill; -#X connect 0 0 6 0; -#X connect 0 1 7 0; -#X connect 0 2 8 0; -#X connect 0 3 9 0; -#X connect 1 0 0 0; diff --git a/externals/grill/flext/tutorial/pd/ex-simple1.pd b/externals/grill/flext/tutorial/pd/ex-simple1.pd deleted file mode 100644 index 271afd0b..00000000 --- a/externals/grill/flext/tutorial/pd/ex-simple1.pd +++ /dev/null @@ -1,12 +0,0 @@ -#N canvas 85 178 594 230 12; -#X obj 40 129 simple1; -#X obj 16 8 cnv 15 550 40 empty empty simple1 10 22 0 24 -260818 -1 -0; -#X text 167 30 http://grrrr.org; -#X obj 41 94 nbx 4 16 -999 999 0 0 empty empty input 0 -6 0 12 -261681 --1 -1 35 256; -#X obj 39 171 nbx 7 16 -1e+37 1e+37 0 0 empty empty inverse 0 -6 0 -12 -228992 -1 -1 0.0285714 256; -#X text 167 10 flext tutorial \, (C)2002-2006 Thomas Grill; -#X connect 0 0 4 0; -#X connect 3 0 0 0; diff --git a/externals/grill/flext/tutorial/pd/ex-simple2.pd b/externals/grill/flext/tutorial/pd/ex-simple2.pd deleted file mode 100644 index c379cd5b..00000000 --- a/externals/grill/flext/tutorial/pd/ex-simple2.pd +++ /dev/null @@ -1,16 +0,0 @@ -#N canvas 72 265 599 317 12; -#X obj 42 196 simple2 3; -#X text 121 177 default argument; -#X obj 16 8 cnv 15 550 40 empty empty simple2 10 22 0 24 -260818 -1 -0; -#X text 167 29 http://grrrr.org; -#X obj 41 110 nbx 4 16 -999 999 0 0 empty empty triggering 0 -6 0 12 --261681 -1 -1 0 256; -#X obj 148 110 nbx 4 16 -999 999 0 0 empty empty non-triggering 0 -6 -0 12 -261681 -1 -1 0 256; -#X obj 42 239 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12 --228992 -1 -1 0 256; -#X text 167 11 flext tutorial \, (C)2002-2006 Thomas Grill; -#X connect 0 0 6 0; -#X connect 4 0 0 0; -#X connect 5 0 0 1; diff --git a/externals/grill/flext/tutorial/pd/ex-simple3.pd b/externals/grill/flext/tutorial/pd/ex-simple3.pd deleted file mode 100644 index fbdafca5..00000000 --- a/externals/grill/flext/tutorial/pd/ex-simple3.pd +++ /dev/null @@ -1,22 +0,0 @@ -#N canvas 329 97 593 354 12; -#X msg 22 87 help; -#X msg 119 136 born; -#X msg 168 137 to; -#X msg 210 139 hula; -#X msg 224 182 hula 1; -#X obj 144 283 simple3; -#X text 257 140 tag without argument; -#X text 293 180 tag and argument; -#X text 68 87 print a help message; -#X obj 16 8 cnv 15 550 40 empty empty simple3 10 22 0 24 -260818 -1 -0; -#X text 174 28 http://grrrr.org; -#X text 174 10 flext tutorial \, (C)2002-2006 Thomas Grill; -#X msg 224 220 symbol yeah; -#X text 350 219 symbol message; -#X connect 0 0 5 0; -#X connect 1 0 5 0; -#X connect 2 0 5 0; -#X connect 3 0 5 0; -#X connect 4 0 5 0; -#X connect 12 0 5 0; diff --git a/externals/grill/flext/tutorial/pd/ex-sndobj1.pd b/externals/grill/flext/tutorial/pd/ex-sndobj1.pd deleted file mode 100644 index 01ee937c..00000000 --- a/externals/grill/flext/tutorial/pd/ex-sndobj1.pd +++ /dev/null @@ -1,34 +0,0 @@ -#N canvas 405 36 584 392 12; -#X obj 56 348 dac~; -#X obj 15 8 cnv 15 550 40 empty empty sndobj1 10 22 0 24 -260818 -1 -0; -#X text 175 28 http://grrrr.org; -#X text 170 285 adjust the volume; -#X text 35 97 source; -#X obj 171 268 hsl 128 15 0.01 1 1 0 empty empty empty -2 -6 0 8 -261681 --1 -1 0 1; -#X msg 160 148 shL \$1; -#X msg 218 148 shR \$1; -#X obj 244 84 hsl 128 15 0.5 2 1 0 empty empty empty -2 -6 0 8 -261681 --1 -1 0 1; -#X obj 244 104 hsl 128 15 0.5 2 1 0 empty empty empty -2 -6 0 8 -261681 --1 -1 0 1; -#X text 149 82 pitch left; -#X text 149 102 pitch right; -#X obj 31 119 osc~ 442; -#X obj 32 226 sndobj1~ @shL 0.7 @shR 1.2; -#X obj 32 304 *~ 0.3; -#X obj 91 304 *~ 0.3; -#X text 175 8 flext tutorial \, (C)2002-2006 Thomas Grill; -#X connect 5 0 14 1; -#X connect 5 0 15 1; -#X connect 6 0 13 0; -#X connect 7 0 13 0; -#X connect 8 0 6 0; -#X connect 9 0 7 0; -#X connect 12 0 13 0; -#X connect 12 0 13 1; -#X connect 13 0 14 0; -#X connect 13 1 15 0; -#X connect 14 0 0 0; -#X connect 15 0 0 1; diff --git a/externals/grill/flext/tutorial/pd/ex-stk1.pd b/externals/grill/flext/tutorial/pd/ex-stk1.pd deleted file mode 100644 index b61b9833..00000000 --- a/externals/grill/flext/tutorial/pd/ex-stk1.pd +++ /dev/null @@ -1,15 +0,0 @@ -#N canvas 237 9 577 257 12; -#X obj 66 186 dac~; -#X obj 15 8 cnv 15 550 40 empty empty stk1 10 22 0 24 -260818 -1 0 -; -#X text 175 28 http://grrrr.org; -#X text 184 118 adjust the volume; -#X obj 185 101 hsl 128 15 0.01 1 1 0 empty empty empty -2 -6 0 8 -261681 --1 -1 0 1; -#X obj 76 132 *~ 0.3; -#X text 175 8 flext tutorial \, (C)2002-2006 Thomas Grill; -#X obj 76 86 stk1~; -#X connect 4 0 5 1; -#X connect 5 0 0 0; -#X connect 5 0 0 1; -#X connect 7 0 5 0; diff --git a/externals/grill/flext/tutorial/pd/ex-stk2.pd b/externals/grill/flext/tutorial/pd/ex-stk2.pd deleted file mode 100644 index 6ce56330..00000000 --- a/externals/grill/flext/tutorial/pd/ex-stk2.pd +++ /dev/null @@ -1,32 +0,0 @@ -#N canvas 245 28 594 364 12; -#X obj 68 318 dac~; -#X obj 15 8 cnv 15 550 40 empty empty stk2 10 22 0 24 -260818 -1 0 -; -#X text 175 28 http://grrrr.org; -#X text 193 229 adjust the volume; -#X obj 194 212 hsl 128 15 0.01 1 1 0 empty empty empty -2 -6 0 8 -261681 --1 -1 0 1; -#X obj 68 263 *~ 0.3; -#X text 175 8 flext tutorial \, (C)2002-2006 Thomas Grill; -#X obj 68 215 stk2~; -#X obj 125 263 *~ 0.3; -#X msg 183 139 shL \$1; -#X msg 241 139 shR \$1; -#X obj 267 77 hsl 128 15 0.5 2 1 0 empty empty empty -2 -6 0 8 -261681 --1 -1 0 1; -#X obj 267 95 hsl 128 15 0.5 2 1 0 empty empty empty -2 -6 0 8 -261681 --1 -1 0 1; -#X text 172 73 pitch left; -#X text 172 93 pitch right; -#X obj 68 78 osc~ 442; -#X connect 4 0 5 1; -#X connect 4 0 8 1; -#X connect 5 0 0 0; -#X connect 7 0 5 0; -#X connect 7 1 8 0; -#X connect 8 0 0 1; -#X connect 9 0 7 0; -#X connect 10 0 7 0; -#X connect 11 0 9 0; -#X connect 12 0 10 0; -#X connect 15 0 7 0; diff --git a/externals/grill/flext/tutorial/pd/ex-thread1.pd b/externals/grill/flext/tutorial/pd/ex-thread1.pd deleted file mode 100644 index 38707f44..00000000 --- a/externals/grill/flext/tutorial/pd/ex-thread1.pd +++ /dev/null @@ -1,43 +0,0 @@ -#N canvas 105 266 608 311 12; -#X obj 39 91 bng 25 250 50 0 empty empty start 0 -6 0 8 -261681 -1 --1; -#X obj 130 231 thread1; -#X obj 228 233 thread1; -#X obj 324 231 thread1; -#X obj 422 232 thread1; -#X obj 131 185 delay 200; -#X obj 228 185 delay 200; -#X obj 325 185 delay 200; -#X obj 421 185 delay 200; -#X text 78 85 click to start; -#X text 126 103 (if you click twice \, the same thread is started a -second time); -#X obj 16 8 cnv 15 550 40 empty empty thread1 10 22 0 24 -260818 -1 -0; -#X text 170 29 http://grrrr.org; -#X obj 131 262 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -12 -228992 -1 -1 0 256; -#X obj 229 263 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -12 -228992 -1 -1 0 256; -#X obj 323 261 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -12 -228992 -1 -1 0 256; -#X obj 423 261 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -12 -228992 -1 -1 0 256; -#X obj 39 229 thread1; -#X obj 39 262 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -12 -228992 -1 -1 0 256; -#X text 170 11 flext tutorial \, (C)2002-2006 Thomas Grill; -#X connect 0 0 5 0; -#X connect 0 0 17 0; -#X connect 1 0 13 0; -#X connect 2 0 14 0; -#X connect 3 0 15 0; -#X connect 4 0 16 0; -#X connect 5 0 1 0; -#X connect 5 0 6 0; -#X connect 6 0 2 0; -#X connect 6 0 7 0; -#X connect 7 0 3 0; -#X connect 7 0 8 0; -#X connect 8 0 4 0; -#X connect 17 0 18 0; diff --git a/externals/grill/flext/tutorial/pd/ex-thread2.pd b/externals/grill/flext/tutorial/pd/ex-thread2.pd deleted file mode 100644 index 4d72392f..00000000 --- a/externals/grill/flext/tutorial/pd/ex-thread2.pd +++ /dev/null @@ -1,47 +0,0 @@ -#N canvas 116 192 593 338 12; -#X msg 84 188 stop; -#X msg 255 192 stop; -#X obj 199 99 bng 25 250 50 0 empty empty empty 0 -6 0 8 -261681 -1 --1; -#X obj 291 99 bng 25 250 50 0 empty empty empty 0 -6 0 8 -261681 -1 --1; -#X text 191 78 start; -#X text 283 77 stop; -#X msg 39 188 0; -#X msg 210 192 0; -#X msg 423 190 stop; -#X msg 378 190 0; -#X obj 404 229 thread2 50; -#X obj 232 229 thread2 15; -#X obj 66 228 thread2 3; -#X msg 133 188 text; -#X msg 302 192 text; -#X msg 470 190 text; -#X obj 16 8 cnv 15 550 40 empty empty thread2 10 22 0 24 -260818 -1 -0; -#X text 173 29 http://grrrr.org; -#X obj 65 264 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -12 -228992 -1 -1 0 256; -#X obj 231 265 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -12 -228992 -1 -1 0 256; -#X obj 403 267 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -12 -228992 -1 -1 0 256; -#X text 173 11 flext tutorial \, (C)2002-2006 Thomas Grill; -#X connect 0 0 12 0; -#X connect 1 0 11 0; -#X connect 2 0 6 0; -#X connect 2 0 7 0; -#X connect 2 0 9 0; -#X connect 3 0 0 0; -#X connect 3 0 1 0; -#X connect 3 0 8 0; -#X connect 6 0 12 0; -#X connect 7 0 11 0; -#X connect 8 0 10 0; -#X connect 9 0 10 0; -#X connect 10 0 20 0; -#X connect 11 0 19 0; -#X connect 12 0 18 0; -#X connect 13 0 12 0; -#X connect 14 0 11 0; -#X connect 15 0 10 0; diff --git a/externals/grill/flext/tutorial/pd/ex-timer1.pd b/externals/grill/flext/tutorial/pd/ex-timer1.pd deleted file mode 100644 index 303d8f26..00000000 --- a/externals/grill/flext/tutorial/pd/ex-timer1.pd +++ /dev/null @@ -1,62 +0,0 @@ -#N canvas 110 259 825 368 12; -#X obj 16 8 cnv 15 550 40 empty empty timer1 10 22 0 24 -260818 -1 -0; -#X text 167 30 http://grrrr.org; -#X text 167 10 flext tutorial \, (C)2003-2006 Thomas Grill; -#X obj 241 241 timer1; -#X obj 241 267 print; -#X msg 105 104 resetA; -#X msg 176 104 resetB; -#X msg 260 147 oneshotA \$1; -#X obj 259 124 f 100; -#X obj 303 107 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 --262144 -1 -1 0 256; -#X obj 260 105 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 --1; -#X obj 382 124 f 100; -#X obj 426 107 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 --262144 -1 -1 0 256; -#X obj 383 105 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 --1; -#X obj 515 124 f 100; -#X obj 559 107 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 --262144 -1 -1 0 256; -#X obj 516 105 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 --1; -#X obj 652 123 f 100; -#X obj 696 106 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 --262144 -1 -1 0 256; -#X obj 653 104 bng 15 250 50 0 empty empty empty 0 -6 0 8 -24198 -1 --1; -#X msg 383 147 oneshotB \$1; -#X msg 516 147 periodicA \$1; -#X msg 653 146 periodicB \$1; -#X text 119 82 reset timer; -#X text 275 81 trigger single event; -#X text 523 80 trigger periodic event; -#X msg 30 161 gettime; -#X msg 30 191 getostime; -#X text 106 162 get time; -#X text 127 191 get OS time; -#X connect 3 0 4 0; -#X connect 3 1 4 0; -#X connect 5 0 3 0; -#X connect 6 0 3 0; -#X connect 7 0 3 0; -#X connect 8 0 7 0; -#X connect 9 0 8 1; -#X connect 10 0 8 0; -#X connect 11 0 20 0; -#X connect 12 0 11 1; -#X connect 13 0 11 0; -#X connect 14 0 21 0; -#X connect 15 0 14 1; -#X connect 16 0 14 0; -#X connect 17 0 22 0; -#X connect 18 0 17 1; -#X connect 19 0 17 0; -#X connect 20 0 3 0; -#X connect 21 0 3 0; -#X connect 22 0 3 0; -#X connect 26 0 3 0; -#X connect 27 0 3 0; diff --git a/externals/grill/flext/tutorial/readme.txt b/externals/grill/flext/tutorial/readme.txt deleted file mode 100644 index beecb20e..00000000 --- a/externals/grill/flext/tutorial/readme.txt +++ /dev/null @@ -1,77 +0,0 @@ -flext - C++ layer for Max/MSP and pd (pure data) externals -tutorial examples - -Copyright (c) 2001-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - ----------------------------------------------------------------------------- - -These are a few examples to demonstrate some flext features. -Contribution of examples to the package is higly appreciated! - ----------------------------------------------------------------------------- - -The recommended order to go through the tutorial examples is the following: - -1) simple* -2) adv* -3) attr* -4) timer* -5) signal* -6) lib* -7) thread* - -and, if needed -8) sndobj* and/or stk* - -if you choose to compile with SndObj support you will need the respective library -download from: http://www.may.ie/academic/music/musictec/SndObj/main.html - -if you choose to compile with STK support you will need the respective package and build a library -download from: http://ccrma-www.stanford.edu/software/stk/ -Under linux you can create such a library from the STK directory with: -"g++ -c -pipe -I include -D __LINUX_OSS__ src/*.cpp && ar r libstk.a *.o && rm -f *.o" - - ----------------------------------------------------------------------------- - -The package should at least compile (and is tested) with the following compilers: - -pd - Windows: -------------- -o Microsoft Visual C++ 6: edit "config-pd-msvc.txt" & run "build-pd-msvc.bat" - -o Borland C++ 5.5 (free): edit "config-pd-bcc.txt" & run "build-pd-bcc.bat" - (no threading support for that compiler!) - -o Cygwin: edit "config-pd-cygwin.txt" & run "sh build-pd-cygwin.sh" - (no threading support for that compiler!) - -pd - linux: ------------ -o GCC: edit "config-pd-linux.txt" & run "sh build-pd-linux.sh" - -pd - MacOSX: ------------ -o GCC: edit "config-pd-darwin.txt" & run "sh build-pd-darwin.sh" - - -Max/MSP - MacOS 9: ------------------- -o Metrowerks CodeWarrior V6: edit & use the several ".cw" project files - -You must have the following "Source Trees" defined: -"flext" - Pointing to the flext main directory -"Cycling74" - Pointing to the Cycling 74 SDK - -Max/MSP - MacOSX: ------------------- -o Metrowerks CodeWarrior V6: edit & use the several ".cw" project files - -You must have the following "Source Trees" defined: -"OS X Volume" - Pointing to your OSX boot drive -"flext" - Pointing to the flext main directory -"Cycling74 OSX" - Pointing to the Cycling 74 SDK for xmax -"MP SDK" - Pointing to the Multiprocessing SDK (for threading support) - diff --git a/externals/grill/flext/tutorial/signal1/Makefile.am b/externals/grill/flext/tutorial/signal1/Makefile.am deleted file mode 100644 index 857be41e..00000000 --- a/externals/grill/flext/tutorial/signal1/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -NAME = signal1 - -BUILT_SOURCES = main.cpp - -EXTRA_DIST = main.cpp \ - $(NAME).mcp \ - $(NAME).vcproj - -CXXFLAGS = @CXXFLAGS@ \ - @OPT_FLAGS@ \ - @INCLUDEDIR@ \ - -I../../source \ - $(DEFS) \ - -DFLEXT_SHARED - -LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \ - $(patsubst %,-framework %,$(FRAMEWORKS)) - -LIBS = @LIBS@ -lflext-pd - -FRAMEWORKS = @FRAMEWORKS@ - -TARGETDIR = @TARGETDIR@ - -TARGET =$(NAME).@EXTENSION@ - -OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES)) - -SYSDIR = @SYSDIR@ - - -# ----------------------------- targets -------------------------------- - -all-local: $(OBJECTS) - $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET) - strip --strip-unneeded ../$(TARGETDIR)/$(TARGET) - -./%.@OBJEXT@ : %.cpp - $(CXX) -c $(CXXFLAGS) $< -o $@ - -clean-local: - rm -f ../$(TARGETDIR)/$(TARGET) - rm -f ./$(OBJECTS) - -install-exec-local: - install ../$(TARGET) $(SYSDIR)extra diff --git a/externals/grill/flext/tutorial/signal1/main.cpp b/externals/grill/flext/tutorial/signal1/main.cpp deleted file mode 100644 index 3714e1f6..00000000 --- a/externals/grill/flext/tutorial/signal1/main.cpp +++ /dev/null @@ -1,129 +0,0 @@ -// signal1~ - a flext tutorial external written by Frank Barknecht -// -// This is a commented port of the pan~ example from the PD-Externals-Howto to -// illustrate the usage of flext. You can get the original code at -// http://iem.kug.ac.at/pd/externals-HOWTO/ - -#include - -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 401) -#error You need at least flext version 0.4.1 -#endif - - -// A flext dsp external ("tilde object") inherits from the class flext_dsp -class signal1: - public flext_dsp -{ - // Each external that is written in C++ needs to use #defines - // from flbase.h - // - // The define - // - // FLEXT_HEADER(NEW_CLASS, PARENT_CLASS) - // - // should be somewhere in your dsp file. - // A good place is here: - - FLEXT_HEADER(signal1, flext_dsp) - - public: - signal1(): - f_pan(0) // initialize f_pan - { - // The constructor of your class is responsible for - // setting up inlets and outlets and for registering - // inlet-methods: - // The descriptions of the inlets and outlets are output - // via the Max/MSP assist method (when mousing over them in edit mode). - // PD will hopefully provide such a feature as well soon - - AddInSignal("left audio in"); // left audio in - AddInSignal("right audio in"); // right audio in - AddInFloat("panning parameter"); // 1 float in - AddOutSignal("audio out"); // 1 audio out - - // Now we need to bind the handler function to our - // panning inlet, which is inlet 2 (counting all inlets - // from 0). We want the function "setPan" to get - // called on incoming float messages: - - FLEXT_ADDMETHOD(2,setPan); - - // We're done constructing: - post("-- pan~ with flext ---"); - - } // end of constructor - - - protected: - // here we declare the virtual DSP function - virtual void m_signal(int n, float *const *in, float *const *out); - private: - float f_pan; // holds our panning factor - - // Before we can use "setPan" as a handler, we must register this - // function as a callback to PD or Max. This is done using the - // FLEXT_CALLBACK* macros. There are several of them. - // - // FLEXT_CALLBACK_F is a shortcut, that registers a function - // expecting one float arg (thus ending in "_F"). There are - // other shortcuts that register other types of functions. Look - // into flext.h. No semicolon at the end of line!!! - FLEXT_CALLBACK_F(setPan) - - // Now setPan can get declared and defined here. - void setPan(float f) - { - // set our private panning factor "f_pan" to the inlet - // value float "f" in the intervall [0,1] - f_pan = (f<0) ? 0.0f : (f>1) ? 1.0f : f ; - - // if you want to debug if this worked, comment out the - // following line: - //post("Set panning to %.2f, maybe clipped from %.2f", f_pan,f); - } // end setPan -}; // end of class declaration for signal1 - - -// Before we can run our signal1-class in PD, the object has to be registered as a -// PD object. Otherwise it would be a simple C++-class, and what good would -// that be for? Registering is made easy with the FLEXT_NEW_* macros defined -// in flext.h. For tilde objects without arguments call: - -FLEXT_NEW_DSP("signal1~ pan~", signal1) -// T.Grill: there are two names for the object: signal1~ as main name and pan~ as its alias - -// Now we define our DSP function. It gets this arguments: -// -// int n: length of signal vector. Loop over this for your signal processing. -// float *const *in, float *const *out: -// These are arrays of the signals in the objects signal inlets rsp. -// oulets. We come to that later inside the function. - -void signal1::m_signal(int n, float *const *in, float *const *out) -{ - - const float *ins1 = in[0]; - const float *ins2 = in[1]; - // As said above "in" holds a list of the signal vectors in all inlets. - // After these two lines, ins1 holds the signal vector ofthe first - // inlet, index 0, and ins2 holds the signal vector of the second - // inlet, with index 1. - - float *outs = out[0]; - // Now outs holds the signal vector at the one signal outlet we have. - - // We are now ready for the main signal loop - while (n--) - { - - // The "++" after the pointers outs, ins1 and ins2 walks us - // through the signal vector with each n, of course. Before - // each step we change the signal value in the outlet *outs - // according to our panning factor "f_pan" and according to the - // signals at the two signal inlets, *ins1 and *ins2 - - *outs++ = (*ins1++) * (1-f_pan) + (*ins2++) * f_pan; - } -} // end m_signal diff --git a/externals/grill/flext/tutorial/signal1/package.txt b/externals/grill/flext/tutorial/signal1/package.txt deleted file mode 100644 index b4861858..00000000 --- a/externals/grill/flext/tutorial/signal1/package.txt +++ /dev/null @@ -1,2 +0,0 @@ -NAME=signal1~ -SRCS=main.cpp diff --git a/externals/grill/flext/tutorial/signal1/signal1.mcp b/externals/grill/flext/tutorial/signal1/signal1.mcp deleted file mode 100644 index 32e82771..00000000 Binary files a/externals/grill/flext/tutorial/signal1/signal1.mcp and /dev/null differ diff --git a/externals/grill/flext/tutorial/signal1/signal1.vcproj b/externals/grill/flext/tutorial/signal1/signal1.vcproj deleted file mode 100644 index 136003b7..00000000 --- a/externals/grill/flext/tutorial/signal1/signal1.vcproj +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/flext/tutorial/signal2/Makefile.am b/externals/grill/flext/tutorial/signal2/Makefile.am deleted file mode 100644 index 6aaf483d..00000000 --- a/externals/grill/flext/tutorial/signal2/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -NAME = signal2 - -BUILT_SOURCES = main.cpp - -EXTRA_DIST = main.cpp \ - $(NAME).mcp \ - $(NAME).vcproj - -CXXFLAGS = @CXXFLAGS@ \ - @OPT_FLAGS@ \ - @INCLUDEDIR@ \ - -I../../source \ - $(DEFS) \ - -DFLEXT_SHARED - -LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \ - $(patsubst %,-framework %,$(FRAMEWORKS)) - -LIBS = @LIBS@ -lflext-pd - -FRAMEWORKS = @FRAMEWORKS@ - -TARGETDIR = @TARGETDIR@ - -TARGET =$(NAME).@EXTENSION@ - -OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES)) - -SYSDIR = @SYSDIR@ - - -# ----------------------------- targets -------------------------------- - -all-local: $(OBJECTS) - $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET) - strip --strip-unneeded ../$(TARGETDIR)/$(TARGET) - -./%.@OBJEXT@ : %.cpp - $(CXX) -c $(CXXFLAGS) $< -o $@ - -clean-local: - rm -f ../$(TARGETDIR)/$(TARGET) - rm -f ./$(OBJECTS) - -install-exec-local: - install ../$(TARGET) $(SYSDIR)extra diff --git a/externals/grill/flext/tutorial/signal2/main.cpp b/externals/grill/flext/tutorial/signal2/main.cpp deleted file mode 100644 index 7793bb00..00000000 --- a/externals/grill/flext/tutorial/signal2/main.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/* -flext tutorial - signal 2 - -Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -------------------------------------------------------------------------- - -This is an object showing varous parameters of the pd audio system -*/ - -// include flext header -#include - -// check for appropriate flext version -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 400) -#error You need at least flext version 0.4.0 -#endif - - -// define the class that stands for a pd/Max object -// Attention: the class name must be the same as the object name!! (without the ~) - -class signal2: - // inherit from flext dsp class - public flext_dsp -{ - // obligatory flext header (class name,base class name) - FLEXT_HEADER(signal2,flext_dsp) - -public: - // constructor - signal2(); - -protected: - void m_bang(); // method for bang - -private: - FLEXT_CALLBACK(m_bang) // callback for method "m_bang" -}; - -// instantiate the class -FLEXT_NEW_DSP("signal2~",signal2) - - -signal2::signal2() -{ - // define inlets: - // first inlet must always by of type anything (or signal for dsp objects) - AddInAnything(); // add one inlet for any message - - // add outlets for sample rate, block size, audio in and out channel count - AddOutFloat(1); - AddOutInt(3); // although PD knows no int type, flext does! - - // register methods - FLEXT_ADDBANG(0,m_bang); // register method "m_bang" for bang message into inlet 0 -} - -void signal2::m_bang() -{ - // output various parameters of the pd audio system - ToOutFloat(0,Samplerate()); - ToOutInt(1,Blocksize()); - ToOutInt(2,CntInSig()); - ToOutInt(3,CntOutSig()); -} - diff --git a/externals/grill/flext/tutorial/signal2/package.txt b/externals/grill/flext/tutorial/signal2/package.txt deleted file mode 100644 index a258255c..00000000 --- a/externals/grill/flext/tutorial/signal2/package.txt +++ /dev/null @@ -1,2 +0,0 @@ -NAME=signal2~ -SRCS=main.cpp diff --git a/externals/grill/flext/tutorial/signal2/signal2.mcp b/externals/grill/flext/tutorial/signal2/signal2.mcp deleted file mode 100644 index 260893e2..00000000 Binary files a/externals/grill/flext/tutorial/signal2/signal2.mcp and /dev/null differ diff --git a/externals/grill/flext/tutorial/signal2/signal2.vcproj b/externals/grill/flext/tutorial/signal2/signal2.vcproj deleted file mode 100644 index 4923b1a7..00000000 --- a/externals/grill/flext/tutorial/signal2/signal2.vcproj +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/flext/tutorial/simple1/Makefile.am b/externals/grill/flext/tutorial/simple1/Makefile.am deleted file mode 100644 index d918a68d..00000000 --- a/externals/grill/flext/tutorial/simple1/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -NAME = simple1 - -BUILT_SOURCES = main.cpp - -EXTRA_DIST = main.cpp \ - $(NAME).mcp \ - $(NAME).vcproj - -CXXFLAGS = @CXXFLAGS@ \ - @OPT_FLAGS@ \ - @INCLUDEDIR@ \ - -I../../source \ - $(DEFS) \ - -DFLEXT_SHARED - -LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \ - $(patsubst %,-framework %,$(FRAMEWORKS)) - -LIBS = @LIBS@ -lflext-pd - -FRAMEWORKS = @FRAMEWORKS@ - -TARGETDIR = @TARGETDIR@ - -TARGET =$(NAME).@EXTENSION@ - -OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES)) - -SYSDIR = @SYSDIR@ - - -# ----------------------------- targets -------------------------------- - -all-local: $(OBJECTS) - $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET) - strip --strip-unneeded ../$(TARGETDIR)/$(TARGET) - -./%.@OBJEXT@ : %.cpp - $(CXX) -c $(CXXFLAGS) $< -o $@ - -clean-local: - rm -f ../$(TARGETDIR)/$(TARGET) - rm -f ./$(OBJECTS) - -install-exec-local: - install ../$(TARGET) $(SYSDIR)extra diff --git a/externals/grill/flext/tutorial/simple1/main.cpp b/externals/grill/flext/tutorial/simple1/main.cpp deleted file mode 100644 index ed3c3ea3..00000000 --- a/externals/grill/flext/tutorial/simple1/main.cpp +++ /dev/null @@ -1,73 +0,0 @@ -/* -flext tutorial - simple 1 - -Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -------------------------------------------------------------------------- - -This is an example of a simple object doing a float inversion -*/ - -// include flext header -#include - -// check for appropriate flext version -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 400) -#error You need at least flext version 0.4.0 -#endif - - -// define the class that stands for a pd/Max object -// Attention: the class name must be the same as the object name!! (without an eventual ~) -// Special names are possible with the usage of libraries (see the lib1 tutorial example) - -class simple1: - // inherit from basic flext class - public flext_base -{ - // obligatory flext header (class name,base class name) - FLEXT_HEADER(simple1,flext_base) - -public: - // constructor - simple1() - { - // define inlets: - // first inlet must always be of type anything (or signal for dsp objects) - AddInAnything(); // add one inlet for any message - - // define outlets: - AddOutFloat(); // add one float outlet (has index 0) - - // register methods - FLEXT_ADDMETHOD(0,m_float); // register method (for float messages) "m_float" for inlet 0 - } - -protected: - void m_float(float input) // method for float values - { - float result; - - if(input == 0) { - // special case 0 - post("%s - zero can't be inverted!",thisName()); - result = 0; - } - else - // normal case - result = 1/input; - - // output value to outlet - ToOutFloat(0,result); // (0 stands for the outlet index 0 - the leftmost outlet) - } - -private: - FLEXT_CALLBACK_1(m_float,float) // callback for method "m_float" (with one float argument) -}; - -// instantiate the class -FLEXT_NEW("simple1",simple1) - - diff --git a/externals/grill/flext/tutorial/simple1/package.txt b/externals/grill/flext/tutorial/simple1/package.txt deleted file mode 100644 index 8a3da416..00000000 --- a/externals/grill/flext/tutorial/simple1/package.txt +++ /dev/null @@ -1,2 +0,0 @@ -NAME=simple1 -SRCS=main.cpp diff --git a/externals/grill/flext/tutorial/simple1/simple1.mcp b/externals/grill/flext/tutorial/simple1/simple1.mcp deleted file mode 100755 index 6e778ba5..00000000 Binary files a/externals/grill/flext/tutorial/simple1/simple1.mcp and /dev/null differ diff --git a/externals/grill/flext/tutorial/simple1/simple1.vcproj b/externals/grill/flext/tutorial/simple1/simple1.vcproj deleted file mode 100644 index e6ad7d68..00000000 --- a/externals/grill/flext/tutorial/simple1/simple1.vcproj +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/flext/tutorial/simple2/Makefile.am b/externals/grill/flext/tutorial/simple2/Makefile.am deleted file mode 100644 index 696c144b..00000000 --- a/externals/grill/flext/tutorial/simple2/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -NAME = simple2 - -BUILT_SOURCES = main.cpp - -EXTRA_DIST = main.cpp \ - $(NAME).mcp \ - $(NAME).vcproj - -CXXFLAGS = @CXXFLAGS@ \ - @OPT_FLAGS@ \ - @INCLUDEDIR@ \ - -I../../source \ - $(DEFS) \ - -DFLEXT_SHARED - -LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \ - $(patsubst %,-framework %,$(FRAMEWORKS)) - -LIBS = @LIBS@ -lflext-pd - -FRAMEWORKS = @FRAMEWORKS@ - -TARGETDIR = @TARGETDIR@ - -TARGET =$(NAME).@EXTENSION@ - -OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES)) - -SYSDIR = @SYSDIR@ - - -# ----------------------------- targets -------------------------------- - -all-local: $(OBJECTS) - $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET) - strip --strip-unneeded ../$(TARGETDIR)/$(TARGET) - -./%.@OBJEXT@ : %.cpp - $(CXX) -c $(CXXFLAGS) $< -o $@ - -clean-local: - rm -f ../$(TARGETDIR)/$(TARGET) - rm -f ./$(OBJECTS) - -install-exec-local: - install ../$(TARGET) $(SYSDIR)extra diff --git a/externals/grill/flext/tutorial/simple2/main.cpp b/externals/grill/flext/tutorial/simple2/main.cpp deleted file mode 100644 index 894ceb47..00000000 --- a/externals/grill/flext/tutorial/simple2/main.cpp +++ /dev/null @@ -1,77 +0,0 @@ -/* -flext tutorial - simple 2 - -Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -------------------------------------------------------------------------- - -This is an example of a simple object doing a float addition -*/ - -// include flext header -#include - -// check for appropriate flext version -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 400) -#error You need at least flext version 0.4.0 -#endif - - -class simple2: - public flext_base -{ - FLEXT_HEADER(simple2,flext_base) - -public: - // constructor with float argument - simple2(float init); - -protected: - void m_float1(float f); - void m_float2(float f); - - // stored argument of right inlet - float arg; - -private: - // FLEXT_CALLBACK_F(...) is a shortcut for FLEXT_CALLBACK_1(...,float) - FLEXT_CALLBACK_F(m_float1) // callback for method "m_float1" (with one float argument) - FLEXT_CALLBACK_F(m_float2) // callback for method "m_float2" (with one float argument) -}; - -// instantiate the class (constructor has one float argument) -FLEXT_NEW_1("simple2",simple2,float) - - -simple2::simple2(float init): - arg(init) // store argument -{ - // define inlets - AddInAnything(); // first inlet of type anything (index 0) - AddInFloat(); // additional float inlet (index 1) - - // define outlets - AddOutFloat(); // one float outlet (has index 0) - - // register methods - FLEXT_ADDMETHOD(0,m_float1); // register method (for floats) "m_float1" for inlet 0 - FLEXT_ADDMETHOD(1,m_float2); // register method (for floats) "m_float2" for inlet 1 -} - -void simple2::m_float1(float f) -{ - float res; - res = arg+f; - - // output value to outlet - ToOutFloat(0,res); // (0 stands for the outlet index 0) -} - -void simple2::m_float2(float f) -{ - // store float - arg = f; -} - diff --git a/externals/grill/flext/tutorial/simple2/package.txt b/externals/grill/flext/tutorial/simple2/package.txt deleted file mode 100644 index fd8b2a25..00000000 --- a/externals/grill/flext/tutorial/simple2/package.txt +++ /dev/null @@ -1,2 +0,0 @@ -NAME=simple2 -SRCS=main.cpp diff --git a/externals/grill/flext/tutorial/simple2/simple2.mcp b/externals/grill/flext/tutorial/simple2/simple2.mcp deleted file mode 100755 index 6ada3deb..00000000 Binary files a/externals/grill/flext/tutorial/simple2/simple2.mcp and /dev/null differ diff --git a/externals/grill/flext/tutorial/simple2/simple2.vcproj b/externals/grill/flext/tutorial/simple2/simple2.vcproj deleted file mode 100644 index 5402924e..00000000 --- a/externals/grill/flext/tutorial/simple2/simple2.vcproj +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/flext/tutorial/simple3/Makefile.am b/externals/grill/flext/tutorial/simple3/Makefile.am deleted file mode 100644 index f4436562..00000000 --- a/externals/grill/flext/tutorial/simple3/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -NAME = simple3 - -BUILT_SOURCES = main.cpp - -EXTRA_DIST = main.cpp \ - $(NAME).mcp \ - $(NAME).vcproj - -CXXFLAGS = @CXXFLAGS@ \ - @OPT_FLAGS@ \ - @INCLUDEDIR@ \ - -I../../source \ - $(DEFS) \ - -DFLEXT_SHARED - -LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \ - $(patsubst %,-framework %,$(FRAMEWORKS)) - -LIBS = @LIBS@ -lflext-pd - -FRAMEWORKS = @FRAMEWORKS@ - -TARGETDIR = @TARGETDIR@ - -TARGET =$(NAME).@EXTENSION@ - -OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES)) - -SYSDIR = @SYSDIR@ - - -# ----------------------------- targets -------------------------------- - -all-local: $(OBJECTS) - $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET) - strip --strip-unneeded ../$(TARGETDIR)/$(TARGET) - -./%.@OBJEXT@ : %.cpp - $(CXX) -c $(CXXFLAGS) $< -o $@ - -clean-local: - rm -f ../$(TARGETDIR)/$(TARGET) - rm -f ./$(OBJECTS) - -install-exec-local: - install ../$(TARGET) $(SYSDIR)extra diff --git a/externals/grill/flext/tutorial/simple3/main.cpp b/externals/grill/flext/tutorial/simple3/main.cpp deleted file mode 100644 index d1630e77..00000000 --- a/externals/grill/flext/tutorial/simple3/main.cpp +++ /dev/null @@ -1,91 +0,0 @@ -/* -flext tutorial - simple 3 - -Copyright (c) 2002-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -------------------------------------------------------------------------- - -This is an example of an object digesting several "tagged" messages - -*/ - -// include flext header -#include - -// check for appropriate flext version -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500) -#error You need at least flext version 0.5.0 -#endif - -class simple3: - public flext_base -{ - FLEXT_HEADER(simple3,flext_base) - -public: - // constructor with no arguments - simple3(); - -protected: - void m_tag(); - void m_tag_and_int(int i); - void m_sym(t_symbol *s); - - // override default flext help function - void m_help(); - -private: - - FLEXT_CALLBACK(m_tag) // callback for method "m_tag" (no arguments) - FLEXT_CALLBACK_I(m_tag_and_int) // callback for method "m_tag_and_int" (int arguments) - FLEXT_CALLBACK_S(m_sym) // callback for method "m_sym" (with one symbol argument) - - FLEXT_CALLBACK(m_help) // callback for method "m_help" (no arguments) -}; - -// instantiate the class (constructor takes no arguments) -FLEXT_NEW("simple3",simple3) - - -simple3::simple3() -{ - // define inlets - AddInAnything(); // add inlet of type anything (index 0) - - // register methods - FLEXT_ADDMETHOD_(0,"born",m_tag); // register method for tag "born" - FLEXT_ADDMETHOD_(0,"to",m_tag); // register method for tag "to" - FLEXT_ADDMETHOD_(0,"hula",m_tag); // register method for tag "hula" - FLEXT_ADDMETHOD_I(0,"hula",m_tag_and_int); // register method for tag "hula" and int argument - - FLEXT_ADDMETHOD(0,m_sym); // register method for all other symbols - - FLEXT_ADDMETHOD_(0,"help",m_help); // register method for "help" message -} - -void simple3::m_tag() -{ - post("tag recognized"); -} - -void simple3::m_tag_and_int(int i) -{ - post("tag recognized (has int arg: %i)",i); -} - -void simple3::m_sym(t_symbol *s) -{ - post("symbol: %s",GetString(s)); -} - - -void simple3::m_help() -{ - // post a help message - // thisName() returns a char * for the object name - post("%s - example for tagged messages",thisName()); -} - - diff --git a/externals/grill/flext/tutorial/simple3/package.txt b/externals/grill/flext/tutorial/simple3/package.txt deleted file mode 100644 index acfca5e2..00000000 --- a/externals/grill/flext/tutorial/simple3/package.txt +++ /dev/null @@ -1,2 +0,0 @@ -NAME=simple3 -SRCS=main.cpp diff --git a/externals/grill/flext/tutorial/simple3/simple3.mcp b/externals/grill/flext/tutorial/simple3/simple3.mcp deleted file mode 100644 index bda7a203..00000000 Binary files a/externals/grill/flext/tutorial/simple3/simple3.mcp and /dev/null differ diff --git a/externals/grill/flext/tutorial/simple3/simple3.vcproj b/externals/grill/flext/tutorial/simple3/simple3.vcproj deleted file mode 100644 index cfb4fc08..00000000 --- a/externals/grill/flext/tutorial/simple3/simple3.vcproj +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/flext/tutorial/sndobj1/Makefile.am b/externals/grill/flext/tutorial/sndobj1/Makefile.am deleted file mode 100644 index 40dcd384..00000000 --- a/externals/grill/flext/tutorial/sndobj1/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -NAME = sndobj1 - -BUILT_SOURCES = main.cpp - -EXTRA_DIST = main.cpp \ - $(NAME).mcp \ - $(NAME).vcproj - -CXXFLAGS = @CXXFLAGS@ \ - @OPT_FLAGS@ \ - @INCLUDEDIR@ \ - -I../../source \ - $(DEFS) \ - -DFLEXT_SHARED - -LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \ - $(patsubst %,-framework %,$(FRAMEWORKS)) - -LIBS = @LIBS@ -lflext-pd - -FRAMEWORKS = @FRAMEWORKS@ - -TARGETDIR = @TARGETDIR@ - -TARGET =$(NAME).@EXTENSION@ - -OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES)) - -SYSDIR = @SYSDIR@ - - -# ----------------------------- targets -------------------------------- - -all-local: $(OBJECTS) - $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET) - strip --strip-unneeded ../$(TARGETDIR)/$(TARGET) - -./%.@OBJEXT@ : %.cpp - $(CXX) -c $(CXXFLAGS) $< -o $@ - -clean-local: - rm -f ../$(TARGETDIR)/$(TARGET) - rm -f ./$(OBJECTS) - -install-exec-local: - install ../$(TARGET) $(SYSDIR)extra diff --git a/externals/grill/flext/tutorial/sndobj1/main.cpp b/externals/grill/flext/tutorial/sndobj1/main.cpp deleted file mode 100644 index d5587c73..00000000 --- a/externals/grill/flext/tutorial/sndobj1/main.cpp +++ /dev/null @@ -1,101 +0,0 @@ -/* -flext tutorial - sndobj 1 - -Copyright (c) 2002-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -------------------------------------------------------------------------- - -This is an example of an external using the SndObj library. -See http://www.may.ie/academic/music/musictec/SndObj/ - -The SndObj library should be compiled multithreaded. - -This external features simple stereo pitch shifting. - -*/ - -#define FLEXT_ATTRIBUTES 1 - -#include - -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 401) -#error You need at least flext version 0.4.1 with sndobj support -#endif - - -class sndobj1: - public flext_sndobj -{ - FLEXT_HEADER_S(sndobj1,flext_sndobj,Setup) - -public: - sndobj1(); - - // these are obligatory! - virtual bool NewObjs(); - virtual void FreeObjs(); - virtual void ProcessObjs(); - - // space for a few sndobjs - Pitch *obj1,*obj2; - - float sh1,sh2; - -private: - static void Setup(t_classid c); - - FLEXT_ATTRVAR_F(sh1) - FLEXT_ATTRVAR_F(sh2) -}; - -FLEXT_NEW_DSP("sndobj1~",sndobj1) - - -sndobj1::sndobj1(): - sh1(1),sh2(1), - obj1(NULL),obj2(NULL) -{ - AddInSignal(2); // audio ins - AddOutSignal(2); // audio outs -} - -void sndobj1::Setup(t_classid c) -{ - FLEXT_CADDATTR_VAR1(c,"shL",sh1); - FLEXT_CADDATTR_VAR1(c,"shR",sh2); -} - -// construct needed SndObjs -bool sndobj1::NewObjs() -{ - // set up objects - obj1 = new Pitch(.1f,&InObj(0),sh1,Blocksize(),Samplerate()); - obj2 = new Pitch(.1f,&InObj(1),sh2,Blocksize(),Samplerate()); - return true; -} - -// destroy the SndObjs -void sndobj1::FreeObjs() -{ - if(obj1) delete obj1; - if(obj2) delete obj2; -} - -// this is called on every DSP block -void sndobj1::ProcessObjs() -{ - // set current pitch shift - obj1->SetPitch(sh1); - obj2->SetPitch(sh2); - - // do processing here!! - obj1->DoProcess(); - obj2->DoProcess(); - - // output - *obj1 >> OutObj(0); - *obj2 >> OutObj(1); -} - diff --git a/externals/grill/flext/tutorial/sndobj1/package.txt b/externals/grill/flext/tutorial/sndobj1/package.txt deleted file mode 100644 index 21948caa..00000000 --- a/externals/grill/flext/tutorial/sndobj1/package.txt +++ /dev/null @@ -1,2 +0,0 @@ -NAME=sndobj1~ -SRCS=main.cpp diff --git a/externals/grill/flext/tutorial/sndobj1/sndobj1.mcp b/externals/grill/flext/tutorial/sndobj1/sndobj1.mcp deleted file mode 100644 index 8385296a..00000000 Binary files a/externals/grill/flext/tutorial/sndobj1/sndobj1.mcp and /dev/null differ diff --git a/externals/grill/flext/tutorial/sndobj1/sndobj1.vcproj b/externals/grill/flext/tutorial/sndobj1/sndobj1.vcproj deleted file mode 100644 index 013442b4..00000000 --- a/externals/grill/flext/tutorial/sndobj1/sndobj1.vcproj +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/flext/tutorial/stk1/Makefile.am b/externals/grill/flext/tutorial/stk1/Makefile.am deleted file mode 100644 index 3449f410..00000000 --- a/externals/grill/flext/tutorial/stk1/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -NAME = stk1 - -BUILT_SOURCES = main.cpp - -EXTRA_DIST = main.cpp \ - $(NAME).mcp \ - $(NAME).vcproj - -CXXFLAGS = @CXXFLAGS@ \ - @OPT_FLAGS@ \ - @INCLUDEDIR@ \ - -I../../source \ - $(DEFS) \ - -DFLEXT_SHARED - -LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \ - $(patsubst %,-framework %,$(FRAMEWORKS)) - -LIBS = @LIBS@ -lflext-pd - -FRAMEWORKS = @FRAMEWORKS@ - -TARGETDIR = @TARGETDIR@ - -TARGET =$(NAME).@EXTENSION@ - -OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES)) - -SYSDIR = @SYSDIR@ - - -# ----------------------------- targets -------------------------------- - -all-local: $(OBJECTS) - $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET) - strip --strip-unneeded ../$(TARGETDIR)/$(TARGET) - -./%.@OBJEXT@ : %.cpp - $(CXX) -c $(CXXFLAGS) $< -o $@ - -clean-local: - rm -f ../$(TARGETDIR)/$(TARGET) - rm -f ./$(OBJECTS) - -install-exec-local: - install ../$(TARGET) $(SYSDIR)extra diff --git a/externals/grill/flext/tutorial/stk1/main.cpp b/externals/grill/flext/tutorial/stk1/main.cpp deleted file mode 100644 index 45f39cd9..00000000 --- a/externals/grill/flext/tutorial/stk1/main.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/* -flext tutorial - stk 1 - -Copyright (c) 2002-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -------------------------------------------------------------------------- - -This is an example of an external using the STK ("synthesis toolkit") library. -For STK see http://ccrma-www.stanford.edu/software/stk - -STK needs C++ exceptions switched on. - -The STK tutorial examples assume that a static stk library exists which contains all the -source files (except rt*.cpp) of the stk/src directory. -The library should be compiled multithreaded and with the appropriate compiler flags for -the respective platform (e.g. __OS_WINDOWS__ and __LITTLE_ENDIAN__ for Windows) - -*/ - -#include - -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 401) -#error You need at least flext version 0.4.1 with STK support -#endif - -#include "Noise.h" - - -class stk1: - public flext_stk -{ - FLEXT_HEADER(stk1,flext_stk) - -public: - stk1(); - -protected: - // these are obligatory! - virtual bool NewObjs(); // create STK instruments - virtual void FreeObjs(); // destroy STK instruments - virtual void ProcessObjs(int n); // do DSP processing - -private: - Noise *inst; -}; - -FLEXT_NEW_DSP("stk1~",stk1) - - -stk1::stk1(): - inst(NULL) -{ - AddInAnything(); - AddOutSignal(); -} - - -// create STK instruments -bool stk1::NewObjs() -{ - bool ok = true; - - // set up objects - try { - inst = new Noise; - } - catch (StkError &) { - post("%s - Noise() setup failed!",thisName()); - ok = false; - } - return ok; -} - - -// destroy the STK instruments -void stk1::FreeObjs() -{ - if(inst) delete inst; -} - -// this is called on every DSP block -void stk1::ProcessObjs(int n) -{ - while(n--) Outlet(0).tick(inst->tick()); -} - - diff --git a/externals/grill/flext/tutorial/stk1/package.txt b/externals/grill/flext/tutorial/stk1/package.txt deleted file mode 100644 index 5f31c5af..00000000 --- a/externals/grill/flext/tutorial/stk1/package.txt +++ /dev/null @@ -1,2 +0,0 @@ -NAME=stk1~ -SRCS=main.cpp diff --git a/externals/grill/flext/tutorial/stk1/stk1.vcproj b/externals/grill/flext/tutorial/stk1/stk1.vcproj deleted file mode 100644 index b1d9edfa..00000000 --- a/externals/grill/flext/tutorial/stk1/stk1.vcproj +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/flext/tutorial/stk2/Makefile.am b/externals/grill/flext/tutorial/stk2/Makefile.am deleted file mode 100644 index fe13e6a3..00000000 --- a/externals/grill/flext/tutorial/stk2/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -NAME = stk2 - -BUILT_SOURCES = main.cpp - -EXTRA_DIST = main.cpp \ - $(NAME).mcp \ - $(NAME).vcproj - -CXXFLAGS = @CXXFLAGS@ \ - @OPT_FLAGS@ \ - @INCLUDEDIR@ \ - -I../../source \ - $(DEFS) \ - -DFLEXT_SHARED - -LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \ - $(patsubst %,-framework %,$(FRAMEWORKS)) - -LIBS = @LIBS@ -lflext-pd - -FRAMEWORKS = @FRAMEWORKS@ - -TARGETDIR = @TARGETDIR@ - -TARGET =$(NAME).@EXTENSION@ - -OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES)) - -SYSDIR = @SYSDIR@ - - -# ----------------------------- targets -------------------------------- - -all-local: $(OBJECTS) - $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET) - strip --strip-unneeded ../$(TARGETDIR)/$(TARGET) - -./%.@OBJEXT@ : %.cpp - $(CXX) -c $(CXXFLAGS) $< -o $@ - -clean-local: - rm -f ../$(TARGETDIR)/$(TARGET) - rm -f ./$(OBJECTS) - -install-exec-local: - install ../$(TARGET) $(SYSDIR)extra diff --git a/externals/grill/flext/tutorial/stk2/main.cpp b/externals/grill/flext/tutorial/stk2/main.cpp deleted file mode 100644 index 0e740f60..00000000 --- a/externals/grill/flext/tutorial/stk2/main.cpp +++ /dev/null @@ -1,115 +0,0 @@ -/* -flext tutorial - stk 2 - -Copyright (c) 2002-2006 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -------------------------------------------------------------------------- - -This is an example of an external using the STK ("synthesis toolkit") library. -For STK see http://ccrma-www.stanford.edu/software/stk - -STK needs C++ exceptions switched on. - -The STK tutorial examples assume that a static stk library exists which contains all the -source files (except rt*.cpp) of the stk/src directory. -The library should be compiled multithreaded and with the appropriate compiler flags for -the respective platform (e.g. __OS_WINDOWS__ and __LITTLE_ENDIAN__ for Windows) - -*/ - -#include - -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 401) -#error You need at least flext version 0.4.1 with STK support -#endif - -#include "PitShift.h" - - -class stk2: - public flext_stk -{ - FLEXT_HEADER_S(stk2,flext_stk,Setup) - -public: - stk2(); - - void m_sh1(float f) { if(inst[0]) inst[0]->setShift(f); } - void m_sh2(float f) { if(inst[1]) inst[1]->setShift(f); } - - // these are obligatory! - virtual bool NewObjs(); // create STK instruments - virtual void FreeObjs(); // destroy STK instruments - virtual void ProcessObjs(int n); // do DSP processing - - PitShift *inst[2]; - MY_FLOAT *vec; - -private: - static void Setup(t_classid c); - - FLEXT_CALLBACK_F(m_sh1) - FLEXT_CALLBACK_F(m_sh2) -}; - -FLEXT_NEW_DSP("stk2~",stk2) - - -stk2::stk2() -{ - AddInSignal(); - AddOutSignal(2); - - inst[0] = inst[1] = NULL; -} - -void stk2::Setup(t_classid c) -{ - FLEXT_CADDMETHOD_F(c,0,"shL",m_sh1); - FLEXT_CADDMETHOD_F(c,0,"shR",m_sh2); -} - - -// create STK instruments -bool stk2::NewObjs() -{ - bool ok = true; - - try { - // set up objects - for(int i = 0; i < 2; ++i) - inst[i] = new PitShift; - - // reserve one signal vector too - vec = new MY_FLOAT[Blocksize()]; - } - catch (StkError &) { - post("%s - Creation failed!",thisName()); - ok = false; - } - return ok; -} - - -// destroy the STK instruments -void stk2::FreeObjs() -{ - for(int i = 0; i < 2; ++i) - if(inst[i]) delete inst[i]; - if(vec) delete[] vec; -} - -// this is called on every DSP block -void stk2::ProcessObjs(int n) -{ - for(int i = 0; i < 2; ++i) - Outlet(i).tick( - inst[i]->tick( - Inlet(0).tick(vec,n) - ,n) - ,n); -} - - diff --git a/externals/grill/flext/tutorial/stk2/package.txt b/externals/grill/flext/tutorial/stk2/package.txt deleted file mode 100644 index 27b74e30..00000000 --- a/externals/grill/flext/tutorial/stk2/package.txt +++ /dev/null @@ -1,2 +0,0 @@ -NAME=stk2~ -SRCS=main.cpp diff --git a/externals/grill/flext/tutorial/stk2/stk2.vcproj b/externals/grill/flext/tutorial/stk2/stk2.vcproj deleted file mode 100644 index 2958a08b..00000000 --- a/externals/grill/flext/tutorial/stk2/stk2.vcproj +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/flext/tutorial/thread1/Makefile.am b/externals/grill/flext/tutorial/thread1/Makefile.am deleted file mode 100644 index e8965b14..00000000 --- a/externals/grill/flext/tutorial/thread1/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -NAME = thread1 - -BUILT_SOURCES = main.cpp - -EXTRA_DIST = main.cpp \ - $(NAME).mcp \ - $(NAME).vcproj - -CXXFLAGS = @CXXFLAGS@ \ - @OPT_FLAGS@ \ - @INCLUDEDIR@ \ - -I../../source \ - $(DEFS) \ - -DFLEXT_SHARED - -LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \ - $(patsubst %,-framework %,$(FRAMEWORKS)) - -LIBS = @LIBS@ -lflext-pd - -FRAMEWORKS = @FRAMEWORKS@ - -TARGETDIR = @TARGETDIR@ - -TARGET =$(NAME).@EXTENSION@ - -OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES)) - -SYSDIR = @SYSDIR@ - - -# ----------------------------- targets -------------------------------- - -all-local: $(OBJECTS) - $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET) - strip --strip-unneeded ../$(TARGETDIR)/$(TARGET) - -./%.@OBJEXT@ : %.cpp - $(CXX) -c $(CXXFLAGS) $< -o $@ - -clean-local: - rm -f ../$(TARGETDIR)/$(TARGET) - rm -f ./$(OBJECTS) - -install-exec-local: - install ../$(TARGET) $(SYSDIR)extra diff --git a/externals/grill/flext/tutorial/thread1/main.cpp b/externals/grill/flext/tutorial/thread1/main.cpp deleted file mode 100644 index e5e0c0e3..00000000 --- a/externals/grill/flext/tutorial/thread1/main.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/* -flext tutorial - threads 1 - -Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -------------------------------------------------------------------------- - -This shows an example of a method running as a thread -*/ - -/* define FLEXT_THREADS for thread usage. Flext must also have been compiled with that defined! - it's even better to define that as a compiler flag (-D FLEXT_THREADS) for all files of the - flext external -*/ -#ifndef FLEXT_THREADS -#define FLEXT_THREADS -#endif - -#include - -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 400) -#error You need at least flext version 0.4.0 -#endif - - -class thread1: - public flext_base -{ - FLEXT_HEADER(thread1,flext_base) - -public: - thread1(); - -protected: - void m_start(); // method function - -private: - // define threaded callback for method m_start - // the same syntax as with FLEXT_CALLBACK is used here - FLEXT_THREAD(m_start) -}; - -FLEXT_NEW("thread1",thread1) - - - -thread1::thread1() -{ - AddInAnything(); - AddOutInt(); - - FLEXT_ADDBANG(0,m_start); // register method -} - -void thread1::m_start() -{ - // Please note that this functions needs about 10 seconds to complete - // Without threads it would block the real-time system - - // Okay, that functionality would be far more elegant with timers - // ... but hey, it's a demo! - - for(int i = 0; i < 20 && !ShouldExit(); ++i) { - ToOutInt(0,i); // output loop count -// post("%i",i); - - // wait for half a second - for(int j = 0; j < 5 && !ShouldExit(); ++j) Sleep(0.1f); - // note: we shall not block a thread for a longer time. - // The system might want to destroy the object in the meantime and - // expects thread termination. In such a case flext waits - // for 1 second by default, then it aborts the thread brutally - } - - // output a final zero - ToOutInt(0,0); -// post("end"); -} - - - diff --git a/externals/grill/flext/tutorial/thread1/package.txt b/externals/grill/flext/tutorial/thread1/package.txt deleted file mode 100644 index 3b07a03e..00000000 --- a/externals/grill/flext/tutorial/thread1/package.txt +++ /dev/null @@ -1,3 +0,0 @@ -NAME=thread1 -BUILDTYPE=multi -SRCS=main.cpp diff --git a/externals/grill/flext/tutorial/thread1/thread1.mcp b/externals/grill/flext/tutorial/thread1/thread1.mcp deleted file mode 100644 index 54fc8624..00000000 Binary files a/externals/grill/flext/tutorial/thread1/thread1.mcp and /dev/null differ diff --git a/externals/grill/flext/tutorial/thread1/thread1.vcproj b/externals/grill/flext/tutorial/thread1/thread1.vcproj deleted file mode 100644 index 3cf34ebf..00000000 --- a/externals/grill/flext/tutorial/thread1/thread1.vcproj +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/flext/tutorial/thread2/Makefile.am b/externals/grill/flext/tutorial/thread2/Makefile.am deleted file mode 100644 index 8b0e89da..00000000 --- a/externals/grill/flext/tutorial/thread2/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -NAME = thread2 - -BUILT_SOURCES = main.cpp - -EXTRA_DIST = main.cpp \ - $(NAME).mcp \ - $(NAME).vcproj - -CXXFLAGS = @CXXFLAGS@ \ - @OPT_FLAGS@ \ - @INCLUDEDIR@ \ - -I../../source \ - $(DEFS) \ - -DFLEXT_SHARED - -LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \ - $(patsubst %,-framework %,$(FRAMEWORKS)) - -LIBS = @LIBS@ -lflext-pd - -FRAMEWORKS = @FRAMEWORKS@ - -TARGETDIR = @TARGETDIR@ - -TARGET =$(NAME).@EXTENSION@ - -OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES)) - -SYSDIR = @SYSDIR@ - - -# ----------------------------- targets -------------------------------- - -all-local: $(OBJECTS) - $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET) - strip --strip-unneeded ../$(TARGETDIR)/$(TARGET) - -./%.@OBJEXT@ : %.cpp - $(CXX) -c $(CXXFLAGS) $< -o $@ - -clean-local: - rm -f ../$(TARGETDIR)/$(TARGET) - rm -f ./$(OBJECTS) - -install-exec-local: - install ../$(TARGET) $(SYSDIR)extra diff --git a/externals/grill/flext/tutorial/thread2/main.cpp b/externals/grill/flext/tutorial/thread2/main.cpp deleted file mode 100644 index 40e82b3c..00000000 --- a/externals/grill/flext/tutorial/thread2/main.cpp +++ /dev/null @@ -1,134 +0,0 @@ -/* -flext tutorial - threads 2 - -Copyright (c) 2002,2003 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -------------------------------------------------------------------------- - -This shows an example of multiple threads and syncing with a thread conditional -*/ - -/* define FLEXT_THREADS for thread usage. Flext must also have been compiled with that defined! - it's even better to define that as a compiler flag (-D FLEXT_THREADS) for all files of the - flext external -*/ -#ifndef FLEXT_THREADS -#define FLEXT_THREADS -#endif - -#include - -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 400) -#error You need at least flext version 0.4.0 -#endif - - -class thread2: - public flext_base -{ - FLEXT_HEADER(thread2,flext_base) - -public: - thread2(int del); - -protected: - void m_start(int st); - void m_stop(); - void m_text(); - - void m_textout(); - -private: - FLEXT_THREAD_I(m_start) // define threaded callback for method m_start - FLEXT_CALLBACK(m_stop) // normal callback for m_stop - FLEXT_CALLBACK(m_text) // turn on console output - - FLEXT_THREAD(m_textout) // text output - - float delay; - volatile int count; - - // caution: CodeWarrior seems to ignore volatile modifier!! - volatile bool stopit,running,blipping; // flags for running and stopping - - // thread conditional for stop signal - ThrCond cond; -}; - -FLEXT_NEW_1("thread2",thread2,int) - - - -thread2::thread2(int del): - delay(del/1000.f), - stopit(false), - running(false),blipping(false) -{ - AddInAnything(); - AddOutInt(2); - - FLEXT_ADDMETHOD(0,m_start); // register start for integer numbers (floats in PD) - FLEXT_ADDMETHOD_(0,"text",m_text); // register m_text method for "text" tag - FLEXT_ADDMETHOD_(0,"stop",m_stop); // register m_text method for "stop" tag -} - -void thread2::m_start(int st) -{ - // if already running, just set back the counter - if(running) { count = st; return; } - - running = true; - - // loop until either the system exit flag or the "stopit" flag is set - for(count = st; !ShouldExit() && !stopit; ++count) - { - Sleep(delay); - ToOutInt(0,count); // output loop count - } - - running = false; // change state flag -// cond.Lock(); // lock conditional - cond.Signal(); // signal changed flag to waiting "stop" method -// cond.Unlock(); // unlock conditional -} - -void thread2::m_stop() -{ -// cond.Lock(); // lock conditional - stopit = true; // set termination flag - - while(*(&running) || *(&blipping)) // workaround for CodeWarrior (doesn't honor volatile modifier!) - { - cond.Wait(); // wait for signal by running threads - } - - // --- Here, the threads should have stopped --- - - stopit = false; // reset flag -// cond.Unlock(); // unlock conditional -} - - -void thread2::m_text() -{ - FLEXT_CALLMETHOD(m_textout); -} - -void thread2::m_textout() -{ - if(blipping) return; - blipping = true; - - while(!ShouldExit() && !stopit) { - post("%i",count); - Sleep(1.f); - } - - blipping = false; // change state flag -// cond.Lock(); // lock conditional - cond.Signal(); // signal changed flag to waiting "stop" method -// cond.Unlock(); // unlock conditional -} - diff --git a/externals/grill/flext/tutorial/thread2/package.txt b/externals/grill/flext/tutorial/thread2/package.txt deleted file mode 100644 index 5d7ae4e8..00000000 --- a/externals/grill/flext/tutorial/thread2/package.txt +++ /dev/null @@ -1,3 +0,0 @@ -NAME=thread2 -BUILDTYPE=multi -SRCS=main.cpp diff --git a/externals/grill/flext/tutorial/thread2/thread2.mcp b/externals/grill/flext/tutorial/thread2/thread2.mcp deleted file mode 100755 index 9d051153..00000000 Binary files a/externals/grill/flext/tutorial/thread2/thread2.mcp and /dev/null differ diff --git a/externals/grill/flext/tutorial/thread2/thread2.vcproj b/externals/grill/flext/tutorial/thread2/thread2.vcproj deleted file mode 100644 index 99a25bad..00000000 --- a/externals/grill/flext/tutorial/thread2/thread2.vcproj +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/flext/tutorial/timer1/Makefile.am b/externals/grill/flext/tutorial/timer1/Makefile.am deleted file mode 100644 index c5ab15f3..00000000 --- a/externals/grill/flext/tutorial/timer1/Makefile.am +++ /dev/null @@ -1,51 +0,0 @@ -# -# automake template -# added by tim blechmann -# - -NAME = timer1 - -BUILT_SOURCES = main.cpp - -EXTRA_DIST = main.cpp \ - $(NAME).mcp \ - $(NAME).vcproj - -CXXFLAGS = @CXXFLAGS@ \ - @OPT_FLAGS@ \ - @INCLUDEDIR@ \ - -I../../source \ - $(DEFS) \ - -DFLEXT_SHARED - -LDFLAGS = @DYNAMIC_LDFLAGS@ @LDFLAGS@ \ - $(patsubst %,-framework %,$(FRAMEWORKS)) - -LIBS = @LIBS@ -lflext-pd - -FRAMEWORKS = @FRAMEWORKS@ - -TARGETDIR = @TARGETDIR@ - -TARGET =$(NAME).@EXTENSION@ - -OBJECTS = $(patsubst %.cpp,./%.@OBJEXT@,$(BUILT_SOURCES)) - -SYSDIR = @SYSDIR@ - - -# ----------------------------- targets -------------------------------- - -all-local: $(OBJECTS) - $(CXX) $(LDFLAGS) ./*.@OBJEXT@ $(LIBS) -o ../$(TARGETDIR)/$(TARGET) - strip --strip-unneeded ../$(TARGETDIR)/$(TARGET) - -./%.@OBJEXT@ : %.cpp - $(CXX) -c $(CXXFLAGS) $< -o $@ - -clean-local: - rm -f ../$(TARGETDIR)/$(TARGET) - rm -f ./$(OBJECTS) - -install-exec-local: - install ../$(TARGET) $(SYSDIR)extra diff --git a/externals/grill/flext/tutorial/timer1/main.cpp b/externals/grill/flext/tutorial/timer1/main.cpp deleted file mode 100644 index d751c784..00000000 --- a/externals/grill/flext/tutorial/timer1/main.cpp +++ /dev/null @@ -1,100 +0,0 @@ -/* -flext tutorial - timer 1 - -Copyright (c) 2003 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -------------------------------------------------------------------------- - -This is an example of an object using timers -*/ - -// enable flext attributes -#define FLEXT_ATTRIBUTES 1 - -// include flext header -#include - -// check for appropriate flext version -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 403) -#error You need at least flext version 0.4.3 -#endif - - -// define the class that stands for a pd/Max object - -class timer1: - // inherit from basic flext class - public flext_base -{ - // obligatory flext header (class name,base class name) - FLEXT_HEADER_S(timer1,flext_base,Setup) - -public: - // constructor - timer1(); - -protected: - // timers - Timer tmrA,tmrB; - - void m_getostime(float &f) { f = (float)GetOSTime(); } // method for operating system time attribute - void m_getrttime(float &f) { f = (float)GetTime(); } // method for real-time system time attribute - - void m_timerA(void *) { ToOutString(0,"Timer A"); } // timer A method - void m_timerB(void *) { ToOutString(0,"Timer B"); } // timer B method - - void m_resetA() { tmrA.Reset(); } // timer A reset - void m_resetB() { tmrB.Reset(); } // timer B reset - void m_oneshotA(int del) { tmrA.Delay(del*0.001); } // timer A one shot - void m_oneshotB(int del) { tmrB.Delay(del*0.001); } // timer B one shot - void m_periodicA(int del) { tmrA.Periodic(del*0.001); } // timer A periodic - void m_periodicB(int del) { tmrB.Periodic(del*0.001); } // timer B periodic - -private: - static void Setup(t_classid c); - - // register timer callbacks - FLEXT_CALLBACK_T(m_timerA) - FLEXT_CALLBACK_T(m_timerB) - - // register method callbacks - FLEXT_CALLGET_F(m_getostime) - FLEXT_CALLGET_F(m_getrttime) - FLEXT_CALLBACK(m_resetA) - FLEXT_CALLBACK(m_resetB) - FLEXT_CALLBACK_I(m_oneshotA) - FLEXT_CALLBACK_I(m_oneshotB) - FLEXT_CALLBACK_I(m_periodicA) - FLEXT_CALLBACK_I(m_periodicB) -}; - -// instantiate the class -FLEXT_NEW("timer1",timer1) - -// class setup function -void timer1::Setup(t_classid c) -{ - FLEXT_CADDATTR_GET(c,"ostime",m_getostime); // register attribute for OS time - FLEXT_CADDATTR_GET(c,"time",m_getrttime); // register attribute for RT time - - FLEXT_CADDMETHOD_(c,0,"resetA",m_resetA); // register reset method for timer A - FLEXT_CADDMETHOD_(c,0,"resetB",m_resetB); // register reset method for timer B - FLEXT_CADDMETHOD_(c,0,"oneshotA",m_oneshotA); // register one shot method for timer A - FLEXT_CADDMETHOD_(c,0,"oneshotB",m_oneshotB); // register one shot method for timer B - FLEXT_CADDMETHOD_(c,0,"periodicA",m_periodicA); // register periodic method for timer A - FLEXT_CADDMETHOD_(c,0,"periodicB",m_periodicB); // register periodic method for timer B -} - -// class constructor -timer1::timer1(): - tmrA(false),tmrB(false) -{ - AddInAnything("Control timers"); // add inlet for control commands - AddOutAnything("Timer output"); // add outlet for timer output - - // register methods - FLEXT_ADDTIMER(tmrA,m_timerA); // register method "m_timerA" for timer A - FLEXT_ADDTIMER(tmrB,m_timerB); // register method "m_timerB" for timer B -} diff --git a/externals/grill/flext/tutorial/timer1/package.txt b/externals/grill/flext/tutorial/timer1/package.txt deleted file mode 100644 index 4a23dcae..00000000 --- a/externals/grill/flext/tutorial/timer1/package.txt +++ /dev/null @@ -1,2 +0,0 @@ -NAME=timer1 -SRCS=main.cpp diff --git a/externals/grill/flext/tutorial/timer1/timer1.mcp b/externals/grill/flext/tutorial/timer1/timer1.mcp deleted file mode 100755 index af4e978a..00000000 Binary files a/externals/grill/flext/tutorial/timer1/timer1.mcp and /dev/null differ diff --git a/externals/grill/flext/tutorial/timer1/timer1.vcproj b/externals/grill/flext/tutorial/timer1/timer1.vcproj deleted file mode 100644 index ba39e622..00000000 --- a/externals/grill/flext/tutorial/timer1/timer1.vcproj +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/flext/tutorial/tutorial.sln b/externals/grill/flext/tutorial/tutorial.sln deleted file mode 100644 index 7d3ab1e8..00000000 --- a/externals/grill/flext/tutorial/tutorial.sln +++ /dev/null @@ -1,473 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adv1", "adv1\adv1.vcproj", "{A90E248D-52FD-458F-90A5-F20F7ED1D564}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adv2", "adv2\adv2.vcproj", "{B0C13353-9F2E-4714-A85C-6904B75B4345}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adv3", "adv3\adv3.vcproj", "{3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "attr1", "attr1\attr1.vcproj", "{9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "attr2", "attr2\attr2.vcproj", "{D891041F-303E-4E99-868F-11FF58E0C779}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "attr3", "attr3\attr3.vcproj", "{EA839AFE-95F0-47CF-9A78-72EF51CB9940}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bind1", "bind1\bind1.vcproj", "{C568D327-EA97-49C8-AF05-5FD7D35B6191}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "buffer1", "buffer1\buffer1.vcproj", "{723071BA-FE33-4C29-AB7B-6AB30B6057F7}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flext", "..\flext.vcproj", "{A0882797-7925-4AA3-93EA-7241487CECC5}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lib1", "lib1\lib1.vcproj", "{4560EF26-304A-424F-B882-1F65A1F4DC67}" - ProjectSection(ProjectDependencies) = postProject - {A0882797-7925-4AA3-93EA-7241487CECC5} = {A0882797-7925-4AA3-93EA-7241487CECC5} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "signal1", "signal1\signal1.vcproj", "{5F58157D-ABB1-4066-A143-C14515A3D7F9}" - ProjectSection(ProjectDependencies) = postProject - {A0882797-7925-4AA3-93EA-7241487CECC5} = {A0882797-7925-4AA3-93EA-7241487CECC5} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "signal2", "signal2\signal2.vcproj", "{B6D40688-2D3E-4DAA-8004-706FAA731F18}" - ProjectSection(ProjectDependencies) = postProject - {A0882797-7925-4AA3-93EA-7241487CECC5} = {A0882797-7925-4AA3-93EA-7241487CECC5} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "simple1", "simple1\simple1.vcproj", "{CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}" - ProjectSection(ProjectDependencies) = postProject - {A0882797-7925-4AA3-93EA-7241487CECC5} = {A0882797-7925-4AA3-93EA-7241487CECC5} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "simple2", "simple2\simple2.vcproj", "{4880ABD9-1598-4D5E-B4D3-558E8648405D}" - ProjectSection(ProjectDependencies) = postProject - {A0882797-7925-4AA3-93EA-7241487CECC5} = {A0882797-7925-4AA3-93EA-7241487CECC5} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "simple3", "simple3\simple3.vcproj", "{325D0FC7-AED9-487E-9FE5-4DEC305C2799}" - ProjectSection(ProjectDependencies) = postProject - {A0882797-7925-4AA3-93EA-7241487CECC5} = {A0882797-7925-4AA3-93EA-7241487CECC5} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sndobj1", "sndobj1\sndobj1.vcproj", "{A9B22491-39A4-4010-ABDF-5C8EF80432D7}" - ProjectSection(ProjectDependencies) = postProject - {A0882797-7925-4AA3-93EA-7241487CECC5} = {A0882797-7925-4AA3-93EA-7241487CECC5} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stk1", "stk1\stk1.vcproj", "{AD7C94F9-BB76-4588-BF89-491D7C6D40EC}" - ProjectSection(ProjectDependencies) = postProject - {A0882797-7925-4AA3-93EA-7241487CECC5} = {A0882797-7925-4AA3-93EA-7241487CECC5} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stk2", "stk2\stk2.vcproj", "{18A3D222-AC98-4CFF-82C0-E5421AB39981}" - ProjectSection(ProjectDependencies) = postProject - {A0882797-7925-4AA3-93EA-7241487CECC5} = {A0882797-7925-4AA3-93EA-7241487CECC5} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "thread1", "thread1\thread1.vcproj", "{702908EB-47A9-45D0-BCC5-3448C98C73E6}" - ProjectSection(ProjectDependencies) = postProject - {A0882797-7925-4AA3-93EA-7241487CECC5} = {A0882797-7925-4AA3-93EA-7241487CECC5} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "thread2", "thread2\thread2.vcproj", "{4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}" - ProjectSection(ProjectDependencies) = postProject - {A0882797-7925-4AA3-93EA-7241487CECC5} = {A0882797-7925-4AA3-93EA-7241487CECC5} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "timer1", "timer1\timer1.vcproj", "{EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}" - ProjectSection(ProjectDependencies) = postProject - {A0882797-7925-4AA3-93EA-7241487CECC5} = {A0882797-7925-4AA3-93EA-7241487CECC5} - EndProjectSection -EndProject -Global - GlobalSection(SourceCodeControl) = preSolution - SccNumberOfProjects = 21 - SccProjectUniqueName0 = adv1\\adv1.vcproj - SccProjectName0 = adv1 - SccLocalPath0 = adv1 - SccProvider0 = MSSCCI:Jalindi\u0020Igloo - CanCheckoutShared = true - SccProjectUniqueName1 = adv2\\adv2.vcproj - SccProjectName1 = adv2 - SccLocalPath1 = adv2 - SccProvider1 = MSSCCI:Jalindi\u0020Igloo - CanCheckoutShared = true - SccProjectUniqueName2 = adv3\\adv3.vcproj - SccProjectName2 = adv3 - SccLocalPath2 = adv3 - SccProvider2 = MSSCCI:Jalindi\u0020Igloo - CanCheckoutShared = true - SccProjectUniqueName3 = attr1\\attr1.vcproj - SccProjectName3 = attr1 - SccLocalPath3 = attr1 - SccProvider3 = MSSCCI:Jalindi\u0020Igloo - CanCheckoutShared = true - SccProjectUniqueName4 = attr2\\attr2.vcproj - SccProjectName4 = attr2 - SccLocalPath4 = attr2 - SccProvider4 = MSSCCI:Jalindi\u0020Igloo - CanCheckoutShared = true - SccProjectUniqueName5 = attr3\\attr3.vcproj - SccProjectName5 = attr3 - SccLocalPath5 = attr3 - SccProvider5 = MSSCCI:Jalindi\u0020Igloo - CanCheckoutShared = true - SccProjectUniqueName6 = bind1\\bind1.vcproj - SccProjectName6 = max/flext/tutorial/bind1 - SccLocalPath6 = bind1 - SccProvider6 = MSSCCI:Jalindi\u0020Igloo - CanCheckoutShared = true - SccProjectUniqueName7 = buffer1\\buffer1.vcproj - SccProjectName7 = max/flext/tutorial/buffer1 - SccLocalPath7 = buffer1 - SccProvider7 = MSSCCI:Jalindi\u0020Igloo - CanCheckoutShared = true - SccProjectUniqueName8 = ..\\flext.vcproj - SccProjectName8 = max/flext - SccLocalPath8 = .. - SccProvider8 = MSSCCI:Jalindi\u0020Igloo - CanCheckoutShared = true - SccProjectUniqueName9 = lib1\\lib1.vcproj - SccProjectName9 = lib1 - SccLocalPath9 = lib1 - SccProvider9 = MSSCCI:Jalindi\u0020Igloo - CanCheckoutShared = true - SccProjectUniqueName10 = signal1\\signal1.vcproj - SccProjectName10 = max/flext/tutorial/signal1 - SccLocalPath10 = signal1 - SccProvider10 = MSSCCI:Jalindi\u0020Igloo - CanCheckoutShared = true - SccProjectUniqueName11 = signal2\\signal2.vcproj - SccProjectName11 = max/flext/tutorial/signal2 - SccLocalPath11 = signal2 - SccProvider11 = MSSCCI:Jalindi\u0020Igloo - CanCheckoutShared = true - SccProjectUniqueName12 = simple1\\simple1.vcproj - SccProjectName12 = simple1 - SccLocalPath12 = simple1 - SccProvider12 = MSSCCI:Jalindi\u0020Igloo - CanCheckoutShared = true - SccProjectUniqueName13 = simple2\\simple2.vcproj - SccProjectName13 = simple2 - SccLocalPath13 = simple2 - SccProvider13 = MSSCCI:Jalindi\u0020Igloo - CanCheckoutShared = true - SccProjectUniqueName14 = simple3\\simple3.vcproj - SccProjectName14 = simple3 - SccLocalPath14 = simple3 - SccProvider14 = MSSCCI:Jalindi\u0020Igloo - CanCheckoutShared = true - SccProjectUniqueName15 = sndobj1\\sndobj1.vcproj - SccProjectName15 = sndobj1 - SccLocalPath15 = sndobj1 - SccProvider15 = MSSCCI:Jalindi\u0020Igloo - CanCheckoutShared = true - SccProjectUniqueName16 = stk1\\stk1.vcproj - SccProjectName16 = stk1 - SccLocalPath16 = stk1 - SccProvider16 = MSSCCI:Jalindi\u0020Igloo - CanCheckoutShared = true - SccProjectUniqueName17 = stk2\\stk2.vcproj - SccProjectName17 = stk2 - SccLocalPath17 = stk2 - SccProvider17 = MSSCCI:Jalindi\u0020Igloo - CanCheckoutShared = true - SccProjectUniqueName18 = thread1\\thread1.vcproj - SccProjectName18 = thread1 - SccLocalPath18 = thread1 - SccProvider18 = MSSCCI:Jalindi\u0020Igloo - CanCheckoutShared = true - SccProjectUniqueName19 = thread2\\thread2.vcproj - SccProjectName19 = max/flext/tutorial/thread2 - SccLocalPath19 = thread2 - SccProvider19 = MSSCCI:Jalindi\u0020Igloo - CanCheckoutShared = true - SccProjectUniqueName20 = timer1\\timer1.vcproj - SccProjectName20 = timer1 - SccLocalPath20 = timer1 - SccProvider20 = MSSCCI:Jalindi\u0020Igloo - CanCheckoutShared = true - EndGlobalSection - GlobalSection(SolutionConfiguration) = preSolution - Debug = Debug - Release = Release - Threads Debug = Threads Debug - Threads DLL Debug = Threads DLL Debug - Threads DLL Release = Threads DLL Release - Threads Release = Threads Release - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {A90E248D-52FD-458F-90A5-F20F7ED1D564}.Debug.ActiveCfg = Debug|Win32 - {A90E248D-52FD-458F-90A5-F20F7ED1D564}.Debug.Build.0 = Debug|Win32 - {A90E248D-52FD-458F-90A5-F20F7ED1D564}.Release.ActiveCfg = Release|Win32 - {A90E248D-52FD-458F-90A5-F20F7ED1D564}.Release.Build.0 = Release|Win32 - {A90E248D-52FD-458F-90A5-F20F7ED1D564}.Threads Debug.ActiveCfg = Debug|Win32 - {A90E248D-52FD-458F-90A5-F20F7ED1D564}.Threads Debug.Build.0 = Debug|Win32 - {A90E248D-52FD-458F-90A5-F20F7ED1D564}.Threads DLL Debug.ActiveCfg = Debug|Win32 - {A90E248D-52FD-458F-90A5-F20F7ED1D564}.Threads DLL Debug.Build.0 = Debug|Win32 - {A90E248D-52FD-458F-90A5-F20F7ED1D564}.Threads DLL Release.ActiveCfg = Release|Win32 - {A90E248D-52FD-458F-90A5-F20F7ED1D564}.Threads DLL Release.Build.0 = Release|Win32 - {A90E248D-52FD-458F-90A5-F20F7ED1D564}.Threads Release.ActiveCfg = Release|Win32 - {A90E248D-52FD-458F-90A5-F20F7ED1D564}.Threads Release.Build.0 = Release|Win32 - {B0C13353-9F2E-4714-A85C-6904B75B4345}.Debug.ActiveCfg = Debug|Win32 - {B0C13353-9F2E-4714-A85C-6904B75B4345}.Debug.Build.0 = Debug|Win32 - {B0C13353-9F2E-4714-A85C-6904B75B4345}.Release.ActiveCfg = Release|Win32 - {B0C13353-9F2E-4714-A85C-6904B75B4345}.Release.Build.0 = Release|Win32 - {B0C13353-9F2E-4714-A85C-6904B75B4345}.Threads Debug.ActiveCfg = Debug|Win32 - {B0C13353-9F2E-4714-A85C-6904B75B4345}.Threads Debug.Build.0 = Debug|Win32 - {B0C13353-9F2E-4714-A85C-6904B75B4345}.Threads DLL Debug.ActiveCfg = Debug|Win32 - {B0C13353-9F2E-4714-A85C-6904B75B4345}.Threads DLL Debug.Build.0 = Debug|Win32 - {B0C13353-9F2E-4714-A85C-6904B75B4345}.Threads DLL Release.ActiveCfg = Release|Win32 - {B0C13353-9F2E-4714-A85C-6904B75B4345}.Threads DLL Release.Build.0 = Release|Win32 - {B0C13353-9F2E-4714-A85C-6904B75B4345}.Threads Release.ActiveCfg = Release|Win32 - {B0C13353-9F2E-4714-A85C-6904B75B4345}.Threads Release.Build.0 = Release|Win32 - {3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}.Debug.ActiveCfg = Debug|Win32 - {3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}.Debug.Build.0 = Debug|Win32 - {3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}.Release.ActiveCfg = Release|Win32 - {3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}.Release.Build.0 = Release|Win32 - {3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}.Threads Debug.ActiveCfg = Debug|Win32 - {3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}.Threads Debug.Build.0 = Debug|Win32 - {3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}.Threads DLL Debug.ActiveCfg = Debug|Win32 - {3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}.Threads DLL Debug.Build.0 = Debug|Win32 - {3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}.Threads DLL Release.ActiveCfg = Release|Win32 - {3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}.Threads DLL Release.Build.0 = Release|Win32 - {3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}.Threads Release.ActiveCfg = Release|Win32 - {3F3FDEA7-90CC-43CF-A2C5-2BF345705B02}.Threads Release.Build.0 = Release|Win32 - {9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}.Debug.ActiveCfg = Debug|Win32 - {9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}.Debug.Build.0 = Debug|Win32 - {9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}.Release.ActiveCfg = Release|Win32 - {9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}.Release.Build.0 = Release|Win32 - {9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}.Threads Debug.ActiveCfg = Debug|Win32 - {9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}.Threads Debug.Build.0 = Debug|Win32 - {9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}.Threads DLL Debug.ActiveCfg = Debug|Win32 - {9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}.Threads DLL Debug.Build.0 = Debug|Win32 - {9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}.Threads DLL Release.ActiveCfg = Release|Win32 - {9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}.Threads DLL Release.Build.0 = Release|Win32 - {9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}.Threads Release.ActiveCfg = Release|Win32 - {9A54D435-A3E6-4AA6-ACE3-702D7C411E4E}.Threads Release.Build.0 = Release|Win32 - {D891041F-303E-4E99-868F-11FF58E0C779}.Debug.ActiveCfg = Debug|Win32 - {D891041F-303E-4E99-868F-11FF58E0C779}.Debug.Build.0 = Debug|Win32 - {D891041F-303E-4E99-868F-11FF58E0C779}.Release.ActiveCfg = Release|Win32 - {D891041F-303E-4E99-868F-11FF58E0C779}.Release.Build.0 = Release|Win32 - {D891041F-303E-4E99-868F-11FF58E0C779}.Threads Debug.ActiveCfg = Debug|Win32 - {D891041F-303E-4E99-868F-11FF58E0C779}.Threads Debug.Build.0 = Debug|Win32 - {D891041F-303E-4E99-868F-11FF58E0C779}.Threads DLL Debug.ActiveCfg = Debug|Win32 - {D891041F-303E-4E99-868F-11FF58E0C779}.Threads DLL Debug.Build.0 = Debug|Win32 - {D891041F-303E-4E99-868F-11FF58E0C779}.Threads DLL Release.ActiveCfg = Release|Win32 - {D891041F-303E-4E99-868F-11FF58E0C779}.Threads DLL Release.Build.0 = Release|Win32 - {D891041F-303E-4E99-868F-11FF58E0C779}.Threads Release.ActiveCfg = Release|Win32 - {D891041F-303E-4E99-868F-11FF58E0C779}.Threads Release.Build.0 = Release|Win32 - {EA839AFE-95F0-47CF-9A78-72EF51CB9940}.Debug.ActiveCfg = Debug|Win32 - {EA839AFE-95F0-47CF-9A78-72EF51CB9940}.Debug.Build.0 = Debug|Win32 - {EA839AFE-95F0-47CF-9A78-72EF51CB9940}.Release.ActiveCfg = Release|Win32 - {EA839AFE-95F0-47CF-9A78-72EF51CB9940}.Release.Build.0 = Release|Win32 - {EA839AFE-95F0-47CF-9A78-72EF51CB9940}.Threads Debug.ActiveCfg = Debug|Win32 - {EA839AFE-95F0-47CF-9A78-72EF51CB9940}.Threads Debug.Build.0 = Debug|Win32 - {EA839AFE-95F0-47CF-9A78-72EF51CB9940}.Threads DLL Debug.ActiveCfg = Debug|Win32 - {EA839AFE-95F0-47CF-9A78-72EF51CB9940}.Threads DLL Debug.Build.0 = Debug|Win32 - {EA839AFE-95F0-47CF-9A78-72EF51CB9940}.Threads DLL Release.ActiveCfg = Release|Win32 - {EA839AFE-95F0-47CF-9A78-72EF51CB9940}.Threads DLL Release.Build.0 = Release|Win32 - {EA839AFE-95F0-47CF-9A78-72EF51CB9940}.Threads Release.ActiveCfg = Release|Win32 - {EA839AFE-95F0-47CF-9A78-72EF51CB9940}.Threads Release.Build.0 = Release|Win32 - {C568D327-EA97-49C8-AF05-5FD7D35B6191}.Debug.ActiveCfg = Debug|Win32 - {C568D327-EA97-49C8-AF05-5FD7D35B6191}.Debug.Build.0 = Debug|Win32 - {C568D327-EA97-49C8-AF05-5FD7D35B6191}.Release.ActiveCfg = Release|Win32 - {C568D327-EA97-49C8-AF05-5FD7D35B6191}.Release.Build.0 = Release|Win32 - {C568D327-EA97-49C8-AF05-5FD7D35B6191}.Threads Debug.ActiveCfg = Debug|Win32 - {C568D327-EA97-49C8-AF05-5FD7D35B6191}.Threads Debug.Build.0 = Debug|Win32 - {C568D327-EA97-49C8-AF05-5FD7D35B6191}.Threads DLL Debug.ActiveCfg = Debug|Win32 - {C568D327-EA97-49C8-AF05-5FD7D35B6191}.Threads DLL Debug.Build.0 = Debug|Win32 - {C568D327-EA97-49C8-AF05-5FD7D35B6191}.Threads DLL Release.ActiveCfg = Release|Win32 - {C568D327-EA97-49C8-AF05-5FD7D35B6191}.Threads DLL Release.Build.0 = Release|Win32 - {C568D327-EA97-49C8-AF05-5FD7D35B6191}.Threads Release.ActiveCfg = Release|Win32 - {C568D327-EA97-49C8-AF05-5FD7D35B6191}.Threads Release.Build.0 = Release|Win32 - {723071BA-FE33-4C29-AB7B-6AB30B6057F7}.Debug.ActiveCfg = Debug|Win32 - {723071BA-FE33-4C29-AB7B-6AB30B6057F7}.Debug.Build.0 = Debug|Win32 - {723071BA-FE33-4C29-AB7B-6AB30B6057F7}.Release.ActiveCfg = Release|Win32 - {723071BA-FE33-4C29-AB7B-6AB30B6057F7}.Release.Build.0 = Release|Win32 - {723071BA-FE33-4C29-AB7B-6AB30B6057F7}.Threads Debug.ActiveCfg = Debug|Win32 - {723071BA-FE33-4C29-AB7B-6AB30B6057F7}.Threads Debug.Build.0 = Debug|Win32 - {723071BA-FE33-4C29-AB7B-6AB30B6057F7}.Threads DLL Debug.ActiveCfg = Debug|Win32 - {723071BA-FE33-4C29-AB7B-6AB30B6057F7}.Threads DLL Debug.Build.0 = Debug|Win32 - {723071BA-FE33-4C29-AB7B-6AB30B6057F7}.Threads DLL Release.ActiveCfg = Release|Win32 - {723071BA-FE33-4C29-AB7B-6AB30B6057F7}.Threads DLL Release.Build.0 = Release|Win32 - {723071BA-FE33-4C29-AB7B-6AB30B6057F7}.Threads Release.ActiveCfg = Release|Win32 - {723071BA-FE33-4C29-AB7B-6AB30B6057F7}.Threads Release.Build.0 = Release|Win32 - {A0882797-7925-4AA3-93EA-7241487CECC5}.Debug.ActiveCfg = Debug|Win32 - {A0882797-7925-4AA3-93EA-7241487CECC5}.Debug.Build.0 = Debug|Win32 - {A0882797-7925-4AA3-93EA-7241487CECC5}.Release.ActiveCfg = Release|Win32 - {A0882797-7925-4AA3-93EA-7241487CECC5}.Release.Build.0 = Release|Win32 - {A0882797-7925-4AA3-93EA-7241487CECC5}.Threads Debug.ActiveCfg = Threads Debug|Win32 - {A0882797-7925-4AA3-93EA-7241487CECC5}.Threads Debug.Build.0 = Threads Debug|Win32 - {A0882797-7925-4AA3-93EA-7241487CECC5}.Threads DLL Debug.ActiveCfg = Threads DLL Debug|Win32 - {A0882797-7925-4AA3-93EA-7241487CECC5}.Threads DLL Debug.Build.0 = Threads DLL Debug|Win32 - {A0882797-7925-4AA3-93EA-7241487CECC5}.Threads DLL Release.ActiveCfg = Threads DLL Release|Win32 - {A0882797-7925-4AA3-93EA-7241487CECC5}.Threads DLL Release.Build.0 = Threads DLL Release|Win32 - {A0882797-7925-4AA3-93EA-7241487CECC5}.Threads Release.ActiveCfg = Threads Release|Win32 - {A0882797-7925-4AA3-93EA-7241487CECC5}.Threads Release.Build.0 = Threads Release|Win32 - {4560EF26-304A-424F-B882-1F65A1F4DC67}.Debug.ActiveCfg = Debug|Win32 - {4560EF26-304A-424F-B882-1F65A1F4DC67}.Debug.Build.0 = Debug|Win32 - {4560EF26-304A-424F-B882-1F65A1F4DC67}.Release.ActiveCfg = Release|Win32 - {4560EF26-304A-424F-B882-1F65A1F4DC67}.Release.Build.0 = Release|Win32 - {4560EF26-304A-424F-B882-1F65A1F4DC67}.Threads Debug.ActiveCfg = Debug|Win32 - {4560EF26-304A-424F-B882-1F65A1F4DC67}.Threads Debug.Build.0 = Debug|Win32 - {4560EF26-304A-424F-B882-1F65A1F4DC67}.Threads DLL Debug.ActiveCfg = Debug|Win32 - {4560EF26-304A-424F-B882-1F65A1F4DC67}.Threads DLL Debug.Build.0 = Debug|Win32 - {4560EF26-304A-424F-B882-1F65A1F4DC67}.Threads DLL Release.ActiveCfg = Release|Win32 - {4560EF26-304A-424F-B882-1F65A1F4DC67}.Threads DLL Release.Build.0 = Release|Win32 - {4560EF26-304A-424F-B882-1F65A1F4DC67}.Threads Release.ActiveCfg = Release|Win32 - {4560EF26-304A-424F-B882-1F65A1F4DC67}.Threads Release.Build.0 = Release|Win32 - {5F58157D-ABB1-4066-A143-C14515A3D7F9}.Debug.ActiveCfg = Debug|Win32 - {5F58157D-ABB1-4066-A143-C14515A3D7F9}.Debug.Build.0 = Debug|Win32 - {5F58157D-ABB1-4066-A143-C14515A3D7F9}.Release.ActiveCfg = Release|Win32 - {5F58157D-ABB1-4066-A143-C14515A3D7F9}.Release.Build.0 = Release|Win32 - {5F58157D-ABB1-4066-A143-C14515A3D7F9}.Threads Debug.ActiveCfg = Debug|Win32 - {5F58157D-ABB1-4066-A143-C14515A3D7F9}.Threads Debug.Build.0 = Debug|Win32 - {5F58157D-ABB1-4066-A143-C14515A3D7F9}.Threads DLL Debug.ActiveCfg = Debug|Win32 - {5F58157D-ABB1-4066-A143-C14515A3D7F9}.Threads DLL Debug.Build.0 = Debug|Win32 - {5F58157D-ABB1-4066-A143-C14515A3D7F9}.Threads DLL Release.ActiveCfg = Release|Win32 - {5F58157D-ABB1-4066-A143-C14515A3D7F9}.Threads DLL Release.Build.0 = Release|Win32 - {5F58157D-ABB1-4066-A143-C14515A3D7F9}.Threads Release.ActiveCfg = Release|Win32 - {5F58157D-ABB1-4066-A143-C14515A3D7F9}.Threads Release.Build.0 = Release|Win32 - {B6D40688-2D3E-4DAA-8004-706FAA731F18}.Debug.ActiveCfg = Debug|Win32 - {B6D40688-2D3E-4DAA-8004-706FAA731F18}.Debug.Build.0 = Debug|Win32 - {B6D40688-2D3E-4DAA-8004-706FAA731F18}.Release.ActiveCfg = Release|Win32 - {B6D40688-2D3E-4DAA-8004-706FAA731F18}.Release.Build.0 = Release|Win32 - {B6D40688-2D3E-4DAA-8004-706FAA731F18}.Threads Debug.ActiveCfg = Debug|Win32 - {B6D40688-2D3E-4DAA-8004-706FAA731F18}.Threads Debug.Build.0 = Debug|Win32 - {B6D40688-2D3E-4DAA-8004-706FAA731F18}.Threads DLL Debug.ActiveCfg = Debug|Win32 - {B6D40688-2D3E-4DAA-8004-706FAA731F18}.Threads DLL Debug.Build.0 = Debug|Win32 - {B6D40688-2D3E-4DAA-8004-706FAA731F18}.Threads DLL Release.ActiveCfg = Release|Win32 - {B6D40688-2D3E-4DAA-8004-706FAA731F18}.Threads DLL Release.Build.0 = Release|Win32 - {B6D40688-2D3E-4DAA-8004-706FAA731F18}.Threads Release.ActiveCfg = Release|Win32 - {B6D40688-2D3E-4DAA-8004-706FAA731F18}.Threads Release.Build.0 = Release|Win32 - {CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}.Debug.ActiveCfg = Debug|Win32 - {CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}.Debug.Build.0 = Debug|Win32 - {CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}.Release.ActiveCfg = Release|Win32 - {CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}.Release.Build.0 = Release|Win32 - {CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}.Threads Debug.ActiveCfg = Debug|Win32 - {CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}.Threads Debug.Build.0 = Debug|Win32 - {CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}.Threads DLL Debug.ActiveCfg = Debug|Win32 - {CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}.Threads DLL Debug.Build.0 = Debug|Win32 - {CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}.Threads DLL Release.ActiveCfg = Release|Win32 - {CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}.Threads DLL Release.Build.0 = Release|Win32 - {CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}.Threads Release.ActiveCfg = Release|Win32 - {CF5E59F3-2AEE-40DD-8D59-8E8C407864F9}.Threads Release.Build.0 = Release|Win32 - {4880ABD9-1598-4D5E-B4D3-558E8648405D}.Debug.ActiveCfg = Debug|Win32 - {4880ABD9-1598-4D5E-B4D3-558E8648405D}.Debug.Build.0 = Debug|Win32 - {4880ABD9-1598-4D5E-B4D3-558E8648405D}.Release.ActiveCfg = Release|Win32 - {4880ABD9-1598-4D5E-B4D3-558E8648405D}.Release.Build.0 = Release|Win32 - {4880ABD9-1598-4D5E-B4D3-558E8648405D}.Threads Debug.ActiveCfg = Debug|Win32 - {4880ABD9-1598-4D5E-B4D3-558E8648405D}.Threads Debug.Build.0 = Debug|Win32 - {4880ABD9-1598-4D5E-B4D3-558E8648405D}.Threads DLL Debug.ActiveCfg = Debug|Win32 - {4880ABD9-1598-4D5E-B4D3-558E8648405D}.Threads DLL Debug.Build.0 = Debug|Win32 - {4880ABD9-1598-4D5E-B4D3-558E8648405D}.Threads DLL Release.ActiveCfg = Release|Win32 - {4880ABD9-1598-4D5E-B4D3-558E8648405D}.Threads DLL Release.Build.0 = Release|Win32 - {4880ABD9-1598-4D5E-B4D3-558E8648405D}.Threads Release.ActiveCfg = Release|Win32 - {4880ABD9-1598-4D5E-B4D3-558E8648405D}.Threads Release.Build.0 = Release|Win32 - {325D0FC7-AED9-487E-9FE5-4DEC305C2799}.Debug.ActiveCfg = Debug|Win32 - {325D0FC7-AED9-487E-9FE5-4DEC305C2799}.Debug.Build.0 = Debug|Win32 - {325D0FC7-AED9-487E-9FE5-4DEC305C2799}.Release.ActiveCfg = Release|Win32 - {325D0FC7-AED9-487E-9FE5-4DEC305C2799}.Release.Build.0 = Release|Win32 - {325D0FC7-AED9-487E-9FE5-4DEC305C2799}.Threads Debug.ActiveCfg = Debug|Win32 - {325D0FC7-AED9-487E-9FE5-4DEC305C2799}.Threads Debug.Build.0 = Debug|Win32 - {325D0FC7-AED9-487E-9FE5-4DEC305C2799}.Threads DLL Debug.ActiveCfg = Debug|Win32 - {325D0FC7-AED9-487E-9FE5-4DEC305C2799}.Threads DLL Debug.Build.0 = Debug|Win32 - {325D0FC7-AED9-487E-9FE5-4DEC305C2799}.Threads DLL Release.ActiveCfg = Release|Win32 - {325D0FC7-AED9-487E-9FE5-4DEC305C2799}.Threads DLL Release.Build.0 = Release|Win32 - {325D0FC7-AED9-487E-9FE5-4DEC305C2799}.Threads Release.ActiveCfg = Release|Win32 - {325D0FC7-AED9-487E-9FE5-4DEC305C2799}.Threads Release.Build.0 = Release|Win32 - {A9B22491-39A4-4010-ABDF-5C8EF80432D7}.Debug.ActiveCfg = Debug|Win32 - {A9B22491-39A4-4010-ABDF-5C8EF80432D7}.Debug.Build.0 = Debug|Win32 - {A9B22491-39A4-4010-ABDF-5C8EF80432D7}.Release.ActiveCfg = Release|Win32 - {A9B22491-39A4-4010-ABDF-5C8EF80432D7}.Release.Build.0 = Release|Win32 - {A9B22491-39A4-4010-ABDF-5C8EF80432D7}.Threads Debug.ActiveCfg = Debug|Win32 - {A9B22491-39A4-4010-ABDF-5C8EF80432D7}.Threads Debug.Build.0 = Debug|Win32 - {A9B22491-39A4-4010-ABDF-5C8EF80432D7}.Threads DLL Debug.ActiveCfg = Debug|Win32 - {A9B22491-39A4-4010-ABDF-5C8EF80432D7}.Threads DLL Debug.Build.0 = Debug|Win32 - {A9B22491-39A4-4010-ABDF-5C8EF80432D7}.Threads DLL Release.ActiveCfg = Release|Win32 - {A9B22491-39A4-4010-ABDF-5C8EF80432D7}.Threads DLL Release.Build.0 = Release|Win32 - {A9B22491-39A4-4010-ABDF-5C8EF80432D7}.Threads Release.ActiveCfg = Release|Win32 - {A9B22491-39A4-4010-ABDF-5C8EF80432D7}.Threads Release.Build.0 = Release|Win32 - {AD7C94F9-BB76-4588-BF89-491D7C6D40EC}.Debug.ActiveCfg = Debug|Win32 - {AD7C94F9-BB76-4588-BF89-491D7C6D40EC}.Debug.Build.0 = Debug|Win32 - {AD7C94F9-BB76-4588-BF89-491D7C6D40EC}.Release.ActiveCfg = Release|Win32 - {AD7C94F9-BB76-4588-BF89-491D7C6D40EC}.Release.Build.0 = Release|Win32 - {AD7C94F9-BB76-4588-BF89-491D7C6D40EC}.Threads Debug.ActiveCfg = Debug|Win32 - {AD7C94F9-BB76-4588-BF89-491D7C6D40EC}.Threads Debug.Build.0 = Debug|Win32 - {AD7C94F9-BB76-4588-BF89-491D7C6D40EC}.Threads DLL Debug.ActiveCfg = Debug|Win32 - {AD7C94F9-BB76-4588-BF89-491D7C6D40EC}.Threads DLL Debug.Build.0 = Debug|Win32 - {AD7C94F9-BB76-4588-BF89-491D7C6D40EC}.Threads DLL Release.ActiveCfg = Release|Win32 - {AD7C94F9-BB76-4588-BF89-491D7C6D40EC}.Threads DLL Release.Build.0 = Release|Win32 - {AD7C94F9-BB76-4588-BF89-491D7C6D40EC}.Threads Release.ActiveCfg = Release|Win32 - {AD7C94F9-BB76-4588-BF89-491D7C6D40EC}.Threads Release.Build.0 = Release|Win32 - {18A3D222-AC98-4CFF-82C0-E5421AB39981}.Debug.ActiveCfg = Debug|Win32 - {18A3D222-AC98-4CFF-82C0-E5421AB39981}.Debug.Build.0 = Debug|Win32 - {18A3D222-AC98-4CFF-82C0-E5421AB39981}.Release.ActiveCfg = Release|Win32 - {18A3D222-AC98-4CFF-82C0-E5421AB39981}.Release.Build.0 = Release|Win32 - {18A3D222-AC98-4CFF-82C0-E5421AB39981}.Threads Debug.ActiveCfg = Debug|Win32 - {18A3D222-AC98-4CFF-82C0-E5421AB39981}.Threads Debug.Build.0 = Debug|Win32 - {18A3D222-AC98-4CFF-82C0-E5421AB39981}.Threads DLL Debug.ActiveCfg = Debug|Win32 - {18A3D222-AC98-4CFF-82C0-E5421AB39981}.Threads DLL Debug.Build.0 = Debug|Win32 - {18A3D222-AC98-4CFF-82C0-E5421AB39981}.Threads DLL Release.ActiveCfg = Release|Win32 - {18A3D222-AC98-4CFF-82C0-E5421AB39981}.Threads DLL Release.Build.0 = Release|Win32 - {18A3D222-AC98-4CFF-82C0-E5421AB39981}.Threads Release.ActiveCfg = Release|Win32 - {18A3D222-AC98-4CFF-82C0-E5421AB39981}.Threads Release.Build.0 = Release|Win32 - {702908EB-47A9-45D0-BCC5-3448C98C73E6}.Debug.ActiveCfg = Debug|Win32 - {702908EB-47A9-45D0-BCC5-3448C98C73E6}.Debug.Build.0 = Debug|Win32 - {702908EB-47A9-45D0-BCC5-3448C98C73E6}.Release.ActiveCfg = Release|Win32 - {702908EB-47A9-45D0-BCC5-3448C98C73E6}.Release.Build.0 = Release|Win32 - {702908EB-47A9-45D0-BCC5-3448C98C73E6}.Threads Debug.ActiveCfg = Debug|Win32 - {702908EB-47A9-45D0-BCC5-3448C98C73E6}.Threads Debug.Build.0 = Debug|Win32 - {702908EB-47A9-45D0-BCC5-3448C98C73E6}.Threads DLL Debug.ActiveCfg = Debug|Win32 - {702908EB-47A9-45D0-BCC5-3448C98C73E6}.Threads DLL Debug.Build.0 = Debug|Win32 - {702908EB-47A9-45D0-BCC5-3448C98C73E6}.Threads DLL Release.ActiveCfg = Release|Win32 - {702908EB-47A9-45D0-BCC5-3448C98C73E6}.Threads DLL Release.Build.0 = Release|Win32 - {702908EB-47A9-45D0-BCC5-3448C98C73E6}.Threads Release.ActiveCfg = Release|Win32 - {702908EB-47A9-45D0-BCC5-3448C98C73E6}.Threads Release.Build.0 = Release|Win32 - {4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}.Debug.ActiveCfg = Debug|Win32 - {4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}.Debug.Build.0 = Debug|Win32 - {4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}.Release.ActiveCfg = Release|Win32 - {4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}.Release.Build.0 = Release|Win32 - {4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}.Threads Debug.ActiveCfg = Debug|Win32 - {4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}.Threads Debug.Build.0 = Debug|Win32 - {4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}.Threads DLL Debug.ActiveCfg = Debug|Win32 - {4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}.Threads DLL Debug.Build.0 = Debug|Win32 - {4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}.Threads DLL Release.ActiveCfg = Release|Win32 - {4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}.Threads DLL Release.Build.0 = Release|Win32 - {4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}.Threads Release.ActiveCfg = Release|Win32 - {4CC4B09F-1D36-46C7-A1DE-3C4DC366F485}.Threads Release.Build.0 = Release|Win32 - {EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}.Debug.ActiveCfg = Debug|Win32 - {EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}.Debug.Build.0 = Debug|Win32 - {EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}.Release.ActiveCfg = Release|Win32 - {EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}.Release.Build.0 = Release|Win32 - {EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}.Threads Debug.ActiveCfg = Debug|Win32 - {EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}.Threads Debug.Build.0 = Debug|Win32 - {EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}.Threads DLL Debug.ActiveCfg = Debug|Win32 - {EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}.Threads DLL Debug.Build.0 = Debug|Win32 - {EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}.Threads DLL Release.ActiveCfg = Release|Win32 - {EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}.Threads DLL Release.Build.0 = Release|Win32 - {EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}.Threads Release.ActiveCfg = Release|Win32 - {EAA8D47B-CFD7-40AC-92A8-189BEF3E8C64}.Threads Release.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal diff --git a/externals/grill/guitest/build-pd-linux.sh b/externals/grill/guitest/build-pd-linux.sh deleted file mode 100644 index 413650f7..00000000 --- a/externals/grill/guitest/build-pd-linux.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -. config-pd-linux.txt - -make -f makefile.pd-linux && -{ - if [ $INSTPATH != "" ]; then - echo Now install as root - su -c "make -f makefile.pd-linux install" - fi -} diff --git a/externals/grill/guitest/config-pd-linux.txt b/externals/grill/guitest/config-pd-linux.txt deleted file mode 100644 index 7a0d3302..00000000 --- a/externals/grill/guitest/config-pd-linux.txt +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright (c) 2002-2004 Thomas Grill (xovo@gmx.net) -# - -# your c++ compiler (define only if it's different than g++) -# CXX=g++ - -# where are the PD header files? -# leave it blank if it is a system directory (like /usr/local/include), -# since gcc >= 3.2 complains about it -PDPATH=/usr/src/pd-0.37-0/src - -# where do the flext libraries reside? -FLEXTPATH=/usr/local/lib/pd/flext - -# where should flext libraries be built? -TARGDIR=./pd-linux - -# where should the external be installed? -# (leave blank to omit installation) -INSTPATH=/usr/local/lib/pd/extra - -# user defined compiler flags -UFLAGS= - -# define for shared build -# FLEXT_SHARED=1 - diff --git a/externals/grill/guitest/flgui.cpp b/externals/grill/guitest/flgui.cpp deleted file mode 100644 index dc280b4b..00000000 --- a/externals/grill/guitest/flgui.cpp +++ /dev/null @@ -1,781 +0,0 @@ -#include "flgui.h" -#include "flguiobj.h" -#include "flinternal.h" - -#include -#include -#include - - -#if FLEXT_SYS == FLEXT_SYS_PD -t_class *flext_gui::px_class = NULL; -t_class *flext_gui::pxkey_class = NULL; - -struct flext_gui::px_object // no virtual table! -{ - t_object obj; // MUST reside at memory offset 0 - t_canvas *canv; - - void init(t_canvas *c) { canv = c; } -}; - -struct flext_gui::pxkey_object // no virtual table! -{ - t_object obj; // MUST reside at memory offset 0 - flext_gui *th; - - void init(flext_gui *t) { th = t; } -}; -#endif - - -flext_gui::flext_gui(int xs,int ys): - objs(NULL), -#if FLEXT_SYS == FLEXT_SYS_PD - xsize(xs),ysize(ys), -#endif -#if FLEXT_SYS == FLEXT_SYS_MAX - curx(-1),cury(-1),curmod(-1), - created(false), -#endif - bindsym(NULL) -{ - canvas = new FCanvas(thisCanvas()); - objs = new GuiGroup(canvas); - -#if FLEXT_SYS == FLEXT_SYS_PD - AddCanvas(); -#else - t_box *b = (t_box *)gensym("#B")->s_thing; - - int x = b->b_rect.left,y = b->b_rect.top; - t_pxbox *p = thisHdr(); - box_new(&p->z_box, thisCanvas(), F_DRAWFIRSTIN | F_GROWBOTH | F_SAVVY,x,y,x+xs,y+ys); - p->z_box.b_firstin = (void *)p; /* it's not really an inlet */ - box_ready(&p->z_box); -#endif -} - -flext_gui::~flext_gui() -{ -#if FLEXT_SYS == FLEXT_SYS_PD - RmvCanvas(); -#endif - - delete objs; - delete canvas; -} - - -void flext_gui::setup(t_classid c) -{ -#if FLEXT_SYS == FLEXT_SYS_PD - SetWidget(c); - - pxkey_class = class_new(gensym("flext_gui key proxy"),NULL,NULL,sizeof(pxkey_object),CLASS_PD|CLASS_NOINLET, A_NULL); - add_anything(pxkey_class,pxkey_method); - pxkey = (pxkey_object *)pd_new(pxkey_class); - - pd_bind(&pxkey_class,gensym("#keyname")); -// pd_bind(&pxkey_class,gensym("#key")); -// pd_bind(&pxkey_class,gensym("#keyup")); - - gcanv = NULL; - -#ifdef DIRECT_TK - px_class = class_new(gensym("flext_gui proxy"),NULL,NULL,sizeof(px_object),CLASS_PD|CLASS_NOINLET, A_NULL); - add_anything(px_class,px_method); - - gcm_motion = MakeSymbol("_tk_motion"); - gcm_mousekey = MakeSymbol("_tk_mousekey"); - gcm_mousewheel = MakeSymbol("_tk_mousewheel"); - gcm_key = MakeSymbol("_tk_key"); - gcm_destroy = MakeSymbol("_tk_destroy"); -#endif - - // this is wrong if a modifier key is pressed during creation of the first object..... - curmod = 0; - - - - sys_gui( - "proc flgui_apply {id} {\n" - // strip "." from the TK id to make a variable name suffix - "set vid [string trimleft $id .]\n" - - // for each variable, make a local variable to hold its name... - "set var_graph_width [concat graph_width_$vid]\n" - "global $var_graph_width\n" - "set var_graph_height [concat graph_height_$vid]\n" - "global $var_graph_height\n" - "set var_graph_draw [concat graph_draw_$vid]\n" - "global $var_graph_draw\n" - - "set cmd [concat $id dialog [eval concat $$var_graph_width] [eval concat $$var_graph_height] [eval concat $$var_graph_draw] \\;]\n" - // puts stderr $cmd - "pd $cmd\n" - "}\n" - - "proc flgui_cancel {id} {\n" - "set cmd [concat $id cancel \\;]\n" - // puts stderr $cmd - "pd $cmd\n" - "}\n" - - "proc flgui_ok {id} {\n" - "flgui_apply $id\n" - "flgui_cancel $id\n" - "}\n" - - "proc pdtk_flgui_dialog {id width height draw} {\n" - "set vid [string trimleft $id .]\n" - - "set var_graph_width [concat graph_width_$vid]\n" - "global $var_graph_width\n" - "set var_graph_height [concat graph_height_$vid]\n" - "global $var_graph_height\n" - "set var_graph_draw [concat graph_draw_$vid]\n" - "global $var_graph_draw\n" - - "set $var_graph_width $width\n" - "set $var_graph_height $height\n" - "set $var_graph_draw $draw\n" - - "toplevel $id\n" - "wm title $id {flext}\n" - "wm protocol $id WM_DELETE_WINDOW [concat flgui_cancel $id]\n" - - "label $id.label -text {Attributes}\n" - "pack $id.label -side top\n" - - "frame $id.buttonframe\n" - "pack $id.buttonframe -side bottom -fill x -pady 2m\n" - - "button $id.buttonframe.cancel -text {Cancel} -command \"flgui_cancel $id\"\n" - "button $id.buttonframe.apply -text {Apply} -command \"flgui_apply $id\"\n" - "button $id.buttonframe.ok -text {OK} -command \"flgui_ok $id\"\n" - - "pack $id.buttonframe.cancel -side left -expand 1\n" - "pack $id.buttonframe.apply -side left -expand 1\n" - "pack $id.buttonframe.ok -side left -expand 1\n" - - "frame $id.1rangef\n" - "pack $id.1rangef -side top\n" - "label $id.1rangef.lwidth -text \"Width :\"\n" - "entry $id.1rangef.width -textvariable $var_graph_width -width 7\n" - "pack $id.1rangef.lwidth $id.1rangef.width -side left\n" - - "frame $id.2rangef\n" - "pack $id.2rangef -side top\n" - "label $id.2rangef.lheight -text \"Height :\"\n" - "entry $id.2rangef.height -textvariable $var_graph_height -width 7\n" - "pack $id.2rangef.lheight $id.2rangef.height -side left\n" - - "checkbutton $id.draw -text {Draw Sample} -variable $var_graph_draw -anchor w\n" - "pack $id.draw -side top\n" - - "bind $id.1rangef.width [concat flgui_ok $id]\n" - "bind $id.2rangef.height [concat flgui_ok $id]\n" - "focus $id.1rangef.width\n" - "}\n" - ); - -#else - addmess((method)sg_update, "update", A_CANT, A_NULL); - addmess((method)sg_click, "click", A_CANT, A_NULL); - addmess((method)sg_psave, "psave", A_CANT, A_NULL); - addmess((method)sg_bfont, "bfont", A_CANT, A_NULL); - addmess((method)sg_key, "key", A_CANT, A_NULL); - addmess((method)sg_bidle, "bidle", A_CANT, A_NULL); -#endif -} - -#if FLEXT_SYS == FLEXT_SYS_PD - -// this event mask declares supported events -int flext_gui::evmask = evMotion|evMouseDown|evMouseDrag|evKeyDown|evKeyUp|evKeyRepeat; -int flext_gui::curmod = 0; -flext_gui::pxkey_object *flext_gui::pxkey = NULL; -flext_gui::guicanv *flext_gui::gcanv = NULL; - -#ifdef DIRECT_TK -const t_symbol *flext_gui::gcm_motion = NULL; -const t_symbol *flext_gui::gcm_mousekey = NULL; -const t_symbol *flext_gui::gcm_mousewheel = NULL; -const t_symbol *flext_gui::gcm_key = NULL; -const t_symbol *flext_gui::gcm_destroy = NULL; - -void flext_gui::px_method(px_object *obj,const t_symbol *s,int argc,t_atom *argv) -{ - guicanv *ix = gcanv; - for(; ix && ix->canv != obj->canv; ix = ix->nxt); - - if(ix) { - CBParams parms; - - if(s == gcm_motion) { - parms.kind = evMotion; - parms.pMotion.x = GetAInt(argv[0]); - parms.pMotion.y = GetAInt(argv[1]); - parms.pMotion.mod = GetAInt(argv[2]); - } - else if(s == gcm_mousekey) { - parms.kind = GetAInt(argv[0])?evMouseDown:evMouseUp; - parms.pMouseKey.x = GetAInt(argv[1]); - parms.pMouseKey.y = GetAInt(argv[2]); - parms.pMouseKey.b = GetAInt(argv[3]); - parms.pMouseKey.mod = GetAInt(argv[4]); - } - else if(s == gcm_mousewheel) { - parms.kind = evMouseWheel; - parms.pMouseWheel.x = GetAInt(argv[0]); - parms.pMouseWheel.y = GetAInt(argv[1]); - parms.pMouseWheel.mod = GetAInt(argv[2]); - parms.pMouseWheel.delta = GetAInt(argv[3]); - } - else if(s == gcm_key) { - parms.kind = GetAInt(argv[0])?evKeyDown:evKeyUp; - parms.pKey.k = GetAInt(argv[1]); - parms.pKey.a = GetAInt(argv[2]); -// parms.pKey.n = GetAInt(argv[3]); - parms.pKey.mod = GetAInt(argv[4]); - } - else if(s == gcm_destroy) { -// post("TK destroy"); - DelCanvas(ix->canv); - } - - if(parms.kind != evNone) { - for(canvobj *co = ix->head; co; co = co->nxt) - co->guiobj->m_Method(parms); - } - - } - else - error("flext_gui: canvas not found!"); -} - -#endif - -static const char *extkeys[] = { - "Escape","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12", - "Prior","Next","Home","End","Delete","Insert","" -}; - -void flext_gui::pxkey_method(pxkey_object *obj,const t_symbol *s,int argc,t_atom *argv) -{ -/* - if(s == sym_float && argc == 1) { - lastkey = GetInt(argv[0]); - } - else -*/ - if(s == sym_list && argc == 2) { - CBParams p; - - bool down = GetABool(argv[0]); - const char *str = GetString(argv[1]); - int code = str[0]; - int asc = code; - int mod = mod_None; - if(code && str[1] != 0) { - code = asc = 0; - if(GetSymbol(argv[1]) == MakeSymbol("Shift_L") || GetSymbol(argv[1]) == MakeSymbol("Shift_R")) { - code = 2001; - mod = mod_Shift; - } - else if(GetSymbol(argv[1]) == MakeSymbol("Control_L") || GetSymbol(argv[1]) == MakeSymbol("Control_R")) { - code = 2002; - mod = mod_Ctrl; - } - else if(GetSymbol(argv[1]) == MakeSymbol("Alt_L") || GetSymbol(argv[1]) == MakeSymbol("Alt_R")) { - code = 2003; - mod = mod_Alt; - } - else { - for(int i = 0;; ++i) { - const char *ci = extkeys[i]; - if(!*ci) break; - if(GetSymbol(argv[1]) == MakeSymbol(ci)) { - code = 1000+i; - break; - } - } - } -#if 0 //def FLEXT_DEBUG - else - post("unknown modifier %s",str); -#endif - } - - if(down) curmod |= mod; - else curmod &= ~mod; - -// post("Key down=%i c=%c mod=%i",down?1:0,code,curmod); - - if(code || mod) { - // remember past keycodes for repetition detection - static int lastcode = 0,lastasc = 0,lastmod = 0; - - // button is pressed - if(down) { - if(lastcode == code && lastmod == curmod) - p.kind = evKeyRepeat; - else { - p.kind = evKeyDown; - lastcode = code; - lastasc = asc; - lastmod = curmod; - } - } - else { - p.kind = evKeyUp; - lastcode = lastasc = 0; - } - - p.ext = true; - p.pKey.k = code; //lastkey; - p.pKey.a = asc; - p.pKey.mod = curmod; - - for(guicanv *ix = gcanv; ix; ix = ix->nxt) - for(canvobj *ci = ix->head; ci; ci = ci->nxt) - ci->guiobj->m_Method(p); - } - } - else - post("flext_gui key proxy - unknown method"); -} - -void flext_gui::g_Properties() -{ - char buf[800]; - sprintf(buf, "pdtk_flgui_dialog %%s %d %d %d\n",0, 0, 0); - gfxstub_new((t_pd *)thisHdr(), thisHdr(), buf); -} - - -flext_gui::guicanv::guicanv(t_canvas *c): - canv(c),nxt(NULL),ref(0), - head(NULL),tail(NULL) -{ - char tmp[25]; - sprintf(tmp,"FLCANV%x",c); - sym = MakeSymbol(tmp); - -#ifdef DIRECT_TK - // proxy for canvas messages - (px = (px_object *)pd_new(px_class))->init(c); -#endif -} - -flext_gui::guicanv::~guicanv() -{ -#ifdef DIRECT_TK - if(px) pd_free(&px->obj.ob_pd); -#endif -} - -void flext_gui::guicanv::Push(flext_gui *o) -{ - canvobj *co = new canvobj(o); - if(tail) tail->nxt = co; - tail = co; - if(!head) head = tail; - - ++ref; -} - -void flext_gui::guicanv::Pop(flext_gui *o) -{ - canvobj *prv = NULL,*ix = head; - for(; ix && ix->guiobj != o; prv = ix,ix = ix->nxt); - - if(ix) { - --ref; - if(prv) prv->nxt = ix->nxt; - else head = ix->nxt; - if(!ix->nxt) tail = prv; - } - else - error("flext_gui: object not found in canvas!"); -} - - -void flext_gui::AddCanvas() -{ - t_canvas *c = thisCanvas(); - guicanv *prv = NULL,*ix = gcanv; - for(; ix && ix->canv != c; prv = ix,ix = ix->nxt); - - if(ix) { - ix->Push(this); - } - else { - guicanv *nc = new guicanv(c); - if(prv) prv->nxt = nc; - else gcanv = nc; - - nc->Push(this); - -#ifdef DIRECT_TK - pd_bind(&nc->px->obj.ob_pd,(t_symbol *)nc->sym); - -/* - // initialize new canvas object - sys_vgui("bind .x%x.c {pd %s %s %%x %%y %%s \\;}\n",c,GetString(nc->sym),GetString(gcm_motion)); - - sys_vgui("bind .x%x.c {pd %s %s 1 %%x %%y %%b %%s \\;}\n",c,GetString(nc->sym),GetString(gcm_mousekey)); - sys_vgui("bind .x%x.c {pd %s %s 0 %%x %%y %%b %%s \\;}\n",c,GetString(nc->sym),GetString(gcm_mousekey)); - sys_vgui("bind .x%x.c {pd %s %s %%x %%y %%s %%D \\;}\n",c,GetString(nc->sym),GetString(gcm_mousewheel)); - sys_vgui("bind .x%x.c {pd %s %s 1 %%k %%A %%N %%s \\;}\n",c,GetString(nc->sym),GetString(gcm_key)); - sys_vgui("bind .x%x.c {pd %s %s 0 %%k %%A %%N %%s \\;}\n",c,GetString(nc->sym),GetString(gcm_key)); - - // what happend to objects in subpatchers? - sys_vgui("bind .x%x.c {pd %s %s \\;}\n",c,GetString(nc->sym),GetString(gcm_destroy)); - - // sys_vgui("bind .x%x.c {pd %s %s %x %s \\;}\n",c,GetString(nc->sym),"_tk_visibility",this); -*/ -#endif - } -} - -void flext_gui::RmvCanvas() -{ - guicanv *ix = gcanv; - for(; ix && ix->canv != thisCanvas(); ix = ix->nxt); - - if(ix) { - ix->Pop(this); - if(!ix->Refs()) DelCanvas(thisCanvas()); - } - else { - error("flext_gui: Canvas not found!"); - } -} - -void flext_gui::DelCanvas(t_canvas *c) -{ - guicanv *prv = NULL,*ix = gcanv; - for(; ix && ix->canv != c; prv = ix,ix = ix->nxt); - - if(ix) { -#ifdef DIRECT_TK - pd_unbind(&ix->px->obj.ob_pd,(t_symbol *)ix->sym); -#endif - - if(prv) prv->nxt = ix->nxt; - else gcanv = ix->nxt; - } - else { - error("flext_gui: Canvas not found!"); - } -} - -static GuiObj *GetGuiObj(const t_atom &a) -{ - GuiObj *th = NULL; - sscanf(flext::GetString(a),"%x",&th); - return th; -} - -void flext_gui::g_Displace(int dx, int dy) -{ -// post("Displace"); - - XLo(XLo()+dx); - YLo(YLo()+dy); - - Group().MoveRel(dx,dy); - FixLines(); -} - -void flext_gui::g_Delete() -{ - objs->Clear(); - DelLines(); -} - - - -t_widgetbehavior flext_gui::widgetbehavior; - -void flext_gui::SetWidget(t_class *c) -{ - // widgetbehavior struct MUST be resident... (static is just ok here) - - widgetbehavior.w_getrectfn = sg_getrect; - widgetbehavior.w_displacefn = sg_displace; - widgetbehavior.w_selectfn = sg_select; - widgetbehavior.w_activatefn = NULL; //sg_activate; - widgetbehavior.w_deletefn = sg_delete; - widgetbehavior.w_visfn = sg_vis; - widgetbehavior.w_clickfn = sg_click; - -#if PD_MINOR_VERSION >= 37 - class_setpropertiesfn(c,sg_properties); - class_setsavefn(c,sg_save); -#else - widgetbehavior.w_propertiesfn = sg_properties; - widgetbehavior.w_savefn = sg_save; -#endif - - class_setwidget(c, &widgetbehavior); -} - -void flext_gui::sg_getrect(t_gobj *c, t_glist *,int *xp1, int *yp1, int *xp2, int *yp2) -{ - flext_gui *th = thisObject(c); - /*th->g_GetRect(*xp1,*yp1,*xp2,*yp2);*/ - *xp1 = th->XLo(),*yp1 = th->YLo(),*xp2 = th->XHi(),*yp2 = th->YHi(); -} - -void flext_gui::sg_displace(t_gobj *c, t_glist *, int dx, int dy) -{ - thisObject(c)->g_Displace(dx,dy); -} - -void flext_gui::sg_select(t_gobj *c, t_glist *, int selected) -{ -// post("Select"); - - flext_gui *th = thisObject(c); - th->g_Edit(th->selected = (selected != 0)); -} - -void flext_gui::sg_vis(t_gobj *c, t_glist *, int vis) -{ - post("Visible %i",vis); - - if(vis) { - flext_gui *g = thisObject(c); - g->g_Create(); - g->Group().MoveRel(g->XLo(),g->YLo()); - g->FixLines(); - } -} - -int flext_gui::sg_click(t_gobj *c, t_glist *gl,int xpix, int ypix, int shift, int alt, int dbl, int doit) -{ - flext_gui *g = thisObject(c); - CBParams p; - int x = xpix-g->XLo(); - int y = ypix-g->YLo(); - - // PD bug: shift isn't reported for idle mousing -// int mod = (alt?mod_Alt:0)+(shift?mod_Shift:0)+(dbl?mod_Double:0); - - if(doit) { - // button is pressed - p.kind = evMouseDown; - p.pMouseKey.x = g->xdrag = x; - p.pMouseKey.y = g->ydrag = y; - g->dxdrag = g->dydrag = 0; - p.pMouseKey.b = 1; - p.pMouseKey.mod = curmod; //mod; - - glist_grab(gl,c,(t_glistmotionfn)sg_drag,0,xpix,ypix); - } - else { - // only mouse position change - p.kind = evMotion; - p.pMotion.x = x; - p.pMotion.y = y; - p.pMotion.mod = curmod; //mod; - } - g->m_Method(p); - return 1; -} - -void flext_gui::sg_drag(t_gobj *c,t_floatarg dx,t_floatarg dy) -{ - flext_gui *g = thisObject(c); - CBParams p; - p.kind = evMouseDrag; - p.pMouseDrag.dx = (g->dxdrag += (int)dx); - p.pMouseDrag.dy = (g->dydrag += (int)dy); - p.pMouseDrag.x = g->xdrag+g->dxdrag; - p.pMouseDrag.y = g->ydrag+g->dydrag;; - p.pMouseDrag.b = 1; - p.pMouseDrag.mod = curmod; //mod; - g->m_Method(p); -} - -void flext_gui::sg_delete(t_gobj *c, t_glist *) -{ - thisObject(c)->g_Delete(); -} - -void flext_gui::sg_properties(t_gobj *c, t_glist *) -{ - thisObject(c)->g_Properties(); -} - -void flext_gui::sg_save(t_gobj *c, t_binbuf *b) -{ - thisObject(c)->g_Save(b); -} - -/* -bool flext_gui::sg_Key(flext_base *c,int argc,t_atom *argv) -{ - return true; -} - -bool flext_gui::sg_KeyNum(flext_base *c,int &keynum) -{ - flext_gui *g = dynamic_cast(c); - post("KeyNum %i",keynum); - return true; -} - -bool flext_gui::sg_KeyUp(flext_base *c,int &keynum) -{ - flext_gui *g = dynamic_cast(c); - post("KeyUp %i",keynum); - return true; -} -*/ - -#else // MAXMSP - -// this declared supported events -int flext_gui::evmask = evMotion|evMouseDown|evKeyDown; - -static void dragfun() -{ -} - -static void tmfun() -{ -} - -void flext_gui::sg_click(t_object *x, Point pt, short m) -{ - flext_gui *g = thisObject(x); - CBParams p(evMouseDown); - p.pMouseKey.x = pt.h-g->XLo(); - p.pMouseKey.y = pt.v-g->YLo(); - p.pMouseKey.b = 0; - p.pMouseKey.mod = (m&256?mod_Meta:0)+(m&512?mod_Shift:0)+(m&1024?mod_Caps:0)+(m&2048?mod_Alt:0)+(m&4096?mod_Ctrl:0); - g->m_Method(p); -} - -void flext_gui::sg_update(t_object *x) -{ - flext_gui *g = thisObject(x); - if(!g->created) { g->g_Create(); g->created = true; } - - // draw elements - g->Update(); -} - -void flext_gui::sg_psave (t_object *x, t_binbuf *dest) { thisObject(x)->g_Save(dest); } - -void flext_gui::sg_bfont (t_object *x, short size, short font) {} - -void flext_gui::sg_key (t_object *x, short keyvalue) -{ - flext_gui *g = thisObject(x); - - CBParams p(evKeyDown); - p.pKey.k = keyvalue; - p.pKey.a = 0; - p.pKey.mod = 0; - g->m_Method(p); -} - -void flext_gui::sg_enter (t_object *x) {} - -void flext_gui::sg_clipregion (t_object *x, RgnHandle *rgn, short *result) {} - -void flext_gui::sg_bidle (t_object *x) -{ - flext_gui *g = thisObject(x); - Point pnt; GetMouse(&pnt); - - CBParams p(evMotion); - p.pMotion.x = pnt.h-g->XLo(); - p.pMotion.y = pnt.v-g->YLo(); - p.pMotion.mod = 0; - - if(p.pMotion.x != g->curx || p.pMotion.y != g->cury || p.pMotion.mod != g->curmod) { - g->m_Method(p); - g->curx = p.pMotion.x; - g->cury = p.pMotion.y; - g->curmod = p.pMotion.mod; - } -} - -void flext_gui::g_Displace(int dx, int dy) -{ -} - -void flext_gui::g_Delete() -{ - objs->Clear(); -} - -void flext_gui::Update() -{ - box_ready(&thisHdr()->z_box); - - if(Group().Canv().Pre(XLo(),YLo())) - Group().Draw(); - Group().Canv().Post(); -} - -#endif // PD / MAXMSP - -void flext_gui::m_Method(const CBParams &p) -{ -/* - switch(p.kind) { - case evMotion: { - // if(!g->Selected() || mod) - post("Motion: x=%i y=%i m=%i",p.pMotion.x,p.pMotion.y,p.pMotion.mod); - break; - } - case evMouseDown: { - post("MouseDown: x=%i y=%i b=%i m=%i",p.pMouseKey.x,p.pMouseKey.y,p.pMouseKey.b,p.pMouseKey.mod); - break; - } - case evMouseUp: { - post("MouseUp: x=%i y=%i b=%i m=%i",p.pMouseKey.x,p.pMouseKey.y,p.pMouseKey.b,p.pMouseKey.mod); - break; - } - case evMouseWheel: { - post("Mousewheel: x=%i y=%i m=%i d=%i",p.pMouseWheel.x,p.pMouseWheel.y,p.pMouseWheel.mod,p.pMouseWheel.delta); - break; - } - case evKeyDown: { - post("KeyDown: k=%i a=%i m=%i",p.pKey.k,p.pKey.a,p.pKey.mod); - break; - } - case evKeyUp: { - post("KeyUp: k=%i a=%i m=%i",p.pKey.k,p.pKey.a,p.pKey.mod); - break; - } - } -*/ - if(!Selected() || p.kind != evMotion || p.kind != evMouseDown || p.kind != evMouseUp) - Group().Method(*this,p); - } - -bool flext_gui::BindEvent(GuiSingle &o,bool (*cb)(flext_gui &o,GuiSingle &obj,const CBParams &p),int evs) -{ - if((evs&EventMask()) == evs) { - o.AddEvent(evs,cb); - return true; - } - else - // not all requested events supported - return false; -} - -void flext_gui::UnbindEvent(GuiSingle &o,bool (*cb)(flext_gui &o,GuiSingle &obj,const CBParams &p),int evs) -{ - o.RmvEvent(evs,cb); -} - - diff --git a/externals/grill/guitest/flgui.h b/externals/grill/guitest/flgui.h deleted file mode 100644 index 0f62f01b..00000000 --- a/externals/grill/guitest/flgui.h +++ /dev/null @@ -1,237 +0,0 @@ -#ifndef __FLEXT_GUI -#define __FLEXT_GUI - -//#define FLEXT_VIRT -#include - -#if FLEXT_SYS == FLEXT_SYS_PD -#pragma warning( disable : 4091 ) -#include -#endif - -class FCanvas; -class GuiObj; -class GuiGroup; -class GuiSingle; - -class flext_gui: - public flext_base -{ - FLEXT_HEADER_S(flext_gui,flext_dsp,setup) - -public: - flext_gui(int xs,int ys); - ~flext_gui(); - - enum CBEvs { - evNone = 0, - evMotion = 0x01, - evMouseDown = 0x02, - evMouseUp = 0x04, - evMouseWheel = 0x08, - evMouseDrag = 0x10, - evKeyDown = 0x20, - evKeyUp = 0x40, - evKeyRepeat = 0x80 - }; - - class CBParams { - public: - CBParams(CBEvs k = evNone): kind(k),ext(false) {} - - CBEvs kind; - union { - struct { int x,y,mod; } pMotion; - struct { int x,y,b,mod; } pMouseKey; - struct { int x,y,mod,delta; } pMouseWheel; - struct { int x,y,dx,dy,b,mod; } pMouseDrag; - struct { int k,a,mod; } pKey; - }; - bool ext; - }; - - static int EventMask() { return evmask; } - - bool BindEvent(GuiSingle &o,bool (*cb)(flext_gui &o,GuiSingle &obj,const CBParams &p),int evs); - void UnbindEvent(GuiSingle &o,bool (*cb)(flext_gui &o,GuiSingle &obj,const CBParams &p),int evs); - -protected: - - virtual void g_Create() {} - virtual void g_Delete(); -// virtual void g_GetRect(int &xp1,int &yp1,int &xp2,int &yp2); - virtual void g_Edit(bool selected) {} - virtual void g_Displace(int dx, int dy); -// virtual void g_Activate(bool state) {} -// virtual int g_Click(int xpix, int ypix, int shift, int alt, int dbl, int doit) { return 0; } - virtual void g_Properties(); - virtual void g_Save(t_binbuf *b) {} -/* - virtual bool g_Motion(GuiObj &obj,int x,int y,int mod) { return false; } - virtual bool g_MouseKey(GuiObj &obj,bool down,int x,int y,int b,int mod) { return false; } - virtual bool g_MouseWheel(GuiObj &obj,int x,int y,int d,int mod) { return false; } - virtual bool g_Key(GuiObj &obj,bool down,int k,int a,int n,int mod) { return false; } - virtual bool g_Region(GuiObj &obj,bool on,int mod) { return false; } - virtual bool g_Focus(GuiObj &obj,bool on,int mod) { return false; } -*/ - -#if FLEXT_SYS == FLEXT_SYS_PD - bool Selected() const { return selected; } - - void FixLines() { canvas_fixlinesfor( thisCanvas(), thisHdr() ); } - void DelLines() { canvas_deletelinesfor( glist_getcanvas(thisCanvas()), (t_text *)thisHdr()); } - - int XLo() const { return thisHdr()->te_xpix; } - int YLo() const { return thisHdr()->te_ypix; } - int XHi() const { return XLo()+XSize()-1; } - int YHi() const { return YLo()+YSize()-1; } - void XLo(int x) { thisHdr()->te_xpix = x; } - void YLo(int y) { thisHdr()->te_ypix = y; } - - int XSize() const { return xsize; } - int YSize() const { return ysize; } -#else // MAXMSP - bool Selected() const { return box_ownerlocked((t_box *)(&thisHdr()->z_box)) == 0; } - - void FixLines() {} - void DelLines() {} - - int XLo() const { return thisHdr()->z_box.b_rect.left; } - int YLo() const { return thisHdr()->z_box.b_rect.top; } - int XHi() const { return thisHdr()->z_box.b_rect.right; } - int YHi() const { return thisHdr()->z_box.b_rect.bottom; } - void XLo(int x) { thisHdr()->z_box.b_rect.left = x; } - void YLo(int y) { thisHdr()->z_box.b_rect.top = y; } - - int XSize() const { return XHi()-XLo()+1; } - int YSize() const { return YHi()-YLo()+1; } -#endif - - const t_symbol *Id() const { return bindsym; } - - GuiGroup &Group() { return *objs; } - - -// static void Setup(t_class *c); - - - enum Modifier { - mod_None = 0, - mod_Ctrl = 0x0001, - mod_Shift = 0x0002, - mod_Alt = 0x0004, - mod_Meta = 0x0008, - mod_Mod1 = 0x0010, - mod_Mod2 = 0x0020, - mod_Mod3 = 0x0040, - mod_Caps = 0x0080, - mod_Double = 0x0100, -// mod_Triple = 0x0200, - mod_Button1 = 0x1000, - mod_Button2 = 0x2000, - mod_Button3 = 0x4000, - mod_Button4 = 0x8000 - }; - -private: - bool visible; - FCanvas *canvas; - GuiGroup *objs; - - const t_symbol *bindsym; - - static int evmask; - - static void setup(t_class *); - - virtual void m_Method(const CBParams &p); - -#if FLEXT_SYS == FLEXT_SYS_PD - bool selected; - int xsize,ysize; - int xdrag,ydrag,dxdrag,dydrag; - - static void sg_getrect(t_gobj *c, t_glist *,int *xp1, int *yp1, int *xp2, int *yp2); - static void sg_displace(t_gobj *c, t_glist *, int dx, int dy); - static void sg_select(t_gobj *c, t_glist *, int selected); -// static void sg_activate(t_gobj *c, t_glist *, int state) { thisObject(c)->g_Activate(state != 0); } - static void sg_delete(t_gobj *c, t_glist *); - static void sg_vis(t_gobj *c, t_glist *, int vis); - static int sg_click(t_gobj *c, t_glist *,int xpix, int ypix, int shift, int alt, int dbl, int doit); - static void sg_drag(t_gobj *x, t_floatarg dx, t_floatarg dy); - static void sg_properties(t_gobj *c, t_glist *); - static void sg_save(t_gobj *c, t_binbuf *b); -// static void sg_motion(void *c, float dx,float dy) { thisObject((t_gobj *)c)->g_Motion(dx,dy); } - - static bool sg_Key(flext_base *c,int argc,t_atom *argv); - static bool sg_KeyNum(flext_base *c,int &keynum); - static bool sg_KeyUp(flext_base *c,int &keynum); - - static t_widgetbehavior widgetbehavior; - static void SetWidget(t_class *c); - - struct px_object; - struct pxkey_object; - static int curmod; //,lastkey; - static pxkey_object *pxkey; - - class canvobj { - public: - canvobj(flext_gui *go): guiobj(go),nxt(NULL) {} - - flext_gui *guiobj; - canvobj *nxt; - }; - - class guicanv { - public: - guicanv(t_canvas *c); - ~guicanv(); - - int Refs() const { return ref; } - void Push(flext_gui *o); - void Pop(flext_gui *o); - -#ifdef DIRECT_TK - px_object *px; -#endif - const t_symbol *sym; - t_canvas *canv; - guicanv *nxt; - canvobj *head,*tail; - int ref; - }; - - static guicanv *gcanv; - static const t_symbol *gcm_motion,*gcm_mousekey,*gcm_mousewheel,*gcm_key,*gcm_destroy; - static void px_method(px_object *c,const t_symbol *s,int argc,t_atom *argv); - static void pxkey_method(pxkey_object *c,const t_symbol *s,int argc,t_atom *argv); - - void AddCanvas(); - void RmvCanvas(); - static void DelCanvas(t_canvas *c); - -public: - static t_class *px_class,*pxkey_class; - static void sg_tk(t_canvas *c,const t_symbol *s,int argc,t_atom *argv); - -#else // MAXMSP - int curx,cury,curmod; - bool created; - static t_clock clock; - static t_qelem qelem; - - void Update(); - - static void sg_click(t_object *x, Point pt, short modifiers); - static void sg_update(t_object *x); - static void sg_psave (t_object *x, t_binbuf *dest); - static void sg_bfont (t_object *x, short size, short font); - static void sg_key (t_object *x,short keyvalue); - static void sg_enter (t_object *x); - static void sg_clipregion (t_object *x, RgnHandle *rgn, short *result); - static void sg_bidle(t_object *x); -#endif -}; - -#endif diff --git a/externals/grill/guitest/flguiobj.cpp b/externals/grill/guitest/flguiobj.cpp deleted file mode 100644 index 7bb22098..00000000 --- a/externals/grill/guitest/flguiobj.cpp +++ /dev/null @@ -1,801 +0,0 @@ -#include "flguiobj.h" - -#include -#include -#include -#include - - -#define USETAGS - -#define BUFSIZE 20000 -#define ZONE 1000 - - -#if FLEXT_SYS == FLEXT_SYS_PD -bool FCanvas::store = true; -bool FCanvas::debug = false; -#endif - -FCanvas::FCanvas(t_canvas *c): - canvas(c) -#if FLEXT_SYS == FLEXT_SYS_PD - ,buffer(new char[BUFSIZE]),bufix(0),waiting(0) -#endif -{} - -FCanvas::~FCanvas() -{ -#if FLEXT_SYS == FLEXT_SYS_PD - if(buffer) delete[] buffer; -#endif -} - -#if FLEXT_SYS == FLEXT_SYS_PD -void FCanvas::Send(const char *t) -{ - if(debug) post("GUI - %s",t); - sys_gui((char *)t); -} - -void FCanvas::SendBuf() -{ - if(bufix) { - Send(buffer); - bufix = 0; - } -} - -void FCanvas::ToBuf(const char *t) -{ - int len = strlen(t); - if(!len) return; - - bool end = t[len-1] == '\n'; - if((store && waiting) || !end) { - int nxt = bufix+len; - if(nxt >= BUFSIZE || (end && nxt >= BUFSIZE-ZONE)) SendBuf(); - - memcpy(buffer+bufix,t,len); - buffer[bufix += len] = 0; - } - else { - SendBuf(); - Send(t); - } -} - -FCanvas &FCanvas::TkC() -{ - char tmp[20]; - sprintf(tmp,".x%x.c ",canvas); - ToBuf(tmp); - return *this; -} - -FCanvas &FCanvas::TkE() -{ - ToBuf("\n"); - return *this; -} - -FCanvas &FCanvas::Tk(char *fmt,...) -{ - // int result, i; - char buf[2048]; - va_list ap; - - va_start(ap, fmt); - vsprintf(buf, fmt, ap); - ToBuf(buf); - va_end(ap); - return *this; -} -#endif - -bool FCanvas::Pre(int x,int y) -{ - xpos = x,ypos = y; -#if FLEXT_SYS == FLEXT_SYS_PD - ++waiting; - return true; -#else - svgp = patcher_setport(canvas); - if(svgp != NULL) { - GetForeColor(&svcol); - GetPenState(&svpen); - ::PenMode(patCopy); - return true; - } - else return false; -#endif -} - -void FCanvas::Post() -{ -#if FLEXT_SYS == FLEXT_SYS_PD - if(!--waiting) SendBuf(); -#else - if(svgp) { - RGBForeColor(&svcol); - SetPenState(&svpen); - SetPort(svgp); - } -#endif -} - - -// -------------------------------------------------------------------------- - - -FRect &FRect::Add(const FPnt &p) -{ - if(p.x < lo.x) lo.x = p.x; - if(p.y < lo.y) lo.y = p.y; - if(p.x > hi.x) hi.x = p.x; - if(p.y > hi.y) hi.y = p.y; - return *this; -} - -FRect &FRect::Add(const FRect &r) -{ - if(r.lo.x < lo.x) lo.x = r.lo.x; - if(r.lo.y < lo.y) lo.y = r.lo.y; - if(r.hi.x > hi.x) hi.x = r.hi.x; - if(r.hi.y > hi.y) hi.y = r.hi.y; - return *this; -} - -bool FRect::In(const FPnt &p) const -{ - return p.x >= lo.x && p.x <= hi.x && p.y >= lo.y && p.y <= hi.y; -} - -bool FRect::Inter(const FRect &r) const -{ - return true; -} - - -// -------------------------------------------------------------------------- - - -GuiObj::GuiObj(FCanvas *c,GuiGroup *p): - canvas(c),idsym(NULL), - parent(p) -// ,ori(0,0) -{} - -GuiObj::~GuiObj() -{ -// Delete(); -} - - -// -------------------------------------------------------------------------- - -GuiSingle::Event::Event(int evmask,bool (*m)(flext_gui &g,GuiSingle &obj,const flext_gui::CBParams &p)): - methfl(evmask),method(m),ext(false),nxt(NULL) -{} - -GuiSingle::Event::~Event() { if(nxt) delete nxt; } - - -GuiSingle::GuiSingle(FCanvas *c,GuiGroup *p,const t_symbol *s): - GuiObj(c,p),sym(s),active(false),event(NULL) -{ - char tmp[20]; -#ifdef __MWERKS__ - std:: -#endif - sprintf(tmp,"GUI%x",this); - idsym = MakeSymbol(tmp); -} - -GuiSingle::~GuiSingle() -{ - Delete(); - if(event) delete event; -} - -void GuiSingle::Symbol(const t_symbol *s) -{ - sym = s; -} - -GuiSingle *GuiSingle::Find(const t_symbol *s) -{ - return sym == s?this:NULL; -} - -GuiObj &GuiSingle::MoveTo(int x,int y) -{ -#if FLEXT_SYS == FLEXT_SYS_PD - if(active) { - canvas->TkC().Tk("coords %s %i %i\n",GetString(Id()), x, y); - } -#endif - rect.MoveTo(x,y); - return *this; -} - -GuiObj &GuiSingle::MoveRel(int dx,int dy) -{ -#if FLEXT_SYS == FLEXT_SYS_PD - if(active) { - canvas->TkC().Tk("move %s %i %i\n",GetString(Id()), dx, dy); - } -#endif - rect.Move(dx,dy); - return *this; -} - -GuiObj &GuiSingle::Delete() -{ -#if FLEXT_SYS == FLEXT_SYS_PD - if(active) { - canvas->TkC().Tk("delete -tags %s\n",GetString(Id())); - active = false; - } -#endif - return *this; -} - -GuiObj &GuiSingle::FillColor(unsigned long col) -{ -#if FLEXT_SYS == FLEXT_SYS_PD - if(active) { - canvas->TkC().Tk("itemconfigure %s -fill #%06x\n",GetString(Id()),col); - } -#endif - return *this; -} - -GuiObj &GuiSingle::Outline(unsigned long col) -{ -#if FLEXT_SYS == FLEXT_SYS_PD - if(active) { - canvas->TkC().Tk("itemconfigure %s -outline #%06x\n",GetString(Id()),col); - } -#endif - return *this; -} - -GuiObj &GuiSingle::Focus() -{ -#if FLEXT_SYS == FLEXT_SYS_PD - if(active) { - canvas->TkC().Tk("focus %s\n",GetString(Id())); - } -#endif - return *this; -} - -bool GuiSingle::Method(flext_gui &g,const flext_gui::CBParams &p) -{ - bool ret = true; - for(Event *ei = event; ei && ret; ei = ei->nxt) - ret = ret && ((ei->method && (ei->methfl&p.kind))?ei->method(g,*this,p):true); - return ret; -} - -void GuiSingle::AddEvent(int evmask,bool (*m)(flext_gui &g,GuiSingle &obj,const flext_gui::CBParams &p)) -{ - Event *prv = NULL,*ix = event; - for(; ix && ix->method != m; prv = ix,ix = ix->nxt) {} - - if(ix) - // previous handler found -> update event mask - ix->methfl |= evmask; - else { - // no previous handler was found -> make new one - - Event *nev = new Event(evmask,m); - if(prv) prv->nxt = nev; - else event = nev; - } -} - -void GuiSingle::RmvEvent(int evmask,bool (*m)(flext_gui &g,GuiSingle &obj,const flext_gui::CBParams &p)) -{ - Event *prv = NULL,*ix = event; - for(; ix && ix->method != m; prv = ix,ix = ix->nxt) {} - - if(ix) { - // handler found - - if(!(ix->methfl &= ~evmask)) { - // mask has become zero -> remove handler - - if(prv) prv->nxt = ix->nxt; - else event = ix->nxt; - ix->nxt = NULL; - delete ix; - } - } -} - - - -// -------------------------------------------------------------------------- - - -GuiGroup::GuiGroup(FCanvas *c,GuiGroup *p): - GuiObj(c,p),head(NULL),tail(NULL) -{ - char tmp[20]; -#ifdef __MWERKS__ - std:: -#endif - sprintf(tmp,"GRP%x",this); - idsym = MakeSymbol(tmp); -} - -GuiGroup::~GuiGroup() { Clear(); } - -void GuiGroup::Clear() -{ - for(Part *ix = head; ix; ) { - Part *n = ix->nxt; -#if FLEXT_SYS == FLEXT_SYS_PD - RemoveTag(ix->obj); -#endif - if(ix->owner) delete ix->obj; - delete ix; - ix = n; - } - head = tail = NULL; -} - -void GuiGroup::Add(GuiObj *o,bool owner) -{ - o->canvas = canvas; -#if FLEXT_SYS == FLEXT_SYS_PD - AddTag(o); // valid only for GuiSingle! -#endif - Part *n = new Part(o,owner); - if(!head) head = n; - else tail->nxt = n; - tail = n; - - rect.Add(o->rect); -} - -GuiSingle *GuiGroup::Find(const t_symbol *s) -{ - GuiSingle *r = NULL; - for(Part *ix = head; ix && !r; ix = ix->nxt) { - r = ix->obj->Find(s); - } - return r; -} - -GuiSingle *GuiGroup::Detach(const t_symbol *s) -{ - if(head) { - Part *p = NULL,*ix = head; - while(ix) { - if(ix->obj->Symbol() == s) { - // found - if(p) p->nxt = ix->nxt; - GuiSingle *ret = (GuiSingle *)(ix->obj); - -#if FLEXT_SYS == FLEXT_SYS_PD - RemoveTag(ret); -#endif - if(head == ix) head = ix->nxt; - if(tail == ix) tail = p; - - delete ix; - - return ret; - } - else p = ix,ix = ix->nxt; - } - } - return NULL; -} - -GuiObj &GuiGroup::MoveRel(int dx,int dy) -{ -#if FLEXT_SYS == FLEXT_SYS_PD - canvas->TkC().Tk("move %s %i %i\n",GetString(Id()), dx, dy); -#endif - for(Part *ix = head; ix; ix = ix->nxt) { - ix->obj->rect.Move(dx,dy); - } - return *this; -} - -GuiObj &GuiGroup::Delete() -{ -#if FLEXT_SYS == FLEXT_SYS_PD - canvas->TkC().Tk("delete -tags %s\n",GetString(Id())); - - for(Part *ix = head; ix; ix = ix->nxt) ix->obj->Inactive(); -#endif - return *this; -} - - -GuiObj &GuiGroup::Draw() -{ - for(Part *ix = head; ix; ix = ix->nxt) ix->obj->Draw(); - return *this; -} - - -#if FLEXT_SYS == FLEXT_SYS_PD - -void GuiGroup::AddTag(GuiObj *o) -{ - canvas->TkC().Tk("addtag %s withtag %s\n",GetString(Id()),GetString(o->Id())); -} - -void GuiGroup::RemoveTag(GuiObj *o) -{ - canvas->TkC().Tk("dtag %s %s\n",GetString(o->Id()),GetString(Id())); -} - -#endif - -GuiGroup *GuiGroup::Add_Group() -{ - GuiGroup *obj = new GuiGroup(canvas,this); - Add(obj); - return obj; -} - - -GuiSingle *GuiGroup::Add_Point(int x,int y,long fill) -{ - GuiPoint *obj = new GuiPoint(canvas,this); - obj->Set(x,y,fill); - Add(obj); - return obj; -} - -GuiSingle *GuiGroup::Add_Cloud(int n,const FPnt *p,long fill) -{ - GuiCloud *obj = new GuiCloud(canvas,this); - obj->Set(n,p,fill); - Add(obj); - return obj; -} - -GuiSingle *GuiGroup::Add_Box(int x,int y,int xsz,int ysz,int width,long fill,long outl) -{ - GuiBox *obj = new GuiBox(canvas,this); - obj->Set(x,y,xsz,ysz,width,fill,outl); - Add(obj); - return obj; -} - -GuiSingle *GuiGroup::Add_Rect(int x,int y,int xsz,int ysz,int width,long outl) -{ - GuiRect *obj = new GuiRect(canvas,this); - obj->Set(x,y,xsz,ysz,width,outl); - Add(obj); - return obj; -} - -GuiSingle *GuiGroup::Add_Line(int x1,int y1,int x2,int y2,int width,long fill) -{ - GuiLine *obj = new GuiLine(canvas,this); - obj->Set(x1,y1,x2,y2,width,fill); - Add(obj); - return obj; -} - -GuiSingle *GuiGroup::Add_Poly(int n,const FPnt *p,int width,long fill) -{ - GuiPoly *obj = new GuiPoly(canvas,this); - obj->Set(n,p,width,fill); - Add(obj); - return obj; -} - -GuiSingle *GuiGroup::Add_Text(int x,int y,const char *txt,long fill,GuiText::just_t just) -{ - GuiText *obj = new GuiText(canvas,this); - obj->Set(x,y,txt,fill,just); - Add(obj); - return obj; -} - -GuiSingle *GuiGroup::Remove(GuiSingle *go) -{ - for(Part *prv = NULL,*ix = head; ix; prv = ix,ix = ix->nxt) - if(ix->obj == go) { - if(prv) prv->nxt = ix->nxt; - else head = ix->nxt; - if(!head) tail = NULL; - - GuiObj *ret = ix->obj; - delete ix; - - if(head) { - rect = head->obj->rect; - for(ix = head->nxt; ix; ix = ix->nxt) rect.Add(ix->obj->rect); - } - - return (GuiSingle *)ret; - } - - return NULL; -} - -bool GuiGroup::Method(flext_gui &g,const flext_gui::CBParams &p) -{ - bool go = true; - for(Part *ix = head; go && ix; ix = ix->nxt) go = go && ix->obj->Method(g,p); - return go; -} - - -// -------------------------------------------------------------------------- - - -GuiObj &GuiPoint::Set(int x,int y,long fl) -{ - Delete(); - fill = fl; - rect(x,y,x,y); - -#if FLEXT_SYS == FLEXT_SYS_PD - canvas->TkC(); - canvas->Tk("create line %i %i %i %i -tags %s",x,y,x+1,y,GetString(Id())); - if(fill >= 0) canvas->Tk(" -fill #%06x",fill); - canvas->TkE(); - - active = true; -#endif - return *this; -} - -GuiObj &GuiPoint::Draw() -{ -#if FLEXT_SYS == FLEXT_SYS_MAX -#endif - return *this; -} - - -GuiObj &GuiCloud::Set(int n,const FPnt *p,long fl) -{ - int i; - Delete(); - - fill = fl; - pnt = new FPnt[pnts = n]; - rect(pnt[0] = p[0],p[0]); - for(i = 1; i < n; ++i) rect.Add(pnt[i] = p[i]); - -#if FLEXT_SYS == FLEXT_SYS_PD - canvas->TkC().Tk("create line"); - for(i = 0; i < n; ++i) - canvas->Tk(" %i %i",p[i].X(),p[i].Y()); - canvas->Tk(" -tags %s",GetString(Id())); - if(fill >= 0) canvas->Tk(" -fill #%06x",fill); - canvas->TkE(); - - active = true; -#endif - return *this; -} - -GuiObj &GuiCloud::Draw() -{ -#if FLEXT_SYS == FLEXT_SYS_MAX -#endif - return *this; -} - -GuiObj &GuiCloud::Delete() -{ - if(pnt) { delete[] pnt; pnt = NULL; } - return *this; -} - - -GuiObj &GuiBox::Set(int x,int y,int xsz,int ysz,int wd,long fl,long outl) -{ - Delete(); - rect(x,y,x+xsz-1,y+ysz-1); - width = wd,fill = fl,outln = outl; - -#if FLEXT_SYS == FLEXT_SYS_PD - canvas->TkC().Tk("create rectangle %i %i %i %i -tags %s",x,y,x+xsz,y+ysz,GetString(Id())); - if(wd >= 0) canvas->Tk(" -width %i",wd); - if(fl >= 0) canvas->Tk(" -fill #%06x",fl); - if(outl >= 0) canvas->Tk(" -outline #%06x",outl); - canvas->TkE(); - - active = true; -#endif - return *this; -} - -GuiObj &GuiBox::Draw() -{ -#if FLEXT_SYS == FLEXT_SYS_MAX - ::Rect r; - ::RGBColor col; - int w = width; - if(!w) w = 1; - - r.left = Canv().X()+rect.Lo().X(); - r.top = Canv().Y()+rect.Lo().Y(); - r.right = Canv().X()+rect.Hi().X(); - r.bottom = Canv().Y()+rect.Hi().Y(); - - if(width >= 0) { - col.red = (outln>>8)&0xff00; - col.green = outln&0xff00; - col.blue = (outln&0xff)<<8; - ::RGBForeColor(&col); - ::PenSize(w,w); - ::FrameRect(&r); - } - col.red = (fill>>8)&0xff00; - col.green = fill&0xff00; - col.blue = (fill&0xff)<<8; - ::RGBForeColor(&col); - ::PaintRect(&r); -#endif - return *this; -} - - -GuiObj &GuiRect::Set(int x,int y,int xsz,int ysz,int wd,long outl) -{ - Delete(); - rect(x,y,x+xsz-1,y+ysz-1); - width = wd,outln = outl; - -#if FLEXT_SYS == FLEXT_SYS_PD - canvas->TkC().Tk("create line %i %i %i %i %i %i %i %i %i %i -tags %s",x,y,x+xsz,y,x+xsz,y+ysz,x,y+ysz,x,y,GetString(Id())); - if(width >= 0) canvas->Tk(" -width %i",width); - if(outl >= 0) canvas->Tk(" -fill #%06x",outl); - canvas->TkE(); - - active = true; -#endif - return *this; -} - -GuiObj &GuiRect::Draw() -{ -#if FLEXT_SYS == FLEXT_SYS_MAX -#endif - return *this; -} - - -GuiObj &GuiLine::Set(int x1,int y1,int x2,int y2,int wd,long fl) -{ - Delete(); - rect(p1(x1,y1),p2(x2,y2)); - width = wd,fill = fl; - -#if FLEXT_SYS == FLEXT_SYS_PD - canvas->TkC().Tk("create line %i %i %i %i -tags %s",x1,y1,x2,y2,GetString(Id())); - if(width >= 0) canvas->Tk(" -width %i",width); - if(fill >= 0) canvas->Tk(" -fill #%06x",fill); - canvas->TkE(); - - active = true; -#endif - return *this; -} - -GuiObj &GuiLine::Draw() -{ -#if FLEXT_SYS == FLEXT_SYS_MAX - ::Point p; - ::RGBColor col; - int w = width; - if(!w) w = 1; - - col.red = (fill>>8)&0xff00; - col.green = fill&0xff00; - col.blue = (fill&0xff)<<8; - ::RGBForeColor(&col); - ::PenSize(w,w); - p.h = Canv().X()+p1.X(); - p.v = Canv().Y()+p1.Y(); - ::MoveTo(p.h,p.v); - p.h = Canv().X()+p2.X(); - p.v = Canv().Y()+p2.Y(); - ::LineTo(p.h,p.v); -#endif - return *this; -} - - -GuiObj &GuiPoly::Set(int n,const FPnt *p,int wd,long fl) -{ - int i; - - Delete(); - - width = wd,fill = fl; - pnt = new FPnt[pnts = n]; - rect(pnt[0] = p[0],p[0]); - for(i = 1; i < n; ++i) rect.Add(pnt[i] = p[i]); - -#if FLEXT_SYS == FLEXT_SYS_PD - canvas->TkC().Tk("create line"); - for(i = 0; i < n; ++i) - canvas->Tk(" %i %i",p[i].X(),p[i].Y()); - canvas->Tk(" -tags %s",GetString(Id())); - if(width >= 0) canvas->Tk(" -width %i",width); - if(fill >= 0) canvas->Tk(" -fill #%06x",fill); - canvas->TkE(); - - active = true; -#endif - return *this; -} - -GuiObj &GuiPoly::Draw() -{ -#if FLEXT_SYS == FLEXT_SYS_MAX - ::Point p; - ::RGBColor col; - int ox = Canv().X(),oy = Canv().Y(); - int w = width; - if(!w) w = 1; - - col.red = (fill>>8)&0xff00; - col.green = fill&0xff00; - col.blue = (fill&0xff)<<8; - ::RGBForeColor(&col); - ::PenSize(w,w); - p.h = ox+pnt[0].X(); - p.v = oy+pnt[0].Y(); - ::MoveTo(p.h,p.v); - for(int i = 1; i < pnts; ++i) { - p.h = ox+pnt[i].X(); - p.v = oy+pnt[i].Y(); - ::LineTo(p.h,p.v); - } -#endif - return *this; -} - -GuiObj &GuiPoly::Delete() -{ - if(pnt) { delete[] pnt; pnt = NULL; } - return *this; -} - - -GuiObj &GuiText::Set(int x,int y,const char *txt,long fl,just_t jt) -{ - Delete(); - rect(x,y,x,y); - fill = fl,just = jt; - -#if FLEXT_SYS == FLEXT_SYS_PD - canvas->TkC().Tk("create text %i %i -tags %s",x,y,GetString(Id())); - if(txt) canvas->Tk(" -text %s",txt); - if(fill >= 0) canvas->Tk(" -fill #%06x",fill); - if(just != none) { - static const char justtxt[][7] = {"left","right","center"}; - canvas->Tk(" -justify %s",justtxt[(int)just]); - } - canvas->TkE(); - - active = true; -#endif - return *this; -} - -GuiObj &GuiText::Draw() -{ -#if FLEXT_SYS == FLEXT_SYS_MAX -#endif - return *this; -} - diff --git a/externals/grill/guitest/flguiobj.h b/externals/grill/guitest/flguiobj.h deleted file mode 100644 index 86c7366a..00000000 --- a/externals/grill/guitest/flguiobj.h +++ /dev/null @@ -1,362 +0,0 @@ -#ifndef __FLGUIOBJ_H -#define __FLGUIOBJ_H - -#define FLEXT_VIRT -#include -#include "flgui.h" - - -class FCanvas -{ -public: - FCanvas(t_canvas *c); - ~FCanvas(); - -#if FLEXT_SYS == FLEXT_SYS_PD - FCanvas &Tk(char *fmt,...); - FCanvas &TkC(); - FCanvas &TkE(); - - void ToBuf(const char *t); -#endif - - bool Pre(int x,int y); - void Post(); - - int X() const { return xpos; } - int Y() const { return ypos; } - -protected: - - t_canvas *canvas; - int xpos,ypos; - -#if FLEXT_SYS == FLEXT_SYS_PD - void Send(const char *t); - void SendBuf(); - - static bool debug,store; - - char *buffer; - int bufix; - int waiting; -#else - PenState svpen; - RGBColor svcol; - GrafPtr svgp; -#endif -}; - - -class FPnt -{ -public: - FPnt() {} - FPnt(const FPnt &p): x(p.x),y(p.y) {} - FPnt(int px,int py): x(px),y(py) {} - - FPnt &operator =(const FPnt &p) { x = p.x,y = p.y; return *this; } - FPnt &operator ()(int px,int py) { x = px,y = py; return *this; } - - FPnt &Move(int dx,int dy) { x += dx,y += dy; return *this; } - - int X() const { return x; } - int Y() const { return y; } - -//protected: - int x,y; -}; - -class FRect -{ -public: - FRect() {} - FRect(const FRect &r): lo(r.lo),hi(r.hi) {} - FRect(int xlo,int ylo,int xhi,int yhi): lo(xlo,ylo),hi(xhi,yhi) {} - - FRect &operator =(const FRect &r) { lo = r.lo; hi = r.hi; return *this; } - FRect &operator ()(const FPnt &l,const FPnt &h) { lo = l; hi = h; return *this; } - FRect &operator ()(int xlo,int ylo,int xhi,int yhi) { lo(xlo,ylo); hi(xhi,yhi); return *this; } - - FRect &Move(int dx,int dy) { lo.Move(dx,dy); hi.Move(dx,dy); return *this; } - FRect &MoveTo(int x,int y) { hi(x+hi.X()-lo.X(),y+hi.Y()-lo.Y()); lo(x,y); return *this; } - - FPnt &Lo() { return lo; } - FPnt &Hi() { return hi; } - int SizeX() const { return hi.X()-lo.X()+1; } - int SizeY() const { return hi.Y()-lo.Y()+1; } - - FRect &Add(const FPnt &p); - FRect &Add(const FRect &r); - bool In(const FPnt &p) const; - bool Inter(const FRect &r) const; - -protected: - FPnt lo,hi; -}; - -class GuiObj: - public flext -{ - friend class GuiGroup; -public: - GuiObj(FCanvas *c = NULL,GuiGroup *p = NULL); - virtual ~GuiObj(); - - const t_symbol *Id() const { return idsym; } - virtual const t_symbol *Symbol() const { return NULL; } - - virtual void Active() {} - virtual void Inactive() {} - -/* - void Origin(int x,int y) { ori(x,y); } - void Origin(const FPnt &p) { ori = p; } - const FPnt &Origin() const { return ori; } - void OriMove(int dx,int dy) { ori.Move(dx,dy); } - int OriX() const { return ori.X(); } - int OriY() const { return ori.Y(); } -*/ - - virtual GuiSingle *Find(const t_symbol *s) { return NULL; } - inline GuiSingle *Find(const char *s) { return Find(MakeSymbol(s)); } - - virtual GuiObj &MoveRel(int dx,int dy) = 0; - virtual GuiObj &Focus() { return *this; } - - virtual GuiObj &Draw() = 0; - - FCanvas &Canv() { return *canvas; } - -protected: - virtual GuiObj &Delete() = 0; - - GuiGroup *parent; - FCanvas *canvas; - const t_symbol *idsym; - - virtual bool Method(flext_gui &g,const flext_gui::CBParams &p) = 0; - - FRect rect; -}; - - -class GuiSingle: - public GuiObj -{ - friend class flext_gui; -public: - GuiSingle(FCanvas *c = NULL,GuiGroup *p = NULL,const t_symbol *s = NULL); - ~GuiSingle(); - - virtual const t_symbol *Symbol() const { return sym; } - virtual void Symbol(const t_symbol *s); - void Symbol(const char *s) { Symbol(MakeSymbol(s)); } - - virtual void Active() { active = true; } - virtual void Inactive() { active = false; } - - virtual bool In(const FPnt &p) const { return false; } - - virtual GuiSingle *Find(const t_symbol *s); - virtual GuiObj &MoveTo(int x,int y); - virtual GuiObj &MoveRel(int dx,int dy); - virtual GuiObj &FillColor(unsigned long col); - virtual GuiObj &Outline(unsigned long col); - - virtual GuiObj &Focus(); - - GuiGroup &Parent() { return *parent; } - -protected: - virtual GuiObj &Delete(); - - const t_symbol *sym; - bool active; - - class Event { - public: - Event(int evmask,bool (*m)(flext_gui &g,GuiSingle &obj,const flext_gui::CBParams &p)); - ~Event(); - - int methfl; - bool (*method)(flext_gui &g,GuiSingle &obj,const flext_gui::CBParams &p); - bool ext; - Event *nxt; - } *event; - - void AddEvent(int evmask,bool (*m)(flext_gui &g,GuiSingle &obj,const flext_gui::CBParams &p)); - void RmvEvent(int evmask,bool (*m)(flext_gui &g,GuiSingle &obj,const flext_gui::CBParams &p)); - - virtual bool Method(flext_gui &g,const flext_gui::CBParams &p); -}; - - -class GuiPoint: - public GuiSingle -{ - friend class GuiGroup; - - GuiPoint(FCanvas *c = NULL,GuiGroup *p = NULL,const t_symbol *s = NULL): GuiSingle(c,p,s) {} - GuiObj &Set(int x,int y,long fill = -1); - virtual GuiObj &Draw(); - - long fill; -public: -}; - - -class GuiCloud: - public GuiSingle -{ - friend class GuiGroup; - - GuiCloud(FCanvas *c = NULL,GuiGroup *p = NULL,const t_symbol *s = NULL): GuiSingle(c,p,s),pnt(NULL) {} - GuiObj &Set(int n,const FPnt *p,long fill = -1); - virtual GuiObj &Draw(); - virtual GuiObj &Delete(); - - long fill; - int pnts; - FPnt *pnt; -public: -}; - - -class GuiBox: - public GuiSingle -{ - friend class GuiGroup; - - GuiBox(FCanvas *c = NULL,GuiGroup *p = NULL,const t_symbol *s = NULL): GuiSingle(c,p,s) {} - GuiObj &Set(int x,int y,int xsz,int ysz,int width = -1,long fill = -1,long outl = -1); - virtual GuiObj &Draw(); - - virtual bool In(const FPnt &p) const { return rect.In(p); } - - int width; - long fill,outln; -public: -}; - - -class GuiRect: - public GuiSingle -{ - friend class GuiGroup; - - GuiRect(FCanvas *c = NULL,GuiGroup *p = NULL,const t_symbol *s = NULL): GuiSingle(c,p,s) {} - GuiObj &Set(int x,int y,int xsz,int ysz,int width = -1,long outl = -1); - virtual GuiObj &Draw(); - - virtual bool In(const FPnt &p) const { return rect.In(p); } - - int width; - long outln; -public: -}; - - -class GuiLine: - public GuiSingle -{ - friend class GuiGroup; - - GuiLine(FCanvas *c = NULL,GuiGroup *p = NULL,const t_symbol *s = NULL): GuiSingle(c,p,s) {} - GuiObj &Set(int x1,int y1,int x2,int y2,int width = -1,long fill = -1); - virtual GuiObj &Draw(); - - int width; - long fill; - FPnt p1,p2; -public: -}; - - -class GuiPoly: - public GuiSingle -{ - friend class GuiGroup; - - GuiPoly(FCanvas *c = NULL,GuiGroup *p = NULL,const t_symbol *s = NULL): GuiSingle(c,p,s),pnt(NULL) {} - GuiObj &Set(int n,const FPnt *p,int width = -1,long fill = -1); - virtual GuiObj &Draw(); - virtual GuiObj &Delete(); - - int width; - long fill; - int pnts; - FPnt *pnt; -public: -}; - - -class GuiText: - public GuiSingle -{ - friend class GuiGroup; -public: - enum just_t { none = -1,left = 0,right,center }; -protected: - GuiText(FCanvas *c = NULL,GuiGroup *p = NULL,const t_symbol *s = NULL): GuiSingle(c,p,s) {} - GuiObj &Set(int x,int y,const char *txt = NULL,long fill = -1,just_t just = none); - virtual GuiObj &Draw(); - - just_t just; - long fill; -}; - - -class GuiGroup: - public GuiObj -{ - friend class flext_gui; -public: - GuiGroup(FCanvas *c,GuiGroup *p = NULL); - ~GuiGroup(); - - virtual GuiSingle *Find(const t_symbol *s); - virtual GuiObj &MoveRel(int dx,int dy); - - void Clear(); - void Add(GuiObj *o,bool own = true); - GuiSingle *Detach(const t_symbol *s); - - virtual GuiObj &Draw(); - - GuiGroup *Add_Group(); - GuiSingle *Add_Point(int x,int y,long fill = -1); - inline GuiSingle *Add_Point(const FPnt &p,long fill = -1) { return Add_Point(p.X(),p.Y(),fill); } - GuiSingle *Add_Cloud(int n,const FPnt *p,long fill = -1); - GuiSingle *Add_Box(int x,int y,int xsz,int ysz,int width = -1,long fill = -1,long outl = -1); - GuiSingle *Add_Rect(int x,int y,int xsz,int ysz,int width = -1,long outl = -1); - GuiSingle *Add_Line(int x1,int y1,int x2,int y2,int width = -1,long fill = -1); - inline GuiSingle *Add_Line(const FPnt &p1,const FPnt &p2,int width = -1,long fill = -1) { return Add_Line(p1.X(),p1.Y(),p2.X(),p2.Y(),width,fill); } - GuiSingle *Add_Poly(int n,const FPnt *p,int width = -1,long fill = -1); - GuiSingle *Add_Text(int x,int y,const char *txt,long fill = -1,GuiText::just_t just = GuiText::none); - inline GuiSingle *Add_Text(const FPnt &p,const char *txt,long fill = -1,GuiText::just_t just = GuiText::none) { return Add_Text(p.X(),p.Y(),txt,fill,just); } - - GuiSingle *Remove(GuiSingle *obj); - -protected: -#if FLEXT_SYS == FLEXT_SYS_PD - void AddTag(GuiObj *o); - void RemoveTag(GuiObj *o); -#endif - - virtual GuiObj &Delete(); - - class Part - { - public: - Part(GuiObj *o,bool own = true): obj(o),owner(own),nxt(NULL) {} - - GuiObj *obj; - bool owner; - Part *nxt; - } *head,*tail; - - virtual bool Method(flext_gui &g,const flext_gui::CBParams &p); -}; - -#endif diff --git a/externals/grill/guitest/guitest.vcproj b/externals/grill/guitest/guitest.vcproj deleted file mode 100644 index caa49efc..00000000 --- a/externals/grill/guitest/guitest.vcproj +++ /dev/null @@ -1,226 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/guitest/main.cpp b/externals/grill/guitest/main.cpp deleted file mode 100644 index 96e168dc..00000000 --- a/externals/grill/guitest/main.cpp +++ /dev/null @@ -1,166 +0,0 @@ -#include "flgui.h" -#include "flguiobj.h" - -#include -/* -#include -#include -#include -*/ - -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 303) -#error You need at least flext version 0.3.3 -#endif - - -#define V void -#define I int -#define C char -#define BL bool -#define L long -#define UL unsigned long - -class guitest: -public flext_gui //,virtual public flext_base -{ - FLEXT_HEADER(guitest,flext_gui) - -public: - guitest(I argc,t_atom *argv); - ~guitest(); - - void m_bang() - { - post("%s - bang!",thisName()); - } - -protected: - - virtual void g_Create(); -// virtual void g_Edit(bool selected); - - static bool g_Motion(flext_gui &g,GuiSingle &obj,const CBParams &p); - static bool g_MouseKey(flext_gui &g,GuiSingle &obj,const CBParams &p); - static bool g_Key(flext_gui &g,GuiSingle &obj,const CBParams &p); - -// virtual void g_Properties(); - virtual void g_Save(t_binbuf *b); - -private: - FLEXT_CALLBACK(m_bang); -}; - -FLEXT_NEW_V("guitest",guitest) - -guitest::guitest(I argc,t_atom *argv): - flext_gui(400,100) -{ - AddInAnything(); - AddOutInt(2); - - FLEXT_ADDBANG(0,m_bang); -} - -guitest::~guitest() -{ -} - - -void guitest::g_Create() -{ - GuiSingle *frame = Group().Add_Box(0,0,XSize(),YSize(),-1,0xE0E0E0); - frame->Symbol("rect1"); -// GuiSingle *wave = Group().Add_Box(8,10,XSize()-16,YSize()-11,0,0x4040FF); - Group().Add_Text(1,1,"Hula",-1,GuiText::left); -/* - I n = XSize()-16; - FPnt *p = new FPnt[n]; - for(int i = 0; i < n; ++i) { - p[i](8+i,10+rand()%(YSize()-11)); - } - Group().Add_Poly(n,p,-1,0xC0C0C0); - delete[] p; - - if(!BindEvent(*frame,g_Motion,evMotion)) post("Motion not supported"); - if(!BindEvent(*frame,g_Motion,evMouseDrag)) post("MouseDrag not supported"); - if(!BindEvent(*wave,g_MouseKey,evMouseDown)) post("MouseDown not supported"); - if(!BindEvent(*wave,g_MouseKey,evKeyDown)) post("KeyDown not supported"); - if(!BindEvent(*wave,g_MouseKey,evKeyUp)) post("KeyUp not supported"); - if(!BindEvent(*wave,g_MouseKey,evKeyRepeat)) post("KeyRepeat not supported"); -*/ -} - -/* -void guitest::g_Properties() -{ - post("properties"); -} -*/ - -void guitest::g_Save(t_binbuf *b) -{ - post("save"); -#if FLEXT_SYS == FLEXT_SYS_PD - binbuf_addv(b, "ssiis;", gensym("#X"),gensym("obj"), - (t_int)XLo(), (t_int)YLo(),MakeSymbol(thisName()) - // here the arguments - ); -#else -#endif -} - -/* -void guitest::g_Edit(bool selected) -{ - post("select is=%d", selected); - - GuiSingle *obj = Group().Find(MakeSymbol("rect1")); - if(obj) - obj->Outline(selected?0xFF0000:0x000000); - else - post("obj not found"); -} -*/ - -bool guitest::g_Motion(flext_gui &g,GuiSingle &obj,const CBParams &p) -{ - if(p.kind == evMotion) { - post("Motion %s x:%i y:%i mod:%i",GetString(obj.Id()),p.pMotion.x,p.pMotion.y,p.pMotion.mod); - } - else if(p.kind == evMouseDrag) { - post("Drag %s x:%i y:%i dx:%i dy:%i b:%i mod:%i",GetString(obj.Id()),p.pMouseDrag.x,p.pMouseDrag.y,p.pMouseDrag.dx,p.pMouseDrag.dy,p.pMouseDrag.b,p.pMouseDrag.mod); - } - else - post("Motion"); - return true; -} - -bool guitest::g_MouseKey(flext_gui &g,GuiSingle &obj,const CBParams &p) -{ - if(p.kind == evMouseDown) { - post("MouseDown %s x:%i y:%i b:%i mod:%i",GetString(obj.Id()),p.pMouseKey.x,p.pMouseKey.y,p.pMouseKey.b,p.pMouseKey.mod); - } - else if(p.kind == evKeyDown) { - post("KeyDown %s asc:%i key:%i mod:%i",GetString(obj.Id()),p.pKey.a,p.pKey.k,p.pKey.mod); - } - else if(p.kind == evKeyUp) { - post("KeyUp %s asc:%i key:%i mod:%i",GetString(obj.Id()),p.pKey.a,p.pKey.k,p.pKey.mod); - } - else if(p.kind == evKeyRepeat) { - post("KeyRepeat %s asc:%i key:%i mod:%i",GetString(obj.Id()),p.pKey.a,p.pKey.k,p.pKey.mod); - } - return true; -} - -bool guitest::g_Key(flext_gui &g,GuiSingle &obj,const CBParams &p) -{ - post("Key"); - return true; -} - - - - - - - diff --git a/externals/grill/guitest/make-files.txt b/externals/grill/guitest/make-files.txt deleted file mode 100644 index f5670fa3..00000000 --- a/externals/grill/guitest/make-files.txt +++ /dev/null @@ -1,7 +0,0 @@ -# all the source files from the package -NAME=guitest - -SRCDIR=. - -SRCS= flgui.cpp flguiobj.cpp main.cpp -HDRS= flgui.h flguiobj.h diff --git a/externals/grill/guitest/makefile.pd-linux b/externals/grill/guitest/makefile.pd-linux deleted file mode 100644 index 3c8632bb..00000000 --- a/externals/grill/guitest/makefile.pd-linux +++ /dev/null @@ -1,87 +0,0 @@ -# Copyright (C) 2002-2004 Thomas Grill (xovo@gmx.net) -# -# Makefile for gcc @ linux -# -# usage: -# to build run "make -f makefile.pd-linux" -# to install (as root), do "make -f makefile.pd-linux install" -# - -CONFIG=config-pd-linux.txt - -include $(CONFIG) - -# compiler+linker stuff -INCLUDES=$(PDPATH) -FLAGS=-DFLEXT_SYS=2 -CFLAGS=-O2 $(UFLAGS) -LDFLAGS=$(UFLAGS) # needed by icc -LIBS= - -ifdef FLEXT_SHARED -CFLAGS+=-shared -DFLEXT_SHARED -LDFLAGS+=-L $(FLEXTPATH) - -ifeq ($(CXX),icc) -LDFLAGS+=-i_dynamic -else -LDFLAGS+=-Wl,-Bdynamic -endif - -FLEXTLIB=-lflext - -else - -FLEXTLIB=$(FLEXTPATH)/libflext.a - -endif - - -# --------------------------------------------- -# the rest can stay untouched -# ---------------------------------------------- - -include make-files.txt - - -TARGET=$(TARGDIR)/$(NAME).pd_linux - -# default target -all: $(TARGDIR) $(TARGET) - -$(patsubst %,$(SRCDIR)/%,$(SRCS)): $(patsubst %,$(SRCDIR)/%,$(HDRS)) $(CONFIG) - touch $@ - -$(TARGDIR): - mkdir $(TARGDIR) - -$(TARGDIR)/%.o : $(SRCDIR)/%.cpp - $(CXX) -c $(CFLAGS) $(FLAGS) $(patsubst %,-I%,$(INCLUDES) $(FLEXTPATH)) $< -o $@ - -$(TARGET) : $(patsubst %.cpp,$(TARGDIR)/%.o,$(SRCS)) - $(CXX) -shared $(LDFLAGS) -o $@ $^ $(FLEXTLIB) $(patsubst %,-l%,$(LIBS)) - strip --strip-unneeded $@ - chmod 755 $@ - -$(INSTPATH): - mkdir $(INSTPATH) - -install:: $(INSTPATH) - -install:: $(TARGET) - cp $^ $(INSTPATH) - chown root.root $(patsubst %,$(INSTPATH)/%,$(notdir $^)) - chmod 755 $(patsubst %,$(INSTPATH)/%,$(notdir $^)) - -.PHONY: clean -clean: - rm -f $(TARGDIR)/*.o $(TARGET) - - - - - - - - - diff --git a/externals/grill/guitest/pd/guitest1.pd b/externals/grill/guitest/pd/guitest1.pd deleted file mode 100644 index dab24e77..00000000 --- a/externals/grill/guitest/pd/guitest1.pd +++ /dev/null @@ -1,7 +0,0 @@ -#N canvas 0 0 456 306 12; -#X obj 31 87 guitest; -#X obj 32 47 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X obj 30 231 print OUTPUT; -#X connect 0 0 2 0; -#X connect 1 0 0 0; diff --git a/externals/grill/namedobjs/gpl.txt b/externals/grill/namedobjs/gpl.txt deleted file mode 100644 index 5ea29a7d..00000000 --- a/externals/grill/namedobjs/gpl.txt +++ /dev/null @@ -1,346 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) 19yy - - 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 - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. - diff --git a/externals/grill/namedobjs/license.txt b/externals/grill/namedobjs/license.txt deleted file mode 100644 index e74bb6cc..00000000 --- a/externals/grill/namedobjs/license.txt +++ /dev/null @@ -1 +0,0 @@ -namedobjs - retrieve named objects in a patcher Copyright (C) 2002 Thomas Grill 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. In the official namedobjs distribution, the GNU General Public License is in the file gpl.txt --------------------------------------------------------- OTHER COPYRIGHT NOTICES --------------------------------------------------------- This package uses the flext C++ layer - See its license text below: --- flext ---------------------------------------------- flext - C++ layer for Max/MSP and pd (pure data) externals Copyright (C) 2001,2002 Thomas Grill 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. In the official flext distribution, the GNU General Public License is in the file gpl.txt \ No newline at end of file diff --git a/externals/grill/namedobjs/main.cpp b/externals/grill/namedobjs/main.cpp deleted file mode 100644 index cad037e8..00000000 --- a/externals/grill/namedobjs/main.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/* - -namedobjs - retrieve list of named objects in patcher (Max/MSP only!) - -Copyright (c) 2002-2003 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#include - -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 401) -#error You need at least flext version 0.4.1 -#endif - -#if FLEXT_SYS != FLEXT_SYS_MAX -#error "This object is for MaxMSP only!" -#endif - -#include - - -#define I int -#define L long -#define V void -#define C char - -class namedobjs: - public flext_base -{ - FLEXT_HEADER_S(namedobjs,flext_base,Setup) - -public: - namedobjs(); - -protected: - V m_bang(); - -private: - static V Setup(t_classid c); - - FLEXT_CALLBACK(m_bang); -}; - -FLEXT_NEW("namedobjs",namedobjs) - -V namedobjs::Setup(t_classid c) -{ - FLEXT_CADDBANG(c,0,m_bang); -} - -namedobjs::namedobjs() -{ - AddInAnything("Bang to retrieve list of named objects"); - AddOutList("Consecutive object type/name pairs"); - AddOutBang("Bang signals end of list"); -} - -V namedobjs::m_bang() -{ - t_canvas *canv = thisCanvas(); -// t_object *self = (t_object *)&x_obj->obj; - - t_box *b; - for(b = canv->p_box; b; b = b->b_next) { - if(b->b_firstin) { -// if(NOGOOD(b->b_firstin)) post("NOGOOD!"); - - t_messlist *ms; - - ms = ((t_tinyobject *)b->b_firstin)->t_messlist; - if(ms) { - const t_class *c = (const t_class *)(ms-1); - if(c) { - t_symbol *nm; - if (patcher_boxname(canv,b,&nm)) { - t_atom lst[4]; - SetString(lst[0],*(C **)c->c_sym->s_name); - SetSymbol(lst[1],nm); - SetInt(lst[2],b->b_rect.left); - SetInt(lst[3],b->b_rect.top); - ToOutList(0,4,lst); - } - } - - } - } - } - - ToOutBang(1); -} - - diff --git a/externals/grill/namedobjs/namedobjs.cw b/externals/grill/namedobjs/namedobjs.cw deleted file mode 100755 index 7e95ad83..00000000 Binary files a/externals/grill/namedobjs/namedobjs.cw and /dev/null differ diff --git a/externals/grill/namedobjs/namedobjs.help b/externals/grill/namedobjs/namedobjs.help deleted file mode 100755 index 6a54184e..00000000 Binary files a/externals/grill/namedobjs/namedobjs.help and /dev/null differ diff --git a/externals/grill/namedobjs/namedobjs.mpw b/externals/grill/namedobjs/namedobjs.mpw deleted file mode 100755 index 12826177..00000000 --- a/externals/grill/namedobjs/namedobjs.mpw +++ /dev/null @@ -1 +0,0 @@ -# namedobjs - list named objects in a patcher # Copyright (c) 2002 Thomas Grill (xovo@gmx.net) # # Makefile for Apple MPW-PR # # usage: make -f namedobjs.mpw # # --------------------------------------------- MAKEFILE = namedobjs.mpw ¥MondoBuild¥ = {MAKEFILE} # Make blank to avoid rebuilds when makefile is modified Name = namedobjs ObjDir = :MPW: MaxSDK = HD Daten:Prog Stuff:Max/MSP SDK:SDK Examples flext = ::flext: Includes = -i :,"{flext}","{MaxSDK}:Max Includes","{MaxSDK}:MSP Includes" Defines = -d MAXMSP Sym-PPC = -sym off Flags = -bool on -enum int -includes unix -opt speed,unroll,unswitch PPCCPlusOptions = {Includes} {Sym-PPC} {Defines} {Flags} ### Source Files ### SrcFiles = main.cpp Headers = ### Object Files ### Obj-PPC = ¶ "{ObjDir}main.cpp.x" LibFiles-Ext = ¶ "{flext}MPW:flext.o" ¶ "{MaxSDK}:Max Includes:MaxLib" ¶ "{MaxSDK}:MSP Includes:MaxAudioLib" ### Libraries ### LibFiles-PPC = ¶ "{SharedLibraries}StdCLib" ¶ "{SharedLibraries}MathLib" ¶ "{PPCLibraries}StdCRuntime.o" ¶ "{PPCLibraries}PPCCRuntime.o" ¶ "{PPCLibraries}MrCPlusLib.o" ¶ ### Default Rules ### {ObjDir} Ä : .cpp.x Ä .cpp {¥MondoBuild¥} {Headers} {PPCCPlus} {depDir}{default}.cpp -o {targDir}{default}.cpp.x {PPCCPlusOptions} ### Build Rules ### all Ä Folder {¥MondoBuild¥} {ObjDir}{Name} Folder ÄÄ if !`Exists {ObjDir}` ; NewFolder {ObjDir} ; end {ObjDir}{Name} Ä {Obj-PPC} PPCLink ¶ -o {Targ} ¶ {deps} ¶ {LibFiles-Ext} ¶ {LibFiles-PPC} ¶ {Sym-PPC} ¶ -mf -d ¶ -t 'iLaF' ¶ -c 'max2' ¶ -xm s ¶ -export main ¶ -main main \ No newline at end of file diff --git a/externals/grill/namedobjs/readme.txt b/externals/grill/namedobjs/readme.txt deleted file mode 100644 index dd784845..00000000 --- a/externals/grill/namedobjs/readme.txt +++ /dev/null @@ -1 +0,0 @@ -namedobjs - retrieve named objects in a patcher Copyright (c) 2002 Thomas Grill (xovo@gmx.net) For information on usage and redistribution, and for a DISCLAIMER OF ALL WARRANTIES, see the file, "license.txt," in this distribution. Donations for further development of the package are highly appreciated. ---------------------------------------------------------------------------- You will need the flext C++ layer for PD and Max/MSP externals to compile this. Package files: - readme.txt: this one - gpl.txt,license.txt: GPL license stuff - main.cpp: all the stuff ---------------------------------------------------------------------------- The package should at least compile (and is tested) with the following compilers: - Max/MSP - MacOS: o CodeWarrior Pro: edit "namedobjs.cw" project file o MPW-PR: edit "namedobjs.mpw" project file ---------------------------------------------------------------------------- Description: 1) send a bang to the left inlet 2) for each named object in the patcher a message [class name pos-left pos-top] is output at the left outlet 3) after the last message a bang is output at the right outlet ---------------------------------------------------------------------------- Version history: 0.0.1: - first release --------------------------------------------------------------------------- TODO list: \ No newline at end of file diff --git a/externals/grill/pool/gpl.txt b/externals/grill/pool/gpl.txt deleted file mode 100644 index 5ea29a7d..00000000 --- a/externals/grill/pool/gpl.txt +++ /dev/null @@ -1,346 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) 19yy - - 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 - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. - diff --git a/externals/grill/pool/license.txt b/externals/grill/pool/license.txt deleted file mode 100644 index 4be8d32a..00000000 --- a/externals/grill/pool/license.txt +++ /dev/null @@ -1,50 +0,0 @@ -pool - a hierarchical storage object for PD and MaxMSP -Copyright (C) 2002-2003 Thomas Grill - -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. - -In the official pool distribution, the GNU General Public License is -in the file gpl.txt - ---------------------------------------------------------- - - OTHER COPYRIGHT NOTICES - ---------------------------------------------------------- -This package uses the flext C++ layer - See its license text below: - - ---- flext ---------------------------------------------- -flext - C++ layer for Max/MSP and pd (pure data) externals -Copyright (C) 2001-2003 Thomas Grill - -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. - -In the official flext distribution, the GNU General Public License is -in the file gpl.txt - - diff --git a/externals/grill/pool/package.txt b/externals/grill/pool/package.txt deleted file mode 100644 index 93df3011..00000000 --- a/externals/grill/pool/package.txt +++ /dev/null @@ -1,7 +0,0 @@ -NAME=pool - -SRCDIR=source -PRECOMPILE=pool.h - -SRCS= main.cpp data.cpp pool.cpp -HDRS= pool.h diff --git a/externals/grill/pool/pool-0.2.dtd b/externals/grill/pool/pool-0.2.dtd deleted file mode 100644 index 57a48498..00000000 --- a/externals/grill/pool/pool-0.2.dtd +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/externals/grill/pool/pool-help.pd b/externals/grill/pool/pool-help.pd deleted file mode 100644 index 8b55ecb3..00000000 --- a/externals/grill/pool/pool-help.pd +++ /dev/null @@ -1,319 +0,0 @@ -#N canvas 24 27 968 789 12; -#X msg 296 105 set 1 2 3; -#X obj 238 631 print K; -#X msg 607 211 getall; -#X msg 296 134 set A k g; -#X obj 189 660 print V; -#X obj 287 605 print D; -#X msg 296 164 set A l m; -#X msg 297 195 set 2 34; -#X msg 427 297 clr A; -#X msg 429 105 get A; -#X msg 429 130 get 2; -#X msg 31 132 echodir \$1; -#X obj 31 111 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 -; -#X obj 31 213 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 -; -#X msg 31 234 absdir \$1; -#X text 426 277 clear value; -#X text 425 83 get value; -#X text 360 605 directory (abs or rel to current); -#X text 264 661 data value; -#X text 310 631 data key; -#X msg 32 314 pool pool1; -#X msg 33 343 pool; -#X text 77 343 set to private; -#X msg 33 405 reset; -#X text 32 384 clear all pool data; -#X msg 608 111 clrall; -#X text 599 89 clear all values in dir; -#X text 607 190 get all values in dir; -#X text 175 500 pool name can be given as argument; -#X text 598 136 clear all values and dirs; -#X msg 606 158 clrrec; -#X msg 605 258 getrec; -#X text 605 236 get all values in dir and subdirs; -#X text 670 289 bang at EOL; -#X text 673 208 bang at EOL; -#X text 670 257 depth may be given; -#X text 34 291 set pool name; -#X text 30 89 at each command; -#X text 30 73 echo current dir; -#X text 295 82 set values; -#X text 26 194 (default on); -#X text 18 178 report absolute dirs; -#X msg 34 452 help; -#X text 77 453 get some info; -#X text 670 274 default=-1 (= infinite); -#X msg 609 340 cntall; -#X text 675 338 count all values in dir; -#X msg 609 366 cntrec; -#X text 677 364 ... and subdirs; -#X text 673 378 (depth may be given); -#N canvas 472 45 444 655 dirs 0; -#X msg 111 40 mkdir fld1; -#X msg 113 135 chdir; -#X msg 109 331 updir; -#X msg 110 468 getsub -1; -#X text 112 20 make absolute dir; -#X text 111 64 make relative dir; -#X msg 112 85 mksub fld2; -#X text 111 117 change to absolute dir; -#X msg 112 178 chsub fld2; -#X text 110 159 change to relative dir; -#X text 105 312 change to upper dir; -#X text 106 364 remove absolute dir; -#X msg 107 383 rmdir fld1; -#X msg 109 422 rmsub fld2; -#X text 108 403 remove relative dir; -#X text 108 450 get subdirs; -#X text 250 494 -1 ... infinite; -#X text 166 327 depth may be given; -#X text 167 343 default=1; -#X text 208 463 depth may be given; -#X text 206 479 default=1; -#X text 107 491 count subdirs; -#X msg 110 512 cntsub -1; -#X msg 110 572 getdir; -#X text 109 552 get current dir; -#X text 175 572 always absolute; -#X obj 13 252 s \$0-pool; -#X msg 111 231 mkchdir fld1; -#X text 112 211 make and change to absolute dir; -#X msg 109 276 mkchsub fld2; -#X text 110 256 make and change to relative dir; -#X connect 0 0 26 0; -#X connect 1 0 26 0; -#X connect 2 0 26 0; -#X connect 3 0 26 0; -#X connect 6 0 26 0; -#X connect 8 0 26 0; -#X connect 12 0 26 0; -#X connect 13 0 26 0; -#X connect 22 0 26 0; -#X connect 23 0 26 0; -#X connect 27 0 26 0; -#X connect 29 0 26 0; -#X restore 715 490 pd dirs; -#X text 714 469 directory operations; -#N canvas 0 22 845 610 file 0; -#X text 117 207 save dir and subdirs; -#X text 117 165 save data in current dir; -#X text 117 253 load data into current dir; -#X text 115 300 load data into current dir and below; -#X text 132 340 depth (default -1) and; -#X text 134 356 mkdir flag (default 1) can be given; -#X text 117 37 save all; -#X text 117 81 load all (add to existing data); -#X text 22 12 file operations; -#X obj 22 188 s \$0-pool; -#X text 473 209 save dir and subdirs; -#X text 473 167 save data in current dir; -#X text 473 255 load data into current dir; -#X text 471 302 load data into current dir and below; -#X text 488 342 depth (default -1) and; -#X text 490 358 mkdir flag (default 1) can be given; -#X text 473 39 save all; -#X text 473 83 load all (add to existing data); -#X obj 378 190 s \$0-pool; -#X text 444 12 XML format; -#X msg 120 54 save pool.dat; -#X msg 118 100 load pool.dat; -#X msg 117 184 svdir pool.dat; -#X msg 117 226 svrec pool.dat; -#X msg 116 272 lddir pool.dat; -#X msg 116 319 ldrec pool.dat; -#X msg 476 56 savex pool.xml; -#X msg 474 102 loadx pool.xml; -#X msg 473 186 svxdir pool.xml; -#X msg 473 228 svxrec pool.xml; -#X msg 472 274 ldxdir pool.xml; -#X msg 472 321 ldxrec pool.xml; -#X text 26 398 If the file name is given without a path specification -the folder containing the current patcher will be used.; -#X text 27 451 The attribute outlet reports if file saving/loading -has been successful \, by outputting the message tag and a boolean -flag.; -#X text 29 517 Please note: the absdir flag is also used for paths -written into the files. With absdir=1 absolute paths are written \, -absdir=0 means relative paths.; -#X connect 20 0 9 0; -#X connect 21 0 9 0; -#X connect 22 0 9 0; -#X connect 23 0 9 0; -#X connect 24 0 9 0; -#X connect 25 0 9 0; -#X connect 26 0 18 0; -#X connect 27 0 18 0; -#X connect 28 0 18 0; -#X connect 29 0 18 0; -#X connect 30 0 18 0; -#X connect 31 0 18 0; -#X restore 715 600 pd file; -#X text 713 577 file operations; -#X text 713 634 clipboard operations; -#N canvas 0 22 545 593 clip 0; -#X text 97 56 copy value associated to key into clipboard; -#X msg 100 77 copy A; -#X msg 98 119 cut B; -#X text 96 101 cut value associated to key into clipboard; -#X msg 96 401 paste; -#X msg 98 179 copyall; -#X text 95 158 copy all values in current dir into clipboard; -#X msg 97 221 cutall; -#X text 95 201 cut all values in current dir into clipboard; -#X text 94 263 copy all values in current dir into clipboard; -#X text 94 306 cut all values in current dir into clipboard; -#X msg 97 284 copyrec; -#X text 194 285 depth may be given (default=-1); -#X text 193 326 depth may be given (default=-1); -#X msg 96 326 cutrec 1; -#X text 194 345 1..only with first level subdirs; -#X text 96 379 paste clipboard contents into current directory; -#X text 167 397 depth (default -1) and; -#X text 169 413 mkdir flag (default 1) can be given; -#X text 183 448 depth (default -1) and; -#X text 185 466 mkdir flag (default 1) can be given; -#X msg 95 453 pasteadd; -#X text 95 431 paste but don't replace; -#X msg 94 521 clrclip; -#X text 171 520 clear clipboard (free memory); -#X text 22 12 clipboard operations (this is an internal clipboard...) -; -#X obj 4 193 s \$0-pool; -#X connect 1 0 26 0; -#X connect 2 0 26 0; -#X connect 4 0 26 0; -#X connect 5 0 26 0; -#X connect 7 0 26 0; -#X connect 11 0 26 0; -#X connect 14 0 26 0; -#X connect 21 0 26 0; -#X connect 23 0 26 0; -#X restore 714 655 pd clip; -#X text 715 439 more commands:; -#X obj 237 444 r \$0-pool; -#X text 174 517 data is shared among pool objects with the same name -; -#X obj 26 10 cnv 15 850 45 empty empty pool 10 22 0 24 -260818 -1 0 -; -#X obj 386 553 print A; -#X text 458 552 attributes; -#X msg 34 490 getattributes; -#X msg 139 132 getechodir; -#X msg 130 234 getabsdir; -#X msg 141 314 getpool; -#X msg 297 345 add 2 14; -#X obj 260 478 pool @valcnt 10 @dircnt 5; -#X text 330 425 expected value and directory counts; -#X text 330 440 can be given for optimal performance; -#X msg 429 155 get 3; -#X msg 295 222 set 3 -1 1; -#X msg 32 518 getmethods; -#X text 328 454 (see attributes in properties dialog); -#X text 713 687 console printout; -#N canvas 0 22 612 291 print 0; -#X obj 21 231 s \$0-pool; -#X msg 109 80 printall; -#X msg 109 132 printrec; -#X text 110 60 print all values in dir; -#X text 109 112 print values in dir and subdirs; -#X text 190 133 (depth may be given); -#X text 22 12 print-to-console operations; -#X text 201 183 (depth may be given); -#X msg 109 181 printroot; -#X text 109 161 print values in dir and subdirs (starting from root) -; -#X connect 1 0 0 0; -#X connect 2 0 0 0; -#X connect 8 0 0 0; -#X restore 715 708 pd print; -#X text 272 33 http://grrrr.org; -#X msg 428 225 geti \$1; -#X text 426 185 get indexed element; -#X obj 427 205 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -10 -262144 -1 -1 0 256; -#X text 297 323 set but don't replace; -#X text 294 256 set value at index; -#X msg 295 276 seti 3 Uhu; -#X text 424 343 clear value at index; -#X msg 425 363 clri 2; -#X text 713 523 output ordering; -#N canvas 285 155 534 455 ordered 0; -#X obj 24 284 s \$0-pool; -#X msg 112 191 ogetall; -#X msg 110 287 ogetrec; -#X text 113 171 get all values in dir (ordered); -#X text 109 244 get all values in dir und subdirs; -#X text 185 311 bang at EOL; -#X text 107 262 (ordered); -#X text 109 365 get subdirs (ordered); -#X msg 110 389 ogetsub; -#X text 385 400 (-1..infinite); -#X text 183 189 index \, direction may be given; -#X text 28 10 ordered output sorts by key or value ascending or descending -; -#X text 28 71 index > 0 sort by atom \, at indexed position; -#X text 28 53 index = 0 sort by key (default); -#X text 30 100 direction = 0... ascending (default); -#X text 30 118 direction != 0... descending; -#X text 183 290 depth default to -1 (= infinite); -#X text 183 273 depth \, index \, direction may be given; -#X text 208 381 depth \, index \, direction may be given; -#X text 206 401 depth defaults to 1; -#X connect 1 0 0 0; -#X connect 2 0 0 0; -#X connect 8 0 0 0; -#X restore 714 544 pd ordered; -#X text 35 699 NOTE: pool is currently not reentrant! This means that -you should not input data as a direct reaction upon output.; -#X text 32 733 (this only applies to pools of the same name); -#X obj 340 579 print C; -#X text 412 579 command; -#X obj 294 552 route bang; -#X obj 499 666 print ------------; -#X text 503 646 separator on bang; -#X text 272 13 a hierarchical storage object \, (C)2002-2008 Thomas -Grill; -#X connect 0 0 67 0; -#X connect 2 0 67 0; -#X connect 3 0 67 0; -#X connect 6 0 67 0; -#X connect 7 0 67 0; -#X connect 8 0 67 0; -#X connect 9 0 67 0; -#X connect 10 0 67 0; -#X connect 11 0 67 0; -#X connect 12 0 11 0; -#X connect 13 0 14 0; -#X connect 14 0 67 0; -#X connect 20 0 67 0; -#X connect 21 0 67 0; -#X connect 23 0 67 0; -#X connect 25 0 67 0; -#X connect 30 0 67 0; -#X connect 31 0 67 0; -#X connect 42 0 67 0; -#X connect 45 0 67 0; -#X connect 47 0 67 0; -#X connect 57 0 67 0; -#X connect 62 0 67 0; -#X connect 63 0 67 0; -#X connect 64 0 67 0; -#X connect 65 0 67 0; -#X connect 66 0 67 0; -#X connect 67 0 4 0; -#X connect 67 1 1 0; -#X connect 67 2 5 0; -#X connect 67 3 91 0; -#X connect 67 4 60 0; -#X connect 70 0 67 0; -#X connect 71 0 67 0; -#X connect 72 0 67 0; -#X connect 77 0 67 0; -#X connect 79 0 77 0; -#X connect 82 0 67 0; -#X connect 84 0 67 0; -#X connect 91 0 92 0; -#X connect 91 1 89 0; diff --git a/externals/grill/pool/pool.help b/externals/grill/pool/pool.help deleted file mode 100755 index 4a287176..00000000 Binary files a/externals/grill/pool/pool.help and /dev/null differ diff --git a/externals/grill/pool/pool.mcp b/externals/grill/pool/pool.mcp deleted file mode 100755 index 91fcb1fe..00000000 Binary files a/externals/grill/pool/pool.mcp and /dev/null differ diff --git a/externals/grill/pool/pool.vcproj b/externals/grill/pool/pool.vcproj deleted file mode 100644 index 59ecc423..00000000 --- a/externals/grill/pool/pool.vcproj +++ /dev/null @@ -1,371 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/pool/readme.txt b/externals/grill/pool/readme.txt deleted file mode 100644 index 511614b5..00000000 --- a/externals/grill/pool/readme.txt +++ /dev/null @@ -1,127 +0,0 @@ -pool - a hierarchical storage object for PD and Max/MSP - -Copyright (c) 2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -Donations for further development of the package are highly appreciated. -Visit https://www.paypal.com/xclick/business=gr%40grrrr.org&item_name=pool&no_note=1&tax=0¤cy_code=EUR - ----------------------------------------------------------------------------- - -Goals/features of the package: - -- pool can store and retrieve key/value pairs, where a key can be any atom and - the value can be any list of atoms -- pool can manage folders. A folder name can be any atom. -- pool objects can be named and then share their data space -- clipboard operations are possible in a pool or among several pools -- file operations can load/save data from disk - ----------------------------------------------------------------------------- - -IMPORTANT INFORMATION for all PD users: - -Put the pd-msvc/pool.dll, pd-linux/pool.pd_linux or pd-darwin/pool.pd_darwin file -into the extra folder of the PD installation, or use a -path or -lib option -at PD startup to find the pool external. - -Put the help-pool.pd file into the doc\5.reference subfolder of your PD installation. - ----------------------------------------------------------------------------- - -IMPORTANT INFORMATION for all Max/MSP users: - -For Mac OSX put the max-osx/pool.mxd file into the folder -/Library/Application Support/Cycling '74/externals - -For Mac OS9 put the max-os9/pool.mxe file into the externals subfolder of your Max/MSP installation - -For Windows put the max-msvc\pool.mxe file into the folder -C:\program files\common files\Cycling '74\externals (english version) - -Put the pool.help file into the max-help folder. - -============================================================================ - - -BUILDING from source --------------------- - -You will need the flext C++ layer for PD and Max/MSP externals to compile this. -See http://grrrr.org/ext/flext -Download, install and compile the package. -Afterwards you can proceed with building this external. - - -pd/Max - Windows - Microsoft Visual C, Borland C++, MinGW: ----------------------------------------------------------- -Start a command shell with your eventual build environment -(e.g. run vcvars32.bat for Microsoft Visual Studio) - -then run - ..\flext\build.bat -(you would have to substitute ..\flext with the respective path to the flext package) - - -pd/Max - OSX/Linux - GCC: -------------------------- -From a shell run -bash ../flext/build.sh -(you would have to substitute ../flext with the respective path to the flext package) - - -============================================================================ - -Version history: - -0.2.2: -- fixed serious bug with clearing values and dirs. e.g. "clrall" and "clrrec" messages. -- fixed double-free for clearing dirs and values -- re-introduced a help message -- fixed bug in nested-dir XML saving -- changed printrec/printroot to display empty folders -- new curdir attribute for getting/setting the current directory -- changed pool name searching with STL code (more efficient) -- added success/error reporting for file operations (through attribute outlet) -- fixed handling of non-ASCII-characters -- XML files are now encoded UTF-8 -- implemented output sorting (ogetall, ogetrec, ogetsub) -- fixed some potential buffer overrun problems - -0.2.1: -- fixed "cntsub"... directories in current directory have been forgotten -- store/create also empty dirs with file I/O -- more inlined functions and better symbol handling -- added "seti" message to set elements at index -- added "clri" message to erase elements at index -- fixed bad bug: pool::priv was not initialized -- enhanced and optimized atom parsing -- escaped symbols (with \) for whitespace support on store and load -- escape symbols also with "" to help the load routine -- improved reading of legacy data by Frank Barknecht -- use statically allocated lists where feasible -- bug fix: [reset( didn't reset the current dir -- file loading: fixed recognition of stringified directory names - -0.2.0: -- attributes (pool,private,echodir,absdir) -- added "geti" message for retrieval of a value at an index -- fixed bug in "get" message if key not present -- adapted source to flext 0.4.1 - register methods at class creation -- extensive use of hashing for keys and directories -- database can be saved/loaded as XML data -- fixed bug with stored numbers starting with - or + -- relative file names will be based on the folder of the current patcher -- added printall, printrec, printroot messages for console printout -- added mkchdir, mkchsub to create and change to directories at once -- change storage object only when name has changed - -0.1.0: -- first public release - ---------------------------------------------------------------------------- - -general: -- what is output as value if it is key only? (Max->nothing!) -- XML format ok? diff --git a/externals/grill/pool/source/data.cpp b/externals/grill/pool/source/data.cpp deleted file mode 100644 index de5d555e..00000000 --- a/externals/grill/pool/source/data.cpp +++ /dev/null @@ -1,210 +0,0 @@ -/* -pool - hierarchical storage object for PD and Max/MSP - -Copyright (c) 2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 16:14:29 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#include "pool.h" -#include -#include -#include -#include - -using namespace std; - -pooldata::pooldata(const t_symbol *s,int vcnt,int dcnt): - sym(s),nxt(NULL),refs(0), - root(nullatom,NULL,vcnt,dcnt) -{ - FLEXT_LOG1("new pool %s",sym?flext_base::GetString(sym):""); -} - -pooldata::~pooldata() -{ - FLEXT_LOG1("free pool %s",sym?flext_base::GetString(sym):""); -} - - -const t_atom pooldata::nullatom = { A_NULL }; - -int pooldata::GetAll(const AtomList &d,t_atom *&keys,Atoms *&lst) -{ - pooldir *pd = root.GetDir(d); - if(pd) - return pd->GetAll(keys,lst); - else { - keys = NULL; lst = NULL; - return 0; - } -} - -int pooldata::PrintAll(const AtomList &d) -{ - char tmp[1024]; - d.Print(tmp,sizeof tmp); - pooldir *pd = root.GetDir(d); - strcat(tmp," , "); - int cnt = pd?pd->PrintAll(tmp,sizeof tmp):0; - if(!cnt) post(tmp); - return cnt; -} - -int pooldata::GetSub(const AtomList &d,const t_atom **&dirs) -{ - pooldir *pd = root.GetDir(d); - if(pd) - return pd->GetSub(dirs); - else { - dirs = NULL; - return 0; - } -} - - -bool pooldata::Paste(const AtomList &d,const pooldir *clip,int depth,bool repl,bool mkdir) -{ - pooldir *pd = root.GetDir(d); - return pd && pd->Paste(clip,depth,repl,mkdir); -} - -pooldir *pooldata::Copy(const AtomList &d,const t_atom &key,bool cut) -{ - pooldir *pd = root.GetDir(d); - if(pd) { - AtomList *val = pd->GetVal(key,cut); - if(val) { - pooldir *ret = new pooldir(nullatom,NULL,pd->VSize(),pd->DSize()); - ret->SetVal(key,val); - return ret; - } - else - return NULL; - } - else - return NULL; -} - -pooldir *pooldata::CopyAll(const AtomList &d,int depth,bool cut) -{ - pooldir *pd = root.GetDir(d); - if(pd) { - // What sizes should we choose here? - pooldir *ret = new pooldir(nullatom,NULL,pd->VSize(),pd->DSize()); - if(pd->Copy(ret,depth,cut)) - return ret; - else { - delete ret; - return NULL; - } - } - else - return NULL; -} - - -static const char *CnvFlnm(char *dst,const char *src,int sz) -{ -#if FLEXT_SYS == FLEXT_SYS_PD && FLEXT_OS == FLEXT_OS_WIN - int i,cnt = strlen(src); - if(cnt >= sz-1) return NULL; - for(i = 0; i < cnt; ++i) - dst[i] = src[i] != '/'?src[i]:'\\'; - dst[i] = 0; - return dst; -#else - return src; -#endif -} - -bool pooldata::LdDir(const AtomList &d,const char *flnm,int depth,bool mkdir) -{ - pooldir *pd = root.GetDir(d); - if(pd) { - char tmp[1024]; // CnvFlnm checks for size of string buffer - const char *t = CnvFlnm(tmp,flnm,sizeof tmp); - if(t) { - ifstream file(t); - return file.good() && pd->LdDir(file,depth,mkdir); - } - else return false; - } - else - return false; -} - -bool pooldata::SvDir(const AtomList &d,const char *flnm,int depth,bool absdir) -{ - pooldir *pd = root.GetDir(d); - if(pd) { - char tmp[1024]; // CnvFlnm checks for size of string buffer - const char *t = CnvFlnm(tmp,flnm,sizeof tmp); - if(t) { - ofstream file(t); - Atoms tmp; - if(absdir) tmp = d; - return file.good() && pd->SvDir(file,depth,tmp); - } - else return false; - } - else - return false; -} - -bool pooldata::LdDirXML(const AtomList &d,const char *flnm,int depth,bool mkdir) -{ - pooldir *pd = root.GetDir(d); - if(pd) { - char tmp[1024]; // CnvFlnm checks for size of string buffer - const char *t = CnvFlnm(tmp,flnm,sizeof tmp); - if(t) { - ifstream file(t); - bool ret = file.good() != 0; - if(ret) { - file.getline(tmp,sizeof tmp); - ret = !strncmp(tmp,"LdDirXML(file,depth,mkdir); - return ret; - } - } - - return false; -} - -bool pooldata::SvDirXML(const AtomList &d,const char *flnm,int depth,bool absdir) -{ - pooldir *pd = root.GetDir(d); - if(pd) { - char tmp[1024]; // CnvFlnm checks for size of string buffer - const char *t = CnvFlnm(tmp,flnm,sizeof tmp); - if(t) { - ofstream file(t); - Atoms tmp; - if(absdir) tmp = d; - if(file.good()) { - file << "" << endl; - file << "" << endl; - file << "" << endl; - bool ret = pd->SvDirXML(file,depth,tmp); - file << "" << endl; - return ret; - } - } - } - - return false; -} diff --git a/externals/grill/pool/source/main.cpp b/externals/grill/pool/source/main.cpp deleted file mode 100644 index 3b262113..00000000 --- a/externals/grill/pool/source/main.cpp +++ /dev/null @@ -1,1395 +0,0 @@ -/* -pool - hierarchical storage object for PD and Max/MSP - -Copyright (c) 2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 16:14:29 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#include "pool.h" -#include -#include - -#define POOL_VERSION "0.2.2pre" - -#define VCNT 32 -#define DCNT 8 - - -class pool: - public flext_base -{ - FLEXT_HEADER_S(pool,flext_base,setup) - -public: - pool(int argc,const t_atom *argv); - virtual ~pool(); - - static void setup(t_classid); - - virtual bool Init(); - - pooldata *Pool() { return pl; } - -protected: - - // switch to other pool - void ms_pool(const AtomList &l); - void mg_pool(AtomList &l); - - void mg_priv(bool &p) const { p = pl && pl->Private(); } - - // print some help message - static void m_help() { post("pool " POOL_VERSION " - hierarchical storage object, (C)2002-2008 Thomas Grill"); } - - // clear all data in pool - void m_reset(); - - // handle directories - void m_getdir(); - - void m_mkdir(int argc,const t_atom *argv,bool abs = true,bool chg = false); // make (and change) to dir - void m_mkchdir(int argc,const t_atom *argv) { m_mkdir(argc,argv,true,true); } // make and change to dir - void m_chdir(int argc,const t_atom *argv,bool abs = true); // change to dir - void m_rmdir(int argc,const t_atom *argv,bool abs = true); // remove dir - void m_updir(int argc,const t_atom *argv); // one or more levels up - - void ms_curdir(const AtomList &l) { m_chdir(l.Count(),l.Atoms()); } - - void m_mksub(int argc,const t_atom *argv) { m_mkdir(argc,argv,false); } - void m_mkchsub(int argc,const t_atom *argv) { m_mkdir(argc,argv,false,true); } - void m_chsub(int argc,const t_atom *argv) { m_chdir(argc,argv,false); } - void m_rmsub(int argc,const t_atom *argv) { m_rmdir(argc,argv,false); } - - // handle data - void m_set(int argc,const t_atom *argv) { set(argc,argv,true); } - void m_seti(int argc,const t_atom *argv); // set value at index - void m_add(int argc,const t_atom *argv) { set(argc,argv,false); } - void m_clr(int argc,const t_atom *argv); - void m_clri(int ix); // clear value at index - void m_clrall(); // only values - void m_clrrec(); // also subdirectories - void m_clrsub(); // only subdirectories - void m_get(int argc,const t_atom *argv); - void m_geti(int ix); // get value at index - void m_getall(); // only values - void m_getrec(int argc,const t_atom *argv); // also subdirectories - void m_getsub(int argc,const t_atom *argv); // only subdirectories - void m_ogetall(int argc,const t_atom *argv); // only values (ordered) - void m_ogetrec(int argc,const t_atom *argv); // also subdirectories (ordered) - void m_ogetsub(int argc,const t_atom *argv); // only subdirectories (ordered) - void m_cntall(); // only values - void m_cntrec(int argc,const t_atom *argv); // also subdirectories - void m_cntsub(int argc,const t_atom *argv); // only subdirectories - - // print directories - void m_printall(); // print values in current dir - void m_printrec(int argc,const t_atom *argv,bool fromroot = false); // print values recursively - void m_printroot() { m_printrec(0,NULL,true); } // print values recursively from root - - // cut/copy/paste - void m_paste(int argc,const t_atom *argv) { paste(thisTag(),argc,argv,true); } // paste contents of clipboard - void m_pasteadd(int argc,const t_atom *argv) { paste(thisTag(),argc,argv,false); } // paste but don't replace - void m_clrclip(); // clear clipboard - void m_cut(int argc,const t_atom *argv) { copy(thisTag(),argc,argv,true); } // cut value into clipboard - void m_copy(int argc,const t_atom *argv) { copy(thisTag(),argc,argv,false); } // copy value into clipboard - void m_cutall() { copyall(thisTag(),true,0); } // cut all values in current directory into clipboard - void m_copyall() { copyall(thisTag(),false,0); } // copy all values in current directory into clipboard - void m_cutrec(int argc,const t_atom *argv) { copyrec(thisTag(),argc,argv,true); } // cut directory (and subdirs) into clipboard - void m_copyrec(int argc,const t_atom *argv) { copyrec(thisTag(),argc,argv,false); } // cut directory (and subdirs) into clipboard - - // load/save from/to file - void m_load(int argc,const t_atom *argv) { load(argc,argv,false); } - void m_save(int argc,const t_atom *argv) { save(argc,argv,false); } - void m_loadx(int argc,const t_atom *argv) { load(argc,argv,true); } // XML - void m_savex(int argc,const t_atom *argv) { save(argc,argv,true); } // XML - - // load directories - void m_lddir(int argc,const t_atom *argv) { lddir(argc,argv,false); } // load values into current dir - void m_ldrec(int argc,const t_atom *argv) { ldrec(argc,argv,false); } // load values recursively - void m_ldxdir(int argc,const t_atom *argv) { lddir(argc,argv,true); } // load values into current dir (XML) - void m_ldxrec(int argc,const t_atom *argv) { ldrec(argc,argv,true); } // load values recursively (XML) - - // save directories - void m_svdir(int argc,const t_atom *argv) { svdir(argc,argv,false); } // save values in current dir - void m_svrec(int argc,const t_atom *argv) { svrec(argc,argv,false); } // save values recursively - void m_svxdir(int argc,const t_atom *argv) { svdir(argc,argv,true); } // save values in current dir (XML) - void m_svxrec(int argc,const t_atom *argv) { svrec(argc,argv,true); } // save values recursively (XML) - -private: - static bool KeyChk(const t_atom &a); - static bool ValChk(int argc,const t_atom *argv); - static bool ValChk(const AtomList &l) { return ValChk(l.Count(),l.Atoms()); } - void ToOutAtom(int ix,const t_atom &a); - - static const t_symbol *sym_echo; - static const t_symbol *sym_error; - - enum get_t { get_norm,get_cnt,get_print }; - - void set(int argc,const t_atom *argv,bool over); - void getdir(const t_symbol *tag); - int getrec(const t_symbol *tag,int level,int order,bool rev,get_t how /*= get_norm*/,const AtomList &rdir); - int getsub(const t_symbol *tag,int level,int order,bool rev,get_t how /*= get_norm*/,const AtomList &rdir); - - void paste(const t_symbol *tag,int argc,const t_atom *argv,bool repl); - void copy(const t_symbol *tag,int argc,const t_atom *argv,bool cut); - void copyall(const t_symbol *tag,bool cut,int lvls); - void copyrec(const t_symbol *tag,int argc,const t_atom *argv,bool cut); - - void load(int argc,const t_atom *argv,bool xml); - void save(int argc,const t_atom *argv,bool xml); - void lddir(int argc,const t_atom *argv,bool xml); // load values into current dir - void ldrec(int argc,const t_atom *argv,bool xml); // load values recursively - void svdir(int argc,const t_atom *argv,bool xml); // save values in current dir - void svrec(int argc,const t_atom *argv,bool xml); // save values recursively - - void echodir() { if(echo) getdir(sym_echo); } - - bool absdir,echo; - int vcnt,dcnt; - pooldata *pl; - Atoms curdir; - pooldir *clip; - - static const t_symbol *holdname; // used during initialization of new object (between constructor and Init method) - - typedef std::map PoolMap; - static PoolMap poolmap; - - void SetPool(const t_symbol *s); - void FreePool(); - - static pooldata *GetPool(const t_symbol *s); - static void RmvPool(pooldata *p); - - string MakeFilename(const char *fn) const; - - FLEXT_CALLVAR_V(mg_pool,ms_pool) - FLEXT_ATTRGET_V(curdir) - FLEXT_CALLSET_V(ms_curdir) - FLEXT_ATTRVAR_B(absdir) - FLEXT_ATTRVAR_B(echo) - FLEXT_CALLGET_B(mg_priv) - FLEXT_ATTRVAR_I(vcnt) - FLEXT_ATTRVAR_I(dcnt) - - FLEXT_CALLBACK(m_help) - - FLEXT_CALLBACK(m_reset) - - FLEXT_CALLBACK(m_getdir) - FLEXT_CALLBACK_V(m_mkdir) - FLEXT_CALLBACK_V(m_chdir) - FLEXT_CALLBACK_V(m_mkchdir) - FLEXT_CALLBACK_V(m_updir) - FLEXT_CALLBACK_V(m_rmdir) - FLEXT_CALLBACK_V(m_mksub) - FLEXT_CALLBACK_V(m_chsub) - FLEXT_CALLBACK_V(m_mkchsub) - FLEXT_CALLBACK_V(m_rmsub) - - FLEXT_CALLBACK_V(m_set) - FLEXT_CALLBACK_V(m_seti) - FLEXT_CALLBACK_V(m_add) - FLEXT_CALLBACK_V(m_clr) - FLEXT_CALLBACK_I(m_clri) - FLEXT_CALLBACK(m_clrall) - FLEXT_CALLBACK(m_clrrec) - FLEXT_CALLBACK(m_clrsub) - FLEXT_CALLBACK_V(m_get) - FLEXT_CALLBACK_I(m_geti) - FLEXT_CALLBACK(m_getall) - FLEXT_CALLBACK_V(m_getrec) - FLEXT_CALLBACK_V(m_getsub) - FLEXT_CALLBACK_V(m_ogetall) - FLEXT_CALLBACK_V(m_ogetrec) - FLEXT_CALLBACK_V(m_ogetsub) - FLEXT_CALLBACK(m_cntall) - FLEXT_CALLBACK_V(m_cntrec) - FLEXT_CALLBACK_V(m_cntsub) - FLEXT_CALLBACK(m_printall) - FLEXT_CALLBACK_V(m_printrec) - FLEXT_CALLBACK(m_printroot) - - FLEXT_CALLBACK_V(m_paste) - FLEXT_CALLBACK_V(m_pasteadd) - FLEXT_CALLBACK(m_clrclip) - FLEXT_CALLBACK_V(m_copy) - FLEXT_CALLBACK_V(m_cut) - FLEXT_CALLBACK(m_copyall) - FLEXT_CALLBACK(m_cutall) - FLEXT_CALLBACK_V(m_copyrec) - FLEXT_CALLBACK_V(m_cutrec) - - FLEXT_CALLBACK_V(m_load) - FLEXT_CALLBACK_V(m_save) - FLEXT_CALLBACK_V(m_lddir) - FLEXT_CALLBACK_V(m_ldrec) - FLEXT_CALLBACK_V(m_svdir) - FLEXT_CALLBACK_V(m_svrec) - FLEXT_CALLBACK_V(m_loadx) - FLEXT_CALLBACK_V(m_savex) - FLEXT_CALLBACK_V(m_ldxdir) - FLEXT_CALLBACK_V(m_ldxrec) - FLEXT_CALLBACK_V(m_svxdir) - FLEXT_CALLBACK_V(m_svxrec) -}; - -FLEXT_NEW_V("pool",pool); - - -pool::PoolMap pool::poolmap; -const t_symbol *pool::sym_echo,*pool::sym_error; -const t_symbol *pool::holdname; - - -void pool::setup(t_classid c) -{ - post(""); - pool::m_help(); - post(""); - - sym_echo = MakeSymbol("echo"); - sym_error = MakeSymbol("error"); - - FLEXT_CADDATTR_VAR(c,"pool",mg_pool,ms_pool); - FLEXT_CADDATTR_VAR(c,"curdir",curdir,ms_curdir); - FLEXT_CADDATTR_VAR1(c,"absdir",absdir); - FLEXT_CADDATTR_VAR1(c,"echodir",echo); - FLEXT_CADDATTR_GET(c,"private",mg_priv); - FLEXT_CADDATTR_VAR1(c,"valcnt",vcnt); - FLEXT_CADDATTR_VAR1(c,"dircnt",dcnt); - - FLEXT_CADDMETHOD_(c,0,"help",m_help); - FLEXT_CADDMETHOD_(c,0,"reset",m_reset); - FLEXT_CADDMETHOD_(c,0,"getdir",m_getdir); - FLEXT_CADDMETHOD_(c,0,"mkdir",m_mkdir); - FLEXT_CADDMETHOD_(c,0,"chdir",m_chdir); - FLEXT_CADDMETHOD_(c,0,"mkchdir",m_mkchdir); - FLEXT_CADDMETHOD_(c,0,"rmdir",m_rmdir); - FLEXT_CADDMETHOD_(c,0,"updir",m_updir); - FLEXT_CADDMETHOD_(c,0,"mksub",m_mksub); - FLEXT_CADDMETHOD_(c,0,"chsub",m_chsub); - FLEXT_CADDMETHOD_(c,0,"mkchsub",m_mkchsub); - FLEXT_CADDMETHOD_(c,0,"rmsub",m_rmsub); - - FLEXT_CADDMETHOD_(c,0,"set",m_set); - FLEXT_CADDMETHOD_(c,0,"seti",m_seti); - FLEXT_CADDMETHOD_(c,0,"add",m_add); - FLEXT_CADDMETHOD_(c,0,"clr",m_clr); - FLEXT_CADDMETHOD_(c,0,"clri",m_clri); - FLEXT_CADDMETHOD_(c,0,"clrall",m_clrall); - FLEXT_CADDMETHOD_(c,0,"clrrec",m_clrrec); - FLEXT_CADDMETHOD_(c,0,"clrsub",m_clrsub); - FLEXT_CADDMETHOD_(c,0,"get",m_get); - FLEXT_CADDMETHOD_(c,0,"geti",m_geti); - FLEXT_CADDMETHOD_(c,0,"getall",m_getall); - FLEXT_CADDMETHOD_(c,0,"getrec",m_getrec); - FLEXT_CADDMETHOD_(c,0,"getsub",m_getsub); - FLEXT_CADDMETHOD_(c,0,"ogetall",m_ogetall); - FLEXT_CADDMETHOD_(c,0,"ogetrec",m_ogetrec); - FLEXT_CADDMETHOD_(c,0,"ogetsub",m_ogetsub); - FLEXT_CADDMETHOD_(c,0,"cntall",m_cntall); - FLEXT_CADDMETHOD_(c,0,"cntrec",m_cntrec); - FLEXT_CADDMETHOD_(c,0,"cntsub",m_cntsub); - - FLEXT_CADDMETHOD_(c,0,"printall",m_printall); - FLEXT_CADDMETHOD_(c,0,"printrec",m_printrec); - FLEXT_CADDMETHOD_(c,0,"printroot",m_printroot); - - FLEXT_CADDMETHOD_(c,0,"paste",m_paste); - FLEXT_CADDMETHOD_(c,0,"pasteadd",m_pasteadd); - FLEXT_CADDMETHOD_(c,0,"clrclip",m_clrclip); - FLEXT_CADDMETHOD_(c,0,"cut",m_cut); - FLEXT_CADDMETHOD_(c,0,"copy",m_copy); - FLEXT_CADDMETHOD_(c,0,"cutall",m_cutall); - FLEXT_CADDMETHOD_(c,0,"copyall",m_copyall); - FLEXT_CADDMETHOD_(c,0,"cutrec",m_cutrec); - FLEXT_CADDMETHOD_(c,0,"copyrec",m_copyrec); - - FLEXT_CADDMETHOD_(c,0,"load",m_load); - FLEXT_CADDMETHOD_(c,0,"save",m_save); - FLEXT_CADDMETHOD_(c,0,"lddir",m_lddir); - FLEXT_CADDMETHOD_(c,0,"ldrec",m_ldrec); - FLEXT_CADDMETHOD_(c,0,"svdir",m_svdir); - FLEXT_CADDMETHOD_(c,0,"svrec",m_svrec); - FLEXT_CADDMETHOD_(c,0,"loadx",m_loadx); - FLEXT_CADDMETHOD_(c,0,"savex",m_savex); - FLEXT_CADDMETHOD_(c,0,"ldxdir",m_ldxdir); - FLEXT_CADDMETHOD_(c,0,"ldxrec",m_ldxrec); - FLEXT_CADDMETHOD_(c,0,"svxdir",m_svxdir); - FLEXT_CADDMETHOD_(c,0,"svxrec",m_svxrec); -} - -pool::pool(int argc,const t_atom *argv): - absdir(true),echo(false), - pl(NULL), - clip(NULL), - vcnt(VCNT),dcnt(DCNT) -{ - holdname = argc >= 1 && IsSymbol(argv[0])?GetSymbol(argv[0]):NULL; - - AddInAnything("Commands in"); - AddOutList(); - AddOutAnything(); - AddOutList(); - AddOutAnything(); -} - -pool::~pool() -{ - FreePool(); -} - -bool pool::Init() -{ - if(flext_base::Init()) { - SetPool(holdname); - return true; - } - else return false; -} - -void pool::SetPool(const t_symbol *s) -{ - if(s) { - if(pl) - // check if new symbol equals the current one - if(pl->sym == s) - return; - else - FreePool(); - pl = GetPool(s); - } - else { - if(pl) { - // if already private no need to allocate new storage - if(pl->Private()) - return; - else - FreePool(); - } - pl = new pooldata(NULL,vcnt,dcnt); - } -} - -void pool::FreePool() -{ - curdir(); // reset current directory - - if(pl) { - if(!pl->Private()) - RmvPool(pl); - else - delete pl; - pl = NULL; - } - - if(clip) { delete clip; clip = NULL; } -} - -void pool::ms_pool(const AtomList &l) -{ - const t_symbol *s = NULL; - if(l.Count()) { - if(l.Count() > 1) post("%s - pool: superfluous arguments ignored",thisName()); - s = GetASymbol(l[0]); - if(!s) post("%s - pool: invalid pool name, pool set to private",thisName()); - } - - SetPool(s); -} - -void pool::mg_pool(AtomList &l) -{ - if(!pl || pl->Private()) l(); - else { l(1); SetSymbol(l[0],pl->sym); } -} - -void pool::m_reset() -{ - curdir(); - pl->Reset(); -} - - -void pool::getdir(const t_symbol *tag) -{ - ToSysAnything(3,tag,0,NULL); - ToSysList(2,curdir); -} - -void pool::m_getdir() { getdir(thisTag()); } - -void pool::m_mkdir(int argc,const t_atom *argv,bool abs,bool chg) -{ -// const char *nm = chg?"mkchdir":"mkdir"; - if(!ValChk(argc,argv)) - post("%s - %s: invalid directory name",thisName(),GetString(thisTag())); - else { - Atoms ndir; - if(abs) ndir(argc,argv); - else (ndir = curdir).Append(argc,argv); - if(!pl->MkDir(ndir,vcnt,dcnt)) { - post("%s - %s: directory couldn't be created",thisName(),GetString(thisTag())); - } - else if(chg) - // change to newly created directory - curdir = ndir; - } - - echodir(); -} - -void pool::m_chdir(int argc,const t_atom *argv,bool abs) -{ - if(!ValChk(argc,argv)) - post("%s - %s: invalid directory name",thisName(),GetString(thisTag())); - else { - Atoms prv(curdir); - if(abs) curdir(argc,argv); - else curdir.Append(argc,argv); - if(!pl->ChkDir(curdir)) { - post("%s - %s: directory couldn't be changed",thisName(),GetString(thisTag())); - curdir = prv; - } - } - - echodir(); -} - -void pool::m_updir(int argc,const t_atom *argv) -{ - int lvls = 1; - if(argc > 0) { - if(CanbeInt(argv[0])) { - if(argc > 1) - post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag())); - lvls = GetAInt(argv[0]); - if(lvls < 0) - post("%s - %s: invalid level specification - set to 1",thisName(),GetString(thisTag())); - } - else - post("%s - %s: invalid level specification - set to 1",thisName(),GetString(thisTag())); - } - - Atoms prv(curdir); - - if(lvls > curdir.Count()) { - post("%s - %s: level exceeds directory depth - corrected",thisName(),GetString(thisTag())); - curdir(); - } - else - curdir.Part(0,curdir.Count()-lvls); - - if(!pl->ChkDir(curdir)) { - post("%s - %s: directory couldn't be changed",thisName(),GetString(thisTag())); - curdir = prv; - } - - echodir(); -} - -void pool::m_rmdir(int argc,const t_atom *argv,bool abs) -{ - if(abs) curdir(argc,argv); - else curdir.Append(argc,argv); - - if(!pl->RmDir(curdir)) - post("%s - %s: directory couldn't be removed",thisName(),GetString(thisTag())); - curdir(); - - echodir(); -} - -void pool::set(int argc,const t_atom *argv,bool over) -{ - if(!argc || !KeyChk(argv[0])) - post("%s - %s: invalid key",thisName(),GetString(thisTag())); - else if(!ValChk(argc-1,argv+1)) { - post("%s - %s: invalid data values",thisName(),GetString(thisTag())); - } - else - if(!pl->Set(curdir,argv[0],new AtomList(argc-1,argv+1),over)) - post("%s - %s: value couldn't be set",thisName(),GetString(thisTag())); - - echodir(); -} - -void pool::m_seti(int argc,const t_atom *argv) -{ - if(!argc || !CanbeInt(argv[0])) - post("%s - %s: invalid index",thisName(),GetString(thisTag())); - else if(!ValChk(argc-1,argv+1)) { - post("%s - %s: invalid data values",thisName(),GetString(thisTag())); - } - else - if(!pl->Seti(curdir,GetAInt(argv[0]),new Atoms(argc-1,argv+1))) - post("%s - %s: value couldn't be set",thisName(),GetString(thisTag())); - - echodir(); -} - -void pool::m_clr(int argc,const t_atom *argv) -{ - if(!argc || !KeyChk(argv[0])) - post("%s - %s: invalid key",thisName(),GetString(thisTag())); - else { - if(argc > 1) - post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag())); - - if(!pl->Clr(curdir,argv[0])) - post("%s - %s: value couldn't be cleared",thisName(),GetString(thisTag())); - } - - echodir(); -} - -void pool::m_clri(int ix) -{ - if(ix < 0) - post("%s - %s: invalid index",thisName(),GetString(thisTag())); - else { - if(!pl->Clri(curdir,ix)) - post("%s - %s: value couldn't be cleared",thisName(),GetString(thisTag())); - } - - echodir(); -} - -void pool::m_clrall() -{ - if(!pl->ClrAll(curdir,false)) - post("%s - %s: values couldn't be cleared",thisName(),GetString(thisTag())); - - echodir(); -} - -void pool::m_clrrec() -{ - if(!pl->ClrAll(curdir,true)) - post("%s - %s: values couldn't be cleared",thisName(),GetString(thisTag())); - - echodir(); -} - -void pool::m_clrsub() -{ - if(!pl->ClrAll(curdir,true,true)) - post("%s - %s: directories couldn't be cleared",thisName(),GetString(thisTag())); - - echodir(); -} - -void pool::m_get(int argc,const t_atom *argv) -{ - if(!argc || !KeyChk(argv[0])) - post("%s - %s: invalid key",thisName(),GetString(thisTag())); - else { - if(argc > 1) - post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag())); - - poolval *r = pl->Ref(curdir,argv[0]); - - ToSysAnything(3,thisTag(),0,NULL); - if(absdir) - ToSysList(2,curdir); - else - ToSysList(2,0,NULL); - if(r) { - ToOutAtom(1,r->key); - ToSysList(0,*r->data); - } - else { - ToSysBang(1); - ToSysBang(0); - } - } - - echodir(); -} - -void pool::m_geti(int ix) -{ - if(ix < 0) - post("%s - %s: invalid index",thisName(),GetString(thisTag())); - else { - poolval *r = pl->Refi(curdir,ix); - - ToSysAnything(3,thisTag(),0,NULL); - if(absdir) - ToSysList(2,curdir); - else - ToSysList(2,0,NULL); - if(r) { - ToOutAtom(1,r->key); - ToSysList(0,*r->data); - } - else { - ToSysBang(1); - ToSysBang(0); - } - } - - echodir(); -} - - -// ---- some sorting stuff ---------------------------------- - -inline bool smaller(const t_atom &a,const t_atom &b,int index) { return a < b; } -inline void swap(t_atom &a,t_atom &b) { t_atom c = a; a = b; b = c; } - -inline bool smaller(const t_atom *a,const t_atom *b,int index) { return *a < *b; } -inline void swap(t_atom *a,t_atom *b) { t_atom *c = a; a = b; b = c; } - -inline bool smaller(const Atoms &a,const Atoms &b,int index) -{ - if(a.Count()-1 < index) - return true; - else if(b.Count()-1 < index) - return false; - else - return a[index] < b[index]; -} - -inline void swap(Atoms &a,Atoms &b) { Atoms c(a); a = b; b = c; } - -inline bool smaller(const Atoms *a,const Atoms *b,int index) { return smaller(*a,*b,index); } -inline void swap(Atoms *a,Atoms *b) { Atoms *c = a; a = b; b = c; } - -template -void sift(T1 *a,T2 *b,int start,int count,int index,bool rev) -{ - int root = start; // Point to a root node - int child; - - while((child = root * 2 + 1) < count) { // While the root has child(ren) point to its left child - // If the child has a sibling and the child's value is less than its sibling's... - if(child < count-1 && smaller(a[child],a[child+1],index) != rev) - child++; // ... point to the right child instead - - if(smaller(a[root],a[child],index) == rev) break; - - // If the value in root is less than in child... - swap(a[root], a[child]); // ... swap the values in root and child and... - if(b) swap(b[root], b[child]); - - root = child; // ... make root point to its child - } -} - -template -void heapsort(T1 *a,T2 *b,int count,int index,bool rev) -{ - int start = count/2-1; - int end = count-1; - - for(; start >= 0; start--) - sift(a, b, start, count, index, rev); - - for(; end > 0; --end) { - swap(a[end], a[0]); - if(b) swap(b[end], b[0]); - sift(a, b, 0, end, index, rev); - } -} - -template -static void orderpairs(T1 *keys,T2 *atoms,int count,int index,bool rev) -{ - FLEXT_ASSERT(index >= 0); - - if(!count) return; - - if(index) - heapsort(atoms,keys,count,index-1,rev); - else - heapsort(keys,atoms,count,0,rev); -} - -// ---- sorting stuff ends ---------------------------------- - -int pool::getrec(const t_symbol *tag,int level,int order,bool rev,get_t how,const AtomList &rdir) -{ - Atoms gldir(curdir); - gldir.Append(rdir); - - int ret = 0; - - switch(how) { - case get_cnt: - ret = pl->CntAll(gldir); - break; - case get_print: - ret = pl->PrintAll(gldir); - break; - case get_norm: { - t_atom *k; - Atoms *r; - int cnt = pl->GetAll(gldir,k,r); - if(!k) { - FLEXT_ASSERT(!k); - post("%s - %s: error retrieving values",thisName(),GetString(tag)); - } - else { - FLEXT_ASSERT(r); - - if(order >= 0) - orderpairs(k,r,cnt,order,rev); - - for(int i = 0; i < cnt; ++i) { - ToSysAnything(3,tag,0,NULL); - ToSysList(2,absdir?gldir:rdir); - ToOutAtom(1,k[i]); - ToSysList(0,r[i]); - } - delete[] k; - delete[] r; - } - ret = cnt; - } - } - - if(level != 0) { - const t_atom **r; - int cnt = pl->GetSub(gldir,r); - if(!r) - post("%s - %s: error retrieving directories",thisName(),GetString(tag)); - else { - if(order >= 0) - orderpairs(r,(Atoms *)NULL,cnt,order,rev); - - int lv = level > 0?level-1:-1; - for(int i = 0; i < cnt; ++i) { - Atoms l(rdir); l.Append(*r[i]); - ret += getrec(tag,lv,order,rev,how,l); - } - delete[] r; - } - } - - return ret; -} - -void pool::m_getall() -{ - AtomList l; - getrec(thisTag(),0,-1,false,get_norm,l); - ToSysBang(3); - - echodir(); -} - -void pool::m_ogetall(int argc,const t_atom *argv) -{ - int index = 0; - if(argc) { - if(!CanbeInt(*argv) || (index = GetAInt(*argv)) < 0) { - index = 0; - post("%s - %s: invalid sort index specification - set to 0",thisName(),GetString(thisTag())); - } - --argc,++argv; - } - - bool rev = false; - if(argc) { - if(!CanbeBool(*argv)) - post("%s - %s: invalid sort direction specification - set to forward",thisName(),GetString(thisTag())); - else - rev = GetABool(*argv); - --argc,++argv; - } - - if(argc) - post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag())); - - AtomList l; - getrec(thisTag(),0,index,rev,get_norm,l); - ToSysBang(3); - - echodir(); -} - -void pool::m_getrec(int argc,const t_atom *argv) -{ - int lvls = -1; - if(argc) { - if(!CanbeInt(*argv) || (lvls = GetAInt(*argv)) < -1) { - lvls = -1; - post("%s - %s: invalid level specification - set to %i",thisName(),GetString(thisTag()),lvls); - } - --argc,++argv; - } - - if(argc) - post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag())); - - AtomList l; - getrec(thisTag(),lvls,-1,false,get_norm,l); - ToSysBang(3); - - echodir(); -} - - -void pool::m_ogetrec(int argc,const t_atom *argv) -{ - int lvls = -1; - if(argc) { - if(!CanbeInt(*argv) || (lvls = GetAInt(*argv)) < -1) { - lvls = -1; - post("%s - %s: invalid level specification - set to %i",thisName(),GetString(thisTag()),lvls); - } - --argc,++argv; - } - - int index = 0; - if(argc) { - if(!CanbeInt(*argv) || (index = GetAInt(*argv)) < 0) { - index = 0; - post("%s - %s: invalid sort index specification - set to 0",thisName(),GetString(thisTag())); - } - --argc,++argv; - } - - bool rev = false; - if(argc) { - if(!CanbeBool(*argv)) - post("%s - %s: invalid sort direction specification - set to forward",thisName(),GetString(thisTag())); - else - rev = GetABool(*argv); - --argc,++argv; - } - - if(argc) - post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag())); - - AtomList l; - getrec(thisTag(),lvls,index,rev,get_norm,l); - ToSysBang(3); - - echodir(); -} - - -int pool::getsub(const t_symbol *tag,int level,int order,bool rev,get_t how,const AtomList &rdir) -{ - Atoms gldir(curdir); - gldir.Append(rdir); - - int ret = 0; - - const t_atom **r = NULL; - // CntSub is not used here because it doesn't allow checking for valid directory - int cnt = pl->GetSub(gldir,r); - if(!r) - post("%s - %s: error retrieving directories",thisName(),GetString(tag)); - else { - if(order >= 0) - orderpairs(r,(Atoms *)NULL,cnt,order,rev); - - int lv = level > 0?level-1:-1; - for(int i = 0; i < cnt; ++i) { - Atoms ndir(absdir?gldir:rdir); - ndir.Append(*r[i]); - ++ret; - - if(how == get_norm) { - ToSysAnything(3,tag,0,NULL); - ToSysList(2,curdir); - ToSysList(1,ndir); - ToSysBang(0); - } - - if(level != 0) { - AtomList l(rdir); l.Append(*r[i]); - ret += getsub(tag,lv,order,rev,how,l); - } - } - delete[] r; - } - - return ret; -} - -void pool::m_getsub(int argc,const t_atom *argv) -{ - int lvls = 0; - if(argc) { - if(!CanbeInt(*argv) || (lvls = GetAInt(*argv)) < -1) { - lvls = 0; - post("%s - %s: invalid level specification - set to %i",thisName(),GetString(thisTag()),lvls); - } - --argc,++argv; - } - - if(argc) - post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag())); - - AtomList l; - getsub(thisTag(),lvls,-1,false,get_norm,l); - ToSysBang(3); - - echodir(); -} - - -void pool::m_ogetsub(int argc,const t_atom *argv) -{ - int lvls = 0; - if(argc) { - if(!CanbeInt(*argv) || (lvls = GetAInt(*argv)) < -1) { - lvls = 0; - post("%s - %s: invalid level specification - set to %i",thisName(),GetString(thisTag()),lvls); - } - --argc,++argv; - } - - int index = 0; - if(argc) { - if(!CanbeInt(*argv) || (index = GetAInt(*argv)) < 0) { - index = 0; - post("%s - %s: invalid sort index specification - set to 0",thisName(),GetString(thisTag())); - } - --argc,++argv; - } - - bool rev = false; - if(argc) { - if(!CanbeBool(*argv)) - post("%s - %s: invalid sort direction specification - set to forward",thisName(),GetString(thisTag())); - else - rev = GetABool(*argv); - --argc,++argv; - } - - if(argc) - post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag())); - - AtomList l; - getsub(thisTag(),lvls,index,rev,get_norm,l); - ToSysBang(3); - - echodir(); -} - - -void pool::m_cntall() -{ - AtomList l; - int cnt = getrec(thisTag(),0,-1,false,get_cnt,l); - ToSysSymbol(3,thisTag()); - ToSysBang(2); - ToSysBang(1); - ToSysInt(0,cnt); - - echodir(); -} - -void pool::m_cntrec(int argc,const t_atom *argv) -{ - int lvls = -1; - if(argc) { - if(!CanbeInt(*argv) || (lvls = GetAInt(*argv)) < -1) { - lvls = -1; - post("%s - %s: invalid level specification - set to %i",thisName(),GetString(thisTag()),lvls); - } - --argc,++argv; - } - - if(argc) - post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag())); - - AtomList l; - int cnt = getrec(thisTag(),lvls,-1,false,get_cnt,l); - ToSysSymbol(3,thisTag()); - ToSysBang(2); - ToSysBang(1); - ToSysInt(0,cnt); - - echodir(); -} - - -void pool::m_cntsub(int argc,const t_atom *argv) -{ - int lvls = 0; - if(argc) { - if(!CanbeInt(*argv) || (lvls = GetAInt(*argv)) < -1) { - lvls = 0; - post("%s - %s: invalid level specification - set to %i",thisName(),GetString(thisTag()),lvls); - } - --argc,++argv; - } - - if(argc) - post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag())); - - AtomList l; - int cnt = getsub(thisTag(),lvls,-1,false,get_cnt,l); - ToSysSymbol(3,thisTag()); - ToSysBang(2); - ToSysBang(1); - ToSysInt(0,cnt); - - echodir(); -} - -void pool::m_printall() -{ - AtomList l; - int cnt = getrec(thisTag(),0,-1,false,get_print,l); - post(""); -} - -void pool::m_printrec(int argc,const t_atom *argv,bool fromroot) -{ - const t_symbol *tag = thisTag(); - int lvls = -1; - - if(argc) { - if(!CanbeInt(*argv) || (lvls = GetAInt(*argv)) < -1) { - lvls = 0; - post("%s - %s: invalid level specification - set to %i",thisName(),GetString(tag),lvls); - } - --argc,++argv; - } - - if(argc) - post("%s - %s: superfluous arguments ignored",thisName(),GetString(tag)); - - Atoms svdir(curdir); - if(fromroot) curdir.Clear(); - - AtomList l; - int cnt = getrec(tag,lvls,-1,false,get_print,l); - post(""); - - curdir = svdir; -} - - -void pool::paste(const t_symbol *tag,int argc,const t_atom *argv,bool repl) -{ - if(clip) { - bool mkdir = true; - int depth = -1; - - if(argc >= 1) { - if(CanbeInt(argv[0])) depth = GetAInt(argv[1]); - else - post("%s - %s: invalid depth argument - set to -1",thisName(),GetString(tag)); - - if(argc >= 2) { - if(CanbeBool(argv[1])) mkdir = GetABool(argv[1]); - else - post("%s - %s: invalid mkdir argument - set to true",thisName(),GetString(tag)); - - if(argc > 2) post("%s - %s: superfluous arguments ignored",thisName(),GetString(tag)); - } - } - - pl->Paste(curdir,clip,depth,repl,mkdir); - } - else - post("%s - %s: clipboard is empty",thisName(),GetString(tag)); - - echodir(); -} - - -void pool::m_clrclip() -{ - if(clip) { delete clip; clip = NULL; } -} - - -void pool::copy(const t_symbol *tag,int argc,const t_atom *argv,bool cut) -{ - if(!argc || !KeyChk(argv[0])) - post("%s - %s: invalid key",thisName(),GetString(tag)); - else { - if(argc > 1) - post("%s - %s: superfluous arguments ignored",thisName(),GetString(tag)); - - m_clrclip(); - clip = pl->Copy(curdir,argv[0],cut); - - if(!clip) - post("%s - %s: Copying into clipboard failed",thisName(),GetString(tag)); - } - - echodir(); -} - - -void pool::copyall(const t_symbol *tag,bool cut,int depth) -{ - m_clrclip(); - clip = pl->CopyAll(curdir,depth,cut); - - if(!clip) - post("%s - %s: Copying into clipboard failed",thisName(),GetString(tag)); - - echodir(); -} - - -void pool::copyrec(const t_symbol *tag,int argc,const t_atom *argv,bool cut) -{ - int lvls = -1; - if(argc > 0) { - if(CanbeInt(argv[0])) { - if(argc > 1) - post("%s - %s: superfluous arguments ignored",thisName(),GetString(tag)); - lvls = GetAInt(argv[0]); - } - else - post("%s - %s: invalid level specification - set to infinite",thisName(),GetString(tag)); - } - - copyall(tag,cut,lvls); -} - -void pool::load(int argc,const t_atom *argv,bool xml) -{ - const char *flnm = NULL; - if(argc > 0) { - if(argc > 1) post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag())); - if(IsString(argv[0])) flnm = GetString(argv[0]); - } - - bool ok = false; - if(!flnm) - post("%s - %s: no filename given",thisName(),GetString(thisTag())); - else { - string file(MakeFilename(flnm)); - ok = xml?pl->LoadXML(file.c_str()):pl->Load(file.c_str()); - if(!ok) - post("%s - %s: error loading data",thisName(),GetString(thisTag())); - } - - t_atom at; SetBool(at,ok); - ToOutAnything(GetOutAttr(),thisTag(),1,&at); - - echodir(); -} - -void pool::save(int argc,const t_atom *argv,bool xml) -{ - const char *flnm = NULL; - if(argc > 0) { - if(argc > 1) post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag())); - if(IsString(argv[0])) flnm = GetString(argv[0]); - } - - bool ok = false; - if(!flnm) - post("%s - %s: no filename given",thisName(),GetString(thisTag())); - else { - string file(MakeFilename(flnm)); - ok = xml?pl->SaveXML(file.c_str()):pl->Save(file.c_str()); - if(!ok) - post("%s - %s: error saving data",thisName(),GetString(thisTag())); - } - - t_atom at; SetBool(at,ok); - ToOutAnything(GetOutAttr(),thisTag(),1,&at); - - echodir(); -} - -void pool::lddir(int argc,const t_atom *argv,bool xml) -{ - const char *flnm = NULL; - if(argc > 0) { - if(argc > 1) post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag())); - if(IsString(argv[0])) flnm = GetString(argv[0]); - } - - bool ok = false; - if(!flnm) - post("%s - %s: invalid filename",thisName(),GetString(thisTag())); - else { - string file(MakeFilename(flnm)); - ok = xml?pl->LdDirXML(curdir,file.c_str(),0):pl->LdDir(curdir,file.c_str(),0); - if(!ok) - post("%s - %s: directory couldn't be loaded",thisName(),GetString(thisTag())); - } - - t_atom at; SetBool(at,ok); - ToOutAnything(GetOutAttr(),thisTag(),1,&at); - - echodir(); -} - -void pool::ldrec(int argc,const t_atom *argv,bool xml) -{ - const char *flnm = NULL; - int depth = -1; - bool mkdir = true; - if(argc >= 1) { - if(IsString(argv[0])) flnm = GetString(argv[0]); - - if(argc >= 2) { - if(CanbeInt(argv[1])) depth = GetAInt(argv[1]); - else - post("%s - %s: invalid depth argument - set to -1",thisName(),GetString(thisTag())); - - if(argc >= 3) { - if(CanbeBool(argv[2])) mkdir = GetABool(argv[2]); - else - post("%s - %s: invalid mkdir argument - set to true",thisName(),GetString(thisTag())); - - if(argc > 3) post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag())); - } - } - } - - bool ok = false; - if(!flnm) - post("%s - %s: invalid filename",thisName(),GetString(thisTag())); - else { - string file(MakeFilename(flnm)); - ok = xml?pl->LdDirXML(curdir,file.c_str(),depth,mkdir):pl->LdDir(curdir,file.c_str(),depth,mkdir); - if(!ok) - post("%s - %s: directory couldn't be saved",thisName(),GetString(thisTag())); - } - - t_atom at; SetBool(at,ok); - ToOutAnything(GetOutAttr(),thisTag(),1,&at); - - echodir(); -} - -void pool::svdir(int argc,const t_atom *argv,bool xml) -{ - const char *flnm = NULL; - if(argc > 0) { - if(argc > 1) post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag())); - if(IsString(argv[0])) flnm = GetString(argv[0]); - } - - bool ok = false; - if(!flnm) - post("%s - %s: invalid filename",thisName(),GetString(thisTag())); - else { - string file(MakeFilename(flnm)); - ok = xml?pl->SvDirXML(curdir,file.c_str(),0,absdir):pl->SvDir(curdir,file.c_str(),0,absdir); - if(!ok) - post("%s - %s: directory couldn't be saved",thisName(),GetString(thisTag())); - } - - t_atom at; SetBool(at,ok); - ToOutAnything(GetOutAttr(),thisTag(),1,&at); - - echodir(); -} - -void pool::svrec(int argc,const t_atom *argv,bool xml) -{ - const char *flnm = NULL; - if(argc > 0) { - if(argc > 1) post("%s - %s: superfluous arguments ignored",thisName(),GetString(thisTag())); - if(IsString(argv[0])) flnm = GetString(argv[0]); - } - - bool ok = false; - if(!flnm) - post("%s - %s: invalid filename",thisName(),GetString(thisTag())); - else { - string file(MakeFilename(flnm)); - ok = xml?pl->SvDirXML(curdir,file.c_str(),-1,absdir):pl->SvDir(curdir,file.c_str(),-1,absdir); - if(!ok) - post("%s - %s: directory couldn't be saved",thisName(),GetString(thisTag())); - } - - t_atom at; SetBool(at,ok); - ToOutAnything(GetOutAttr(),thisTag(),1,&at); - - echodir(); -} - - - -bool pool::KeyChk(const t_atom &a) -{ - return IsSymbol(a) || IsFloat(a) || IsInt(a); -} - -bool pool::ValChk(int argc,const t_atom *argv) -{ - for(int i = 0; i < argc; ++i) { - const t_atom &a = argv[i]; - if(!IsSymbol(a) && !IsFloat(a) && !IsInt(a)) return false; - } - return true; -} - -void pool::ToOutAtom(int ix,const t_atom &a) -{ - if(IsSymbol(a)) - ToSysSymbol(ix,GetSymbol(a)); - else if(IsFloat(a)) - ToSysFloat(ix,GetFloat(a)); - else if(IsInt(a)) - ToSysInt(ix,GetInt(a)); - else - post("%s - %s type not supported!",thisName(),GetString(thisTag())); -} - - - -pooldata *pool::GetPool(const t_symbol *s) -{ - PoolMap::iterator it = poolmap.find(s); - pooldata *p; - if(it != poolmap.end()) - p = it->second; - else - poolmap[s] = p = new pooldata(s); - p->Push(); - return p; -} - -void pool::RmvPool(pooldata *p) -{ - FLEXT_ASSERT(p->sym); - PoolMap::iterator it = poolmap.find(p->sym); - FLEXT_ASSERT(it != poolmap.end()); - FLEXT_ASSERT(p == it->second); - if(!p->Pop()) { - poolmap.erase(it); - delete p; - } -} - -string pool::MakeFilename(const char *fn) const -{ -#if FLEXT_SYS == FLEXT_SYS_PD - // / and \ must not be mixed! - // (char *) type casts for BorlandC++ - char *sl = strchr((char *)fn,'/'); - if(!sl) sl = strchr((char *)fn,'\\'); - if(!sl || (sl != fn -#if FLEXT_OS == FLEXT_OS_WIN - && sl[-1] != ':' // look for drive specification with ":/" or ":\\" -#endif - )) { - // prepend absolute canvas path if filename has no absolute path - const char *p = GetString(canvas_getdir(thisCanvas())); - return string(p)+'/'+fn; - } - else - return fn; -#else -#pragma message("Relative file paths not implemented") - return fn; -#endif -} diff --git a/externals/grill/pool/source/pool.cpp b/externals/grill/pool/source/pool.cpp deleted file mode 100644 index 23e8517f..00000000 --- a/externals/grill/pool/source/pool.cpp +++ /dev/null @@ -1,1216 +0,0 @@ -/* -pool - hierarchical storage object for PD and Max/MSP - -Copyright (c) 2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 16:14:29 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#include "pool.h" -#include -#include -#include -#include -#include - -#if FLEXT_OS == FLEXT_OS_WIN -#include // for charset conversion functions -#elif FLEXT_OS == FLEXT_OS_MAC -#include -#else -static bool WCStoUTF8(char *sdst,const wchar_t *src,int dstlen) -{ - unsigned char *dst = (unsigned char *)sdst; - unsigned char *max = dst+dstlen; - for(;;) { - wchar_t ud = *(src++); - if(ud < 128) { - if(dst+1 >= max) return false; - *(dst++) = (unsigned char)ud; - } - else if(ud < 2048) { - if(dst+2 >= max) return false; - *(dst++) = 192+(unsigned char)(ud/64); - *(dst++) = 128+(unsigned char)(ud%64); - } - else if(ud < 65535) { - if(dst+3 >= max) return false; - *(dst++) = 224+(unsigned char)(ud/4096); - *(dst++) = 128+(unsigned char)((ud/64)%64); - *(dst++) = 128+(unsigned char)(ud%64); - } - else if(ud < 2097151) { - if(dst+4 >= max) return false; - *(dst++) = 240+(unsigned char)(ud/262144); - *(dst++) = 128+(unsigned char)((ud/4096)%64); - *(dst++) = 128+(unsigned char)((ud/64)%64); - *(dst++) = 128+(unsigned char)(ud%64); - } - else if(ud < 67108863) { - if(dst+5 >= max) return false; - *(dst++) = 248+(unsigned char)(ud/16777216); - *(dst++) = 128+(unsigned char)((ud/262144)%64); - *(dst++) = 128+(unsigned char)((ud/4096)%64); - *(dst++) = 128+(unsigned char)((ud/64)%64); - *(dst++) = 128+(unsigned char)(ud%64); - } - else { - if(dst+6 >= max) return false; - *(dst++) = 252+(unsigned char)(ud/1073741824); - *(dst++) = 128+(unsigned char)((ud/16777216)%64); - *(dst++) = 128+(unsigned char)((ud/262144)%64); - *(dst++) = 128+(unsigned char)((ud/4096)%64); - *(dst++) = 128+(unsigned char)((ud/64)%64); - *(dst++) = 128+(unsigned char)(ud%64); - } - if(!ud) break; - } - return true; -} - -static bool UTF8toWCS(wchar_t *dst,const char *ssrc,int dstlen) -{ - const unsigned char *src = (const unsigned char *)ssrc; - wchar_t *max = dst+dstlen; - for(;;) { - if(*src < 128) { - *dst = *(src++); - if(!*dst) break; - } - else if(*src < 224) { - *dst = wchar_t(src[0]-192)*64+wchar_t(src[1]-128); - src += 2; - } - else if(*src < 240) { - *dst = wchar_t(src[0]-224)*4096+wchar_t(src[1]-128)*64+wchar_t(src[2]-128); - src += 3; - } - else if(*src < 248) { - *dst = wchar_t(src[0]-240)*262144+wchar_t(src[1]-128)*4096+wchar_t(src[2]-128)*64+wchar_t(src[3]-128); - src += 4; - } - else if(*src < 252) { - *dst = wchar_t(src[0]-248)*16777216+wchar_t(src[1]-128)*262144+wchar_t(src[2]-128)*4096+wchar_t(src[3]-128)*64+wchar_t(src[4]-128); - src += 5; - } - else if(*src < 254) { - *dst = wchar_t(src[0]-252)*1073741824+wchar_t(src[1]-128)*16777216+wchar_t(src[2]-128)*262144+wchar_t(src[3]-128)*4096+wchar_t(src[4]-128)*64+wchar_t(src[5]-128); - src += 6; - } - else - // invalid string - return false; - - if(++dst >= max) return false; - } - return true; -} - -#endif - -using namespace std; - - - -inline int compare(int a,int b) { return a == b?0:(a < b?-1:1); } -inline int compare(float a,float b) { return a == b?0:(a < b?-1:1); } - -static int compare(const t_symbol *a,const t_symbol *b) -{ - if(a == b) - return 0; - else - return strcmp(flext::GetString(a),flext::GetString(b)); -} - -static int compare(const t_atom &a,const t_atom &b) -{ - if(flext::GetType(a) == flext::GetType(b)) { - switch(flext::GetType(a)) { - case A_FLOAT: - return compare(flext::GetFloat(a),flext::GetFloat(b)); -#if FLEXT_SYS == FLEXT_SYS_MAX - case A_LONG: - return compare(flext::GetInt(a),flext::GetInt(b)); -#endif - case A_SYMBOL: - return compare(flext::GetSymbol(a),flext::GetSymbol(b)); -#if FLEXT_SYS == FLEXT_SYS_PD - case A_POINTER: - return flext::GetPointer(a) == flext::GetPointer(b)?0:(flext::GetPointer(a) < flext::GetPointer(b)?-1:1); -#endif - default: - FLEXT_LOG("pool - atom comparison: type not handled"); - return -1; - } - } - else - return flext::GetType(a) < flext::GetType(b)?-1:1; -} - - -poolval::poolval(const t_atom &k,AtomList *d): - data(d),nxt(NULL) -{ - SetAtom(key,k); -} - -poolval::~poolval() -{ - if(data) delete data; - - FLEXT_ASSERT(nxt == NULL); -} - -poolval &poolval::Set(AtomList *d) -{ - if(data) delete data; - data = d; - return *this; -} - -poolval *poolval::Dup() const -{ - return new poolval(key,data?new Atoms(*data):NULL); -} - - -pooldir::pooldir(const t_atom &d,pooldir *p,int vcnt,int dcnt): - parent(p),nxt(NULL),vals(NULL),dirs(NULL), - vbits(Int2Bits(vcnt)),dbits(Int2Bits(dcnt)), - vsize(1<nxt; - d->nxt = NULL; - delete d; - } while((d = d1) != NULL); - dirs[i].d = NULL; - dirs[i].cnt = 0; - } - } - } - if(!dironly && vals) { - for(int i = 0; i < vsize; ++i) { - poolval *v = vals[i].v,*v1; - if(v) { - do { - v1 = v->nxt; - v->nxt = NULL; - delete v; - } while((v = v1) != NULL); - vals[i].v = NULL; - vals[i].cnt = 0; - } - } - } -} - -void pooldir::Reset(bool realloc) -{ - Clear(true,false); - - if(dirs) delete[] dirs; - if(vals) delete[] vals; - - if(realloc) { - dirs = new direntry[dsize]; - ZeroMem(dirs,dsize*sizeof *dirs); - vals = new valentry[vsize]; - ZeroMem(vals,vsize*sizeof *vals); - } - else - dirs = NULL,vals = NULL; -} - -pooldir *pooldir::AddDir(int argc,const t_atom *argv,int vcnt,int dcnt) -{ - if(!argc) return this; - - int c = 1,dix = DIdx(argv[0]); - pooldir *prv = NULL,*ix = dirs[dix].d; - for(; ix; prv = ix,ix = ix->nxt) { - c = compare(argv[0],ix->dir); - if(c <= 0) break; - } - - if(c || !ix) { - pooldir *nd = new pooldir(argv[0],this,vcnt,dcnt); - nd->nxt = ix; - - if(prv) prv->nxt = nd; - else dirs[dix].d = nd; - dirs[dix].cnt++; - ix = nd; - } - - return ix->AddDir(argc-1,argv+1); -} - -pooldir *pooldir::GetDir(int argc,const t_atom *argv,bool rmv) -{ - if(!argc) return this; - - int c = 1,dix = DIdx(argv[0]); - pooldir *prv = NULL,*ix = dirs[dix].d; - for(; ix; prv = ix,ix = ix->nxt) { - c = compare(argv[0],ix->dir); - if(c <= 0) break; - } - - if(c || !ix) - return NULL; - else { - if(argc > 1) - return ix->GetDir(argc-1,argv+1,rmv); - else if(rmv) { - pooldir *nd = ix->nxt; - if(prv) prv->nxt = nd; - else dirs[dix].d = nd; - dirs[dix].cnt--; - ix->nxt = NULL; - return ix; - } - else - return ix; - } -} - -bool pooldir::DelDir(int argc,const t_atom *argv) -{ - pooldir *pd = GetDir(argc,argv,true); - if(pd && pd != this) { - delete pd; - return true; - } - else - return false; -} - -void pooldir::SetVal(const t_atom &key,AtomList *data,bool over) -{ - int c = 1,vix = VIdx(key); - poolval *prv = NULL,*ix = vals[vix].v; - for(; ix; prv = ix,ix = ix->nxt) { - c = compare(key,ix->key); - if(c <= 0) break; - } - - if(c || !ix) { - // no existing data found - - if(data) { - poolval *nv = new poolval(key,data); - nv->nxt = ix; - - if(prv) prv->nxt = nv; - else vals[vix].v = nv; - vals[vix].cnt++; - } - } - else if(over) { - // data exists... only set if overwriting enabled - - if(data) - ix->Set(data); - else { - // delete key - - poolval *nv = ix->nxt; - if(prv) prv->nxt = nv; - else vals[vix].v = nv; - vals[vix].cnt--; - ix->nxt = NULL; - delete ix; - } - } -} - -bool pooldir::SetVali(int rix,AtomList *data) -{ - poolval *prv = NULL,*ix = NULL; - int vix; - for(vix = 0; vix < vsize; ++vix) - if(rix > vals[vix].cnt) rix -= vals[vix].cnt; - else { - ix = vals[vix].v; - for(; ix && rix; prv = ix,ix = ix->nxt) --rix; - if(ix && !rix) break; - } - - if(ix) { - // data exists... overwrite it - - if(data) - ix->Set(data); - else { - // delete key - - poolval *nv = ix->nxt; - if(prv) prv->nxt = nv; - else vals[vix].v = nv; - vals[vix].cnt--; - ix->nxt = NULL; - delete ix; - } - return true; - } - else - return false; -} - -poolval *pooldir::RefVal(const t_atom &key) -{ - int c = 1,vix = VIdx(key); - poolval *ix = vals[vix].v; - for(; ix; ix = ix->nxt) { - c = compare(key,ix->key); - if(c <= 0) break; - } - - return c || !ix?NULL:ix; -} - -poolval *pooldir::RefVali(int rix) -{ - for(int vix = 0; vix < vsize; ++vix) - if(rix > vals[vix].cnt) rix -= vals[vix].cnt; - else { - poolval *ix = vals[vix].v; - for(; ix && rix; ix = ix->nxt) --rix; - if(ix && !rix) return ix; - } - return NULL; -} - -flext::AtomList *pooldir::PeekVal(const t_atom &key) -{ - poolval *ix = RefVal(key); - return ix?ix->data:NULL; -} - -flext::AtomList *pooldir::GetVal(const t_atom &key,bool cut) -{ - int c = 1,vix = VIdx(key); - poolval *prv = NULL,*ix = vals[vix].v; - for(; ix; prv = ix,ix = ix->nxt) { - c = compare(key,ix->key); - if(c <= 0) break; - } - - if(c || !ix) - return NULL; - else { - AtomList *ret; - if(cut) { - poolval *nv = ix->nxt; - if(prv) prv->nxt = nv; - else vals[vix].v = nv; - vals[vix].cnt--; - ix->nxt = NULL; - ret = ix->data; ix->data = NULL; - delete ix; - } - else - ret = new Atoms(*ix->data); - return ret; - } -} - -int pooldir::CntAll() const -{ - int cnt = 0; - for(int vix = 0; vix < vsize; ++vix) cnt += vals[vix].cnt; - return cnt; -} - -int pooldir::PrintAll(char *buf,int len) const -{ - int offs = strlen(buf); - - int cnt = 0; - for(int vix = 0; vix < vsize; ++vix) { - poolval *ix = vals[vix].v; - for(int i = 0; ix; ++i,ix = ix->nxt) { - PrintAtom(ix->key,buf+offs,len-offs); - strcat(buf+offs," , "); - int l = strlen(buf+offs)+offs; - ix->data->Print(buf+l,len-l); - post(buf); - } - cnt += vals[vix].cnt; - } - - buf[offs] = 0; - - return cnt; -} - -int pooldir::GetKeys(AtomList &keys) -{ - int cnt = CntAll(); - keys(cnt); - - for(int vix = 0; vix < vsize; ++vix) { - poolval *ix = vals[vix].v; - for(int i = 0; ix; ++i,ix = ix->nxt) - SetAtom(keys[i],ix->key); - } - return cnt; -} - -int pooldir::GetAll(t_atom *&keys,Atoms *&lst,bool cut) -{ - int cnt = CntAll(); - keys = new t_atom[cnt]; - lst = new Atoms[cnt]; - - for(int i = 0,vix = 0; vix < vsize; ++vix) { - poolval *ix = vals[vix].v; - for(; ix; ++i) { - SetAtom(keys[i],ix->key); - lst[i] = *ix->data; - - if(cut) { - poolval *t = ix; - vals[vix].v = ix = ix->nxt; - vals[vix].cnt--; - t->nxt = NULL; delete t; - } - else - ix = ix->nxt; - } - } - return cnt; -} - - -int pooldir::CntSub() const -{ - int cnt = 0; - for(int dix = 0; dix < dsize; ++dix) cnt += dirs[dix].cnt; - return cnt; -} - - -int pooldir::GetSub(const t_atom **&lst) -{ - const int cnt = CntSub(); - lst = new const t_atom *[cnt]; - for(int i = 0,dix = 0; i < cnt; ++dix) { - pooldir *ix = dirs[dix].d; - for(; ix; ix = ix->nxt) lst[i++] = &ix->dir; - } - return cnt; -} - - -bool pooldir::Paste(const pooldir *p,int depth,bool repl,bool mkdir) -{ - bool ok = true; - - for(int vi = 0; vi < p->vsize; ++vi) { - for(poolval *ix = p->vals[vi].v; ix; ix = ix->nxt) { - SetVal(ix->key,new Atoms(*ix->data),repl); - } - } - - if(ok && depth) { - for(int di = 0; di < p->dsize; ++di) { - for(pooldir *dix = p->dirs[di].d; ok && dix; dix = dix->nxt) { - pooldir *ndir = mkdir?AddDir(1,&dix->dir):GetDir(1,&dix->dir); - if(ndir) { - ok = ndir->Paste(dix,depth > 0?depth-1:depth,repl,mkdir); - } - } - } - } - - return ok; -} - -bool pooldir::Copy(pooldir *p,int depth,bool cut) -{ - bool ok = true; - - if(cut) { - for(int vi = 0; vi < vsize; ++vi) { - for(poolval *ix = vals[vi].v; ix; ix = ix->nxt) - p->SetVal(ix->key,ix->data); - vals[vi].cnt = 0; - vals[vi].v = NULL; - } - } - else { - for(int vi = 0; vi < vsize; ++vi) { - for(poolval *ix = vals[vi].v; ix; ix = ix->nxt) { - p->SetVal(ix->key,new Atoms(*ix->data)); - } - } - } - - if(ok && depth) { - for(int di = 0; di < dsize; ++di) { - for(pooldir *dix = dirs[di].d; ok && dix; dix = dix->nxt) { - pooldir *ndir = p->AddDir(1,&dix->dir); - if(ndir) - ok = dix->Copy(ndir,depth > 0?depth-1:depth,cut); - else - ok = false; - } - } - } - - return ok; -} - -static bool _isspace(char c) { return c > 0 && isspace(c); } - -static const char *ReadAtom(const char *c,t_atom &a,bool utf8) -{ - // skip leading whitespace (NON-ASCII character are < 0) - while(*c && _isspace(*c)) ++c; - if(!*c) return NULL; - - char tmp[1024]; - char *m = tmp; // write position - - bool issymbol; - if(*c == '"') { - issymbol = true; - ++c; - } - else - issymbol = false; - - // go to next whitespace - for(bool escaped = false;; ++c) - if(*c == '\\') { - if(escaped) { - *m++ = *c; - escaped = false; - } - else - escaped = true; - } - else if(*c == '"' && issymbol && !escaped) { - // end of string - ++c; - FLEXT_ASSERT(!*c || _isspace(*c)); - *m = 0; - break; - } - else if(!*c || (_isspace(*c) && !escaped)) { - *m = 0; - break; - } - else { - *m++ = *c; - escaped = false; - } - - // save character and set delimiter - - float fres; - // first try float -#if 0 - if(!issymbol && sscanf(tmp,"%f",&fres) == 1) { -#else - char *endp; - // see if it's a float - thanks to Frank Barknecht - fres = (float)strtod(tmp,&endp); - if(!issymbol && !*endp && endp != tmp) { -#endif - int ires = (int)fres; // try a cast - if(fres == ires) - flext::SetInt(a,ires); - else - flext::SetFloat(a,fres); - } - // no, it's a symbol - else { - const char *c; - if(utf8) { -#if FLEXT_OS == FLEXT_OS_WIN - wchar_t wtmp[1024]; - int err = MultiByteToWideChar(CP_UTF8,0,tmp,strlen(tmp),wtmp,1024); - if(!err) return NULL; - err = WideCharToMultiByte(CP_ACP,0,wtmp,err,tmp,1024,NULL,FALSE); - if(!err) return NULL; - tmp[err] = 0; - c = tmp; -#elif FLEXT_OS == FLEXT_OS_MAC - char ctmp[1024]; - - // is the output always MacRoman? - TextEncoding inconv = CreateTextEncoding(kTextEncodingUnicodeDefault,kTextEncodingDefaultVariant,kUnicodeUTF8Format); - TextEncoding outconv = CreateTextEncoding(kTextEncodingMacRoman,kTextEncodingDefaultVariant,kTextEncodingDefaultFormat); - - TECObjectRef converter; - OSStatus status = TECCreateConverter(&converter,inconv,outconv); - if(status) return NULL; - - ByteCount inlen,outlen; - status = TECConvertText( - converter, - (ConstTextPtr)tmp,strlen(tmp),&inlen, - (TextPtr)ctmp,sizeof(ctmp),&outlen - ); - ctmp[outlen] = 0; - - TECDisposeConverter(converter); - c = ctmp; - if(status) return NULL; -#else - wchar_t wtmp[1024]; - size_t len = mbstowcs(wtmp,tmp,1024); - if(len < 0) return false; - if(!WCStoUTF8(tmp,wtmp,sizeof(tmp))) return NULL; - c = tmp; -#endif - } - else - c = tmp; - flext::SetString(a,c); - } - - return c; -} - -static bool ParseAtoms(const char *tmp,flext::AtomList &l,bool utf8) -{ - FLEXT_ASSERT(tmp); - vector atoms; - while(*tmp) { - t_atom at; - tmp = ReadAtom(tmp,at,utf8); - if(!tmp) break; - atoms.push_back(at); - } - l(atoms.size(),&atoms[0]); - return true; -} - -static bool ParseAtoms(string &s,flext::AtomList &l,bool utf8) -{ - return ParseAtoms((char *)s.c_str(),l,utf8); -} - -static bool ReadAtoms(istream &is,flext::AtomList &l,char del,bool utf8) -{ - vector tmp; - for(;;) { - char c = is.get(); - if(is.eof() || c == del) break; - tmp.push_back(c); - } - tmp.push_back(0); // end-of-string marker - - return is.good() && ParseAtoms(&tmp[0],l,utf8); -} - -static bool WriteAtom(ostream &os,const t_atom &a,bool utf8) -{ - if(flext::IsFloat(a)) - os << flext::GetFloat(a); - else if(flext::IsInt(a)) - os << flext::GetInt(a); - else if(flext::IsSymbol(a)) { - const char *c = flext::GetString(a); - if(utf8) { -#if FLEXT_OS == FLEXT_OS_WIN - char tmp[1024]; - wchar_t wtmp[1024]; - int err = MultiByteToWideChar(CP_ACP,0,c,strlen(c),wtmp,1024); - if(!err) return false; - err = WideCharToMultiByte(CP_UTF8,0,wtmp,err,tmp,1024,NULL,FALSE); - if(!err) return false; - tmp[err] = 0; - c = tmp; -#elif FLEXT_OS == FLEXT_OS_MAC - char tmp[1024]; - - // is the input always MacRoman? - TextEncoding inconv = CreateTextEncoding(kTextEncodingMacRoman,kTextEncodingDefaultVariant,kTextEncodingDefaultFormat); - TextEncoding outconv = CreateTextEncoding(kTextEncodingUnicodeDefault,kTextEncodingDefaultVariant,kUnicodeUTF8Format); - - TECObjectRef converter; - OSStatus status = TECCreateConverter(&converter,inconv,outconv); - if(status) return false; - - ByteCount inlen,outlen; - status = TECConvertText( - converter, - (ConstTextPtr)c,strlen(c),&inlen, - (TextPtr)tmp,sizeof(tmp),&outlen - ); - tmp[outlen] = 0; - - TECDisposeConverter(converter); - - if(status) return false; - c = tmp; -#else - char tmp[1024]; - wchar_t wtmp[1024]; - if(!UTF8toWCS(wtmp,c,1024)) return false; - size_t len = wcstombs(tmp,wtmp,sizeof(tmp)); - if(len < 0) return false; - c = tmp; -#endif - } - - os << '"'; - for(; *c; ++c) { - // escape some special characters - if(_isspace(*c) || *c == '\\' || *c == ',' || *c == '"') - os << '\\'; - os << *c; - } - os << '"'; - } - else - FLEXT_ASSERT(false); - return true; -} - -static void WriteAtoms(ostream &os,const flext::AtomList &l,bool utf8) -{ - for(int i = 0; i < l.Count(); ++i) { - WriteAtom(os,l[i],utf8); - if(i < l.Count()-1) os << ' '; - } -} - -bool pooldir::LdDir(istream &is,int depth,bool mkdir) -{ - for(int i = 1; !is.eof(); ++i) { - Atoms d,k,*v = new Atoms; - bool r = - ReadAtoms(is,d,',',false) && - ReadAtoms(is,k,',',false) && - ReadAtoms(is,*v,'\n',false); - - if(r) { - if(depth < 0 || d.Count() <= depth) { - pooldir *nd = mkdir?AddDir(d):GetDir(d); - if(nd) { - if(k.Count() == 1) { - nd->SetVal(k[0],v); v = NULL; - } - else if(k.Count() > 1) - post("pool - file format invalid: key must be a single word"); - } - #ifdef FLEXT_DEBUG - else - post("pool - directory was not found",i); - #endif - } - } - else if(!is.eof()) - post("pool - format mismatch encountered, skipped line %i",i); - - if(v) delete v; - } - return true; -} - -bool pooldir::SvDir(ostream &os,int depth,const AtomList &dir) -{ - int cnt = 0; - for(int vi = 0; vi < vsize; ++vi) { - for(poolval *ix = vals[vi].v; ix; ix = ix->nxt) { - WriteAtoms(os,dir,false); - os << " , "; - WriteAtom(os,ix->key,false); - os << " , "; - WriteAtoms(os,*ix->data,false); - os << endl; - ++cnt; - } - } - if(!cnt) { - // no key/value pairs present -> force empty directory - WriteAtoms(os,dir,false); - os << " , ," << endl; - } - if(depth) { - // save sub-directories - int nd = depth > 0?depth-1:-1; - for(int di = 0; di < dsize; ++di) { - for(pooldir *ix = dirs[di].d; ix; ix = ix->nxt) { - ix->SvDir(os,nd,Atoms(dir).Append(ix->dir)); - } - } - } - return true; -} - -class xmltag { -public: - string tag,attr; - bool Ok() const { return tag.length() > 0; } - bool operator ==(const char *t) const { return !tag.compare(t); } - - void Clear() - { -#if defined(_MSC_VER) && (_MSC_VER < 0x1200) - // incomplete STL implementation - tag = ""; attr = ""; -#else - tag.clear(); attr.clear(); -#endif - } - - enum { t_start,t_end,t_empty } type; -}; - -static bool gettag(istream &is,xmltag &tag) -{ - static const char *commstt = ""; - - for(;;) { - // eat whitespace - while(_isspace(is.peek())) is.get(); - - // no tag begin -> break - if(is.peek() != '<') break; - is.get(); // swallow < - - char tmp[1024],*t = tmp; - - // parse for comment start - const char *c = commstt; - while(*++c) { - if(*c != is.peek()) break; - *(t++) = is.get(); - } - - if(!*c) { // is comment - char cmp[2] = {0,0}; // set to some unusual initial value - - for(int ic = 0; ; ic = (++ic)%2) { - char c = is.get(); - if(c == '>') { - // if third character is > then check also the former two - int i; - for(i = 0; i < 2 && cmp[(ic+i)%2] == commend[i]; ++i) {} - if(i == 2) break; // match: comment end found! - } - else - cmp[ic] = c; - } - } - else { - // parse until > with consideration of "s - bool intx = false; - for(;;) { - *t = is.get(); - if(*t == '"') intx = !intx; - else if(*t == '>' && !intx) { - *t = 0; - break; - } - t++; - } - - // look for tag slashes - - char *tb = tmp,*te = t-1,*tf; - - for(; _isspace(*tb); ++tb) {} - if(*tb == '/') { - // slash at the beginning -> end tag - tag.type = xmltag::t_end; - for(++tb; _isspace(*tb); ++tb) {} - } - else { - for(; _isspace(*te); --te) {} - if(*te == '/') { - // slash at the end -> empty tag - for(--te; _isspace(*te); --te) {} - tag.type = xmltag::t_empty; - } - else - // no slash -> begin tag - tag.type = xmltag::t_start; - } - - // copy tag text without slashes - for(tf = tb; tf <= te && *tf && !_isspace(*tf); ++tf) {} - tag.tag.assign(tb,tf-tb); - while(_isspace(*tf)) ++tf; - tag.attr.assign(tf,te-tf+1); - - return true; - } - } - - tag.Clear(); - return false; -} - -static void getvalue(istream &is,string &s) -{ - char tmp[1024],*t = tmp; - bool intx = false; - for(;;) { - char c = is.peek(); - if(c == '"') intx = !intx; - else if(c == '<' && !intx) break; - *(t++) = is.get(); - } - *t = 0; - s = tmp; -} - -bool pooldir::LdDirXMLRec(istream &is,int depth,bool mkdir,AtomList &d) -{ - Atoms k,v; - bool inval = false,inkey = false,indata = false; - int cntval = 0; - - while(!is.eof()) { - xmltag tag; - gettag(is,tag); - if(!tag.Ok()) { - // look for value - string s; - getvalue(is,s); - - if(s.length() && - ( - (!inval && inkey && d.Count()) || /* dir */ - (inval && (inkey || indata)) /* value */ - ) - ) { - bool ret = true; - if(indata) { - if(v.Count()) - post("pool - XML load: value data already given, ignoring new data"); - else - ret = ParseAtoms(s,v,true); - } - else // inkey - if(inval) { - if(k.Count()) - post("pool - XML load, value key already given, ignoring new key"); - else - ret = ParseAtoms(s,k,true); - } - else { - t_atom &dkey = d[d.Count()-1]; - FLEXT_ASSERT(IsSymbol(dkey)); - const char *ds = GetString(dkey); - FLEXT_ASSERT(ds); - if(*ds) - post("pool - XML load: dir key already given, ignoring new key"); - else - ReadAtom(s.c_str(),dkey,true); - - ret = true; - } - if(!ret) post("pool - error interpreting XML value (%s)",s.c_str()); - } - else - post("pool - error reading XML data"); - } - else if(tag == "dir") { - if(tag.type == xmltag::t_start) { - // warn if last directory key was not given - if(d.Count() && GetSymbol(d[d.Count()-1]) == sym__) - post("pool - XML load: dir key must be given prior to subdirs, ignoring items"); - - Atoms dnext(d.Count()+1); - // copy existing dir - dnext.Set(d.Count(),d.Atoms(),0,false); - // initialize current dir key as empty - SetSymbol(dnext[d.Count()],sym__); - - // read next level - LdDirXMLRec(is,depth,mkdir,dnext); - } - else if(tag.type == xmltag::t_end) { - if(!cntval && mkdir) { - // no values have been found in dir -> make empty dir - AddDir(d); - } - - // break tag loop - break; - } - } - else if(tag == "value") { - if(tag.type == xmltag::t_start) { - inval = true; - ++cntval; - k.Clear(); v.Clear(); - } - else if(tag.type == xmltag::t_end) { - // set value after tag closing, but only if level <= depth - if(depth < 0 || d.Count() <= depth) { - int fnd; - for(fnd = d.Count()-1; fnd >= 0; --fnd) - if(GetSymbol(d[fnd]) == sym__) break; - - // look if last dir key has been given - if(fnd >= 0) { - if(fnd == d.Count()-1) - post("pool - XML load: dir key must be given prior to values"); - - // else: one directory level has been left unintialized, ignore items - } - else { - // only use first word of key - if(k.Count() == 1) { - pooldir *nd = mkdir?AddDir(d):GetDir(d); - if(nd) - nd->SetVal(k[0],new Atoms(v)); - else - post("pool - XML load: value key must be exactly one word, value not stored"); - } - } - } - inval = false; - } - } - else if(tag == "key") { - if(tag.type == xmltag::t_start) { - inkey = true; - } - else if(tag.type == xmltag::t_end) { - inkey = false; - } - } - else if(tag == "data") { - if(!inval) - post("pool - XML tag not within "); - - if(tag.type == xmltag::t_start) { - indata = true; - } - else if(tag.type == xmltag::t_end) { - indata = false; - } - } - else if(!d.Count() && tag == "pool" && tag.type == xmltag::t_end) { - // break tag loop - break; - } -#ifdef FLEXT_DEBUG - else { - post("pool - unknown XML tag '%s'",tag.tag.c_str()); - } -#endif - } - return true; -} - -bool pooldir::LdDirXML(istream &is,int depth,bool mkdir) -{ - while(!is.eof()) { - xmltag tag; - if(!gettag(is,tag)) break; - - if(tag == "pool") { - if(tag.type == xmltag::t_start) { - Atoms empty; // must be a separate definition for gcc - LdDirXMLRec(is,depth,mkdir,empty); - } - else - post("pool - pool not initialized yet"); - } - else if(tag == "!DOCTYPE") { - // ignore - } -#ifdef FLEXT_DEBUG - else { - post("pool - unknown XML tag '%s'",tag.tag.c_str()); - } -#endif - } - return true; -} - -static void indent(ostream &s,int cnt) -{ - for(int i = 0; i < cnt; ++i) s << '\t'; -} - -bool pooldir::SvDirXML(ostream &os,int depth,const AtomList &dir,int ind) -{ - int i,lvls = ind?(dir.Count()?1:0):dir.Count(); - - for(i = 0; i < lvls; ++i) { - indent(os,ind+i); - os << "" << endl; - indent(os,ind+i+1); - os << ""; - WriteAtom(os,dir[ind+i],true); - os << "" << endl; - } - - for(int vi = 0; vi < vsize; ++vi) { - for(poolval *ix = vals[vi].v; ix; ix = ix->nxt) { - indent(os,ind+lvls); - os << ""; - WriteAtom(os,ix->key,true); - os << ""; - WriteAtoms(os,*ix->data,true); - os << "" << endl; - } - } - - if(depth) { - int nd = depth > 0?depth-1:-1; - for(int di = 0; di < dsize; ++di) { - for(pooldir *ix = dirs[di].d; ix; ix = ix->nxt) { - ix->SvDirXML(os,nd,Atoms(dir).Append(ix->dir),ind+lvls); - } - } - } - - for(i = lvls-1; i >= 0; --i) { - indent(os,ind+i); - os << "" << endl; - } - return true; -} - -unsigned int pooldir::FoldBits(unsigned long h,int bits) -{ - if(!bits) return 0; - const int hmax = (1<>i)&hmax; - return ret; -} - -int pooldir::Int2Bits(unsigned long n) -{ - int b; - for(b = 0; n; ++b) n >>= 1; - return b; -} diff --git a/externals/grill/pool/source/pool.h b/externals/grill/pool/source/pool.h deleted file mode 100644 index 3382d843..00000000 --- a/externals/grill/pool/source/pool.h +++ /dev/null @@ -1,253 +0,0 @@ -/* -pool - hierarchical storage object for PD and Max/MSP - -Copyright (c) 2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 16:14:29 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#ifndef __POOL_H -#define __POOL_H - -#define FLEXT_ATTRIBUTES 1 - -#include - -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500) -#error You need at least flext version 0.5.0 -#endif - -#include - -using namespace std; - - -typedef flext::AtomListStatic<8> Atoms; - - -class poolval: - public flext -{ -public: - poolval(const t_atom &key,AtomList *data); - ~poolval(); - - poolval &Set(AtomList *data); - poolval *Dup() const; - - t_atom key; - AtomList *data; - poolval *nxt; -}; - -class pooldir: - public flext -{ -public: - pooldir(const t_atom &dir,pooldir *parent,int vcnt,int dcnt); - ~pooldir(); - - void Clear(bool rec,bool dironly = false); - void Reset(bool realloc = true); - - bool Empty() const { return !dirs && !vals; } - bool HasDirs() const { return dirs != NULL; } - bool HasVals() const { return vals != NULL; } - - pooldir *GetDir(int argc,const t_atom *argv,bool cut = false); - pooldir *GetDir(const AtomList &d,bool cut = false) { return GetDir(d.Count(),d.Atoms(),cut); } - bool DelDir(int argc,const t_atom *argv); - bool DelDir(const AtomList &d) { return DelDir(d.Count(),d.Atoms()); } - pooldir *AddDir(int argc,const t_atom *argv,int vcnt = 0,int dcnt = 0); - pooldir *AddDir(const AtomList &d,int vcnt = 0,int dcnt = 0) { return AddDir(d.Count(),d.Atoms(),vcnt,dcnt); } - - void SetVal(const t_atom &key,AtomList *data,bool over = true); - bool SetVali(int ix,AtomList *data); - void ClrVal(const t_atom &key) { SetVal(key,NULL); } - bool ClrVali(int ix) { return SetVali(ix,NULL); } - AtomList *PeekVal(const t_atom &key); - AtomList *GetVal(const t_atom &key,bool cut = false); - int CntAll() const; - int GetAll(t_atom *&keys,Atoms *&lst,bool cut = false); - int PrintAll(char *buf,int len) const; - int GetKeys(AtomList &keys); - int CntSub() const; - int GetSub(const t_atom **&dirs); - - poolval *RefVal(const t_atom &key); - poolval *RefVali(int ix); - - bool Paste(const pooldir *p,int depth,bool repl,bool mkdir); - bool Copy(pooldir *p,int depth,bool cur); - - bool LdDir(istream &is,int depth,bool mkdir); - bool LdDirXML(istream &is,int depth,bool mkdir); - bool SvDir(ostream &os,int depth,const AtomList &dir = AtomList()); - bool SvDirXML(ostream &os,int depth,const AtomList &dir = AtomList(),int ind = 0); - - int VSize() const { return vsize; } - int DSize() const { return dsize; } - -protected: - int VIdx(const t_atom &v) const { return FoldBits(AtomHash(v),vbits); } - int DIdx(const t_atom &d) const { return FoldBits(AtomHash(d),dbits); } - - t_atom dir; - pooldir *nxt; - - pooldir *parent; - const int vbits,dbits,vsize,dsize; - - static unsigned int FoldBits(unsigned long h,int bits); - static int Int2Bits(unsigned long n); - - struct valentry { int cnt; poolval *v; }; - struct direntry { int cnt; pooldir *d; }; - - valentry *vals; - direntry *dirs; - -private: - bool LdDirXMLRec(istream &is,int depth,bool mkdir,AtomList &d); -}; - - -class pooldata: - public flext -{ -public: - pooldata(const t_symbol *s = NULL,int vcnt = 0,int dcnt = 0); - ~pooldata(); - - bool Private() const { return sym == NULL; } - - void Push() { ++refs; } - bool Pop() { return --refs > 0; } - - void Reset() { root.Reset(); } - - bool MkDir(const AtomList &d,int vcnt = 0,int dcnt = 0) - { - root.AddDir(d,vcnt,dcnt); - return true; - } - - bool ChkDir(const AtomList &d) - { - return root.GetDir(d) != NULL; - } - - bool RmDir(const AtomList &d) - { - return root.DelDir(d); - } - - bool Set(const AtomList &d,const t_atom &key,AtomList *data,bool over = true) - { - pooldir *pd = root.GetDir(d); - if(!pd) return false; - pd->SetVal(key,data,over); - return true; - } - - bool Seti(const AtomList &d,int ix,AtomList *data) - { - pooldir *pd = root.GetDir(d); - if(!pd) return false; - pd->SetVali(ix,data); - return true; - } - - bool Clr(const AtomList &d,const t_atom &key) - { - pooldir *pd = root.GetDir(d); - if(!pd) return false; - pd->ClrVal(key); - return true; - } - - bool Clri(const AtomList &d,int ix) - { - pooldir *pd = root.GetDir(d); - if(!pd) return false; - pd->ClrVali(ix); - return true; - } - - bool ClrAll(const AtomList &d,bool rec,bool dironly = false) - { - pooldir *pd = root.GetDir(d); - if(!pd) return false; - pd->Clear(rec,dironly); - return true; - } - - AtomList *Peek(const AtomList &d,const t_atom &key) - { - pooldir *pd = root.GetDir(d); - return pd?pd->PeekVal(key):NULL; - } - - AtomList *Get(const AtomList &d,const t_atom &key) - { - pooldir *pd = root.GetDir(d); - return pd?pd->GetVal(key):NULL; - } - - poolval *Ref(const AtomList &d,const t_atom &key) - { - pooldir *pd = root.GetDir(d); - return pd?pd->RefVal(key):NULL; - } - - poolval *Refi(const AtomList &d,int ix) - { - pooldir *pd = root.GetDir(d); - return pd?pd->RefVali(ix):NULL; - } - - int CntAll(const AtomList &d) - { - pooldir *pd = root.GetDir(d); - return pd?pd->CntAll():0; - } - - int PrintAll(const AtomList &d); - int GetAll(const AtomList &d,t_atom *&keys,Atoms *&lst); - - int CntSub(const AtomList &d) - { - pooldir *pd = root.GetDir(d); - return pd?pd->CntSub():0; - } - - int GetSub(const AtomList &d,const t_atom **&dirs); - - bool Paste(const AtomList &d,const pooldir *clip,int depth = -1,bool repl = true,bool mkdir = true); - pooldir *Copy(const AtomList &d,const t_atom &key,bool cut); - pooldir *CopyAll(const AtomList &d,int depth,bool cut); - - bool LdDir(const AtomList &d,const char *flnm,int depth,bool mkdir = true); - bool SvDir(const AtomList &d,const char *flnm,int depth,bool absdir); - bool Load(const char *flnm) { AtomList l; return LdDir(l,flnm,-1); } - bool Save(const char *flnm) { AtomList l; return SvDir(l,flnm,-1,true); } - bool LdDirXML(const AtomList &d,const char *flnm,int depth,bool mkdir = true); - bool SvDirXML(const AtomList &d,const char *flnm,int depth,bool absdir); - bool LoadXML(const char *flnm) { AtomList l; return LdDirXML(l,flnm,-1); } - bool SaveXML(const char *flnm) { AtomList l; return SvDirXML(l,flnm,-1,true); } - - int refs; - const t_symbol *sym; - pooldata *nxt; - - pooldir root; - -private: - static const t_atom nullatom; -}; - -#endif diff --git a/externals/grill/prepend/gpl.txt b/externals/grill/prepend/gpl.txt deleted file mode 100644 index 5ea29a7d..00000000 --- a/externals/grill/prepend/gpl.txt +++ /dev/null @@ -1,346 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) 19yy - - 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 - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. - diff --git a/externals/grill/prepend/license.txt b/externals/grill/prepend/license.txt deleted file mode 100644 index 7748a30b..00000000 --- a/externals/grill/prepend/license.txt +++ /dev/null @@ -1,49 +0,0 @@ -prepend - just like in Max/MSP -Copyright (C) 2002 Thomas Grill - -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. - -In the official prepend distribution, the GNU General Public License is -in the file gpl.txt - ---------------------------------------------------------- - - OTHER COPYRIGHT NOTICES - ---------------------------------------------------------- -This package uses the flext C++ layer. -See its license text below: - - ---- flext ---------------------------------------------- -flext - C++ layer for Max/MSP and pd (pure data) externals -Copyright (C) 2001,2002 Thomas Grill - -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. - -In the official flext distribution, the GNU General Public License is -in the file gpl.txt diff --git a/externals/grill/prepend/main.cpp b/externals/grill/prepend/main.cpp deleted file mode 100644 index 91a9a5ff..00000000 --- a/externals/grill/prepend/main.cpp +++ /dev/null @@ -1,134 +0,0 @@ -/* - -prepend - just like in MaxMSP - -Copyright (c) 2002 Thomas Grill (xovo@gmx.net) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -*/ - -#include - -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 401) -#error You need at least flext version 0.4.1 -#endif - -#define PREPEND_VERSION "0.0.3" - -class prepend: - public flext_base -{ - FLEXT_HEADER_S(prepend, flext_base, Setup) - -public: - prepend(int argc,t_atom *argv); - -protected: - void m_bang(); - void m_set(int argc,t_atom *argv) { reg[0].Store(NULL,argc,argv); } - void m_any0(const t_symbol *s,int argc,t_atom *argv) { reg[1].Store(s,argc,argv); m_bang(); } - void m_any1(const t_symbol *s,int argc,t_atom *argv) { reg[0].Store(s,argc,argv); } - - virtual void m_help(); - -private: - - static void Setup(t_class *c); - - class reg_t - { - public: - reg_t(): cnt(0),lst(NULL) {} - ~reg_t() { if(lst) delete[] lst; } - - bool Is() const { return cnt && lst; } - bool IsSimple() const { return !IsSymbol(lst[0]); } - bool IsList() const { return IsSymbol(lst[0]) && GetSymbol(lst[0]) == &s_list; } - - void Store(const t_symbol *s,int argc,t_atom *argv); - int cnt; t_atom *lst; - } reg[2]; - - FLEXT_CALLBACK(m_bang) - FLEXT_CALLBACK_V(m_set) - FLEXT_CALLBACK_A(m_any0) - FLEXT_CALLBACK_A(m_any1) -}; - -FLEXT_NEW_V("prepend",prepend) - - - -prepend::prepend(int argc,t_atom *argv) -{ - AddInAnything(2); - AddOutAnything(); - - m_set(argc,argv); -} - -void prepend::Setup(t_class *c) -{ - FLEXT_CADDMETHOD_(c,0,"bang",m_bang); -// FLEXT_CADDMETHOD_(c,0,"set",m_set); - FLEXT_CADDMETHOD(c,0,m_any0); - FLEXT_CADDMETHOD(c,1,m_any1); -} - -void prepend::reg_t::Store(const t_symbol *s,int argc,t_atom *argv) -{ - if(lst) delete[] lst; cnt = 0; - lst = new t_atom[argc+1]; - - if(s && s != &s_float) SetSymbol(lst[cnt++],s); - else if(argc > 0 && !IsSymbol(argv[0])) SetSymbol(lst[cnt++],&s_list); - - for(int i = 0; i < argc; ++i,++cnt) lst[cnt] = argv[i]; -} - -void prepend::m_bang() -{ - t_atom *ret = new t_atom[reg[0].cnt+reg[1].cnt+1]; - int i,rcnt = 0; - - if(reg[0].Is()) { - if(reg[0].IsSimple()) SetSymbol(ret[rcnt++],&s_list); - for(i = reg[0].IsList()?1:0; i < reg[0].cnt; ++i) ret[rcnt++] = reg[0].lst[i]; - } - else - SetSymbol(ret[rcnt++],&s_list); - - if(reg[1].Is()) { - for(i = reg[1].IsList()?1:0; i < reg[1].cnt; ++i) ret[rcnt++] = reg[1].lst[i]; - } - - if(IsSymbol(ret[0])) - ToOutAnything(0,GetSymbol(ret[0]),rcnt-1,ret+1); - else - ToOutList(0,rcnt,ret); - delete[] ret; -} - -void prepend::m_help() -{ - post("%s - just like in Max/MSP, version " PREPEND_VERSION,thisName()); -#ifdef _DEBUG - post("compiled on " __DATE__ " " __TIME__); -#endif - post("(C) Thomas Grill, 2002"); - post(""); - post("Arguments: %s [atoms to prepend]",thisName()); - post("Inlets: 1:triggering atoms"); - post("Inlets: 2:atoms to prepend"); - post("Outlets: 1:sum of prepend"); - post("Methods:"); - post("\thelp: shows this help"); -// post("\tset [atoms]: set atoms to prepend"); - post(""); -} - - - - - diff --git a/externals/grill/prepend/makefile.bcc b/externals/grill/prepend/makefile.bcc deleted file mode 100644 index 6a6446ed..00000000 --- a/externals/grill/prepend/makefile.bcc +++ /dev/null @@ -1,75 +0,0 @@ -# prepend - just like in Max/MSP -# Copyright (c) 2002 Thomas Grill (xovo@gmx.net) -# -# Makefile for BorlandC++ -# -# usage: make -f makefile.bcc -# -# --------------------------------------------- - -NAME=prepend -SETUPFUNCTION=prepend_setup - -# where to put the build -OUTPATH=.\bcc - -# flext stuff -FLEXTPATH=..\flext ### EDIT! ### -TARGET=pdwin - -# paths -BCCPATH=c:\programme\prog\bcc55 ### EDIT! ### -PDPATH=c:\programme\audio\pd ### EDIT! ### - -# includes, libs -INCPATH=-I$(BCCPATH)\include -I$(PDPATH)\src -I$(FLEXTPATH) -LIBPATH=-L$(BCCPATH)\lib -L$(PDPATH)\lib -L$(FLEXTPATH) -LIBS=cw32.lib import32.lib C0D32.OBJ - -# compiler definitions and flags -DEFS=-DPD -DNT -CFLAGS=-6 -O2 -OS -ff -tWD - - -# the rest can stay untouched -# ---------------------------------------------- - -# all the source files from the package -SRCS= main.cpp -HDRS= - -#default target -all: $(OUTPATH)\$(NAME).dll - -# remove build -clean: - -del /s /q $(OUTPATH) > nul - rmdir $(OUTPATH) - -# ----------------------------------------------- - -OBJS= $(SRCS:.cpp=.obj) - -$(SRCS): $(HDRS) - -touch $< - -.PATH.OBJ=$(OUTPATH) - -.cpp.obj: - bcc32 -c $(CFLAGS) $(DEFS) $(INCPATH) -n$(OUTPATH) $< - -$(OUTPATH): - -@if not exist $< mkdir $< - -$(OUTPATH)\pd.lib: $(PDPATH)\bin\pd.dll - implib -a $@ $** - -$(OUTPATH)\$(NAME).def: - @echo EXPORTS $(SETUPFUNCTION) = _$(SETUPFUNCTION) > $< - -$(OUTPATH)\$(NAME).dll :: $(OUTPATH) $(OUTPATH)\$(NAME).def $(OUTPATH)\pd.lib - -$(OUTPATH)\$(NAME).dll :: $(OBJS) - ilink32 -C -Tpd $(LIBPATH) $** ,$<,,$(LIBS) $(OUTPATH)\pd.lib $(FLEXTPATH)\bcc\flext-$(TARGET).lib ,$(OUTPATH)\$(NAME).def - - diff --git a/externals/grill/prepend/makefile.pd-linux b/externals/grill/prepend/makefile.pd-linux deleted file mode 100644 index a7d5df6b..00000000 --- a/externals/grill/prepend/makefile.pd-linux +++ /dev/null @@ -1,69 +0,0 @@ -# prepend - just like in Max/MSP -# Copyright (c) 2002 Thomas Grill (xovo@gmx.net) -# -# Makefile for gcc -# -# usage: make -f makefile.pd-linux -# -# --------------------------------------------- - -NAME=prepend2 - -# where to build -TARGDIR=./pd-linux - -# where to install ### EDIT! ### -INSTDIR=/usr/lib/pd/extra - -# flext stuff ### EDIT! ### -FLEXTPATH=/usr/lib/pd/flext -FLEXTLIB=$(FLEXTPATH)/flext.a - -# compiler+linker stuff ### EDIT! ### -INCLUDES=/usr/lib/pd/include -FLAGS=-DPD -CFLAGS=-O6 -mcpu=pentium -LIBS=m - - -# the rest can stay untouched -# ---------------------------------------------- - -# all the source files from the package -SRCS=main.cpp -HDRS= - -TARGET=$(TARGDIR)/$(NAME).pd_linux - -# default target -all: $(TARGDIR) $(TARGET) - -$(SRCS): $(HDRS) - touch $@ - -$(TARGDIR): - mkdir $(TARGDIR) - -$(TARGDIR)/%.o : %.cpp - $(CXX) -c $(CFLAGS) $(FLAGS) $(patsubst %,-I%,$(INCLUDES) $(FLEXTPATH)) $< -o $@ - -$(TARGET) : $(patsubst %.cpp,$(TARGDIR)/%.o,$(SRCS)) $(FLEXTLIB) - $(CXX) $(LDFLAGS) -shared $^ $(patsubst %,-l%,$(LIBS)) -o $@ - chmod 755 $@ - -$(INSTDIR): - mkdir $(INSTDIR) - -install:: $(INSTDIR) - -install:: $(TARGET) - cp $^ $(INSTDIR) - chown root.root $(patsubst %,$(INSTDIR)/%,$(notdir $^)) - -.PHONY: clean -clean: - rm -f $(TARGDIR)/*.o $(TARGET) - - - - diff --git a/externals/grill/prepend/prepend.dsp b/externals/grill/prepend/prepend.dsp deleted file mode 100644 index eee3de13..00000000 --- a/externals/grill/prepend/prepend.dsp +++ /dev/null @@ -1,95 +0,0 @@ -# Microsoft Developer Studio Project File - Name="prepend" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** NICHT BEARBEITEN ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=prepend - Win32 Debug -!MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE -!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl -!MESSAGE -!MESSAGE NMAKE /f "prepend.mak". -!MESSAGE -!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben -!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: -!MESSAGE -!MESSAGE NMAKE /f "prepend.mak" CFG="prepend - Win32 Debug" -!MESSAGE -!MESSAGE Für die Konfiguration stehen zur Auswahl: -!MESSAGE -!MESSAGE "prepend - Win32 Release" (basierend auf "Win32 (x86) Dynamic-Link Library") -!MESSAGE "prepend - Win32 Debug" (basierend auf "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "prepend" -# PROP Scc_LocalPath "." -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "prepend - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "pd-msvc/r" -# PROP Intermediate_Dir "pd-msvc/r" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PREPEND_EXPORTS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /I "c:\programme\audio\pd\src" /I "f:\prog\max\flext\source" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D FLEXT_SYS=2 /YX /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0xc07 /d "NDEBUG" -# ADD RSC /l 0xc07 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib pd.lib flext-pdwin.lib /nologo /dll /machine:I386 /out:"c:\programme\audio\pd-libs/prepend.dll" /libpath:"c:/programme/audio/pd/bin" /libpath:"..\flext\pd-msvc" - -!ELSEIF "$(CFG)" == "prepend - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "pd-msvc/d" -# PROP Intermediate_Dir "pd-msvc/d" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "PREPEND_EXPORTS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "c:\programme\audio\pd\src" /I "f:\prog\max\flext\source" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D FLEXT_SYS=2 /YX /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0xc07 /d "_DEBUG" -# ADD RSC /l 0xc07 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib pd.lib flext_d-pdwin.lib /nologo /dll /debug /machine:I386 /pdbtype:sept /libpath:"c:/programme/audio/pd/bin" /libpath:"..\flext\pd-msvc" - -!ENDIF - -# Begin Target - -# Name "prepend - Win32 Release" -# Name "prepend - Win32 Debug" -# Begin Source File - -SOURCE=.\main.cpp -# End Source File -# End Target -# End Project diff --git a/externals/grill/prepend/prepend.vcproj b/externals/grill/prepend/prepend.vcproj deleted file mode 100644 index a812c3d9..00000000 --- a/externals/grill/prepend/prepend.vcproj +++ /dev/null @@ -1,174 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/py/build/config-lnx.def b/externals/grill/py/build/config-lnx.def deleted file mode 100644 index 86477fcc..00000000 --- a/externals/grill/py/build/config-lnx.def +++ /dev/null @@ -1,17 +0,0 @@ -# what is the base prefix of the Python installation? -PYTHONPREFIX=/usr - -# which Python version do you want to compile against? -PYTHONVERSION=2.4 - -# uncomment if numpy/numarray/numeric support should be compiled in -# for info see http://numeric.scipy.org -PY_NUMPY=1 -# PY_NUMARRAY=1 -# PY_NUMERIC=1 - -# use thread-safe GIL functionality (do this for python version >= 2.3!) -PY_USE_GIL=1 - -# use inofficial (pure data) functionality -# PY_USE_INOFFICIAL=1 diff --git a/externals/grill/py/build/config-mac.def b/externals/grill/py/build/config-mac.def deleted file mode 100644 index 3ecd7219..00000000 --- a/externals/grill/py/build/config-mac.def +++ /dev/null @@ -1,14 +0,0 @@ -# which major python version? -PYTHONVER=23 - -# uncomment if numpy/numarray/numeric support should be compiled in -# for info see http://numeric.scipy.org -PY_NUMPY=1 -# PY_NUMARRAY=1 -# PY_NUMERIC=1 - -# use thread-safe GIL functionality (do this for python version >= 2.3!) -PY_USE_GIL=1 - -# use inofficial (pure data) functionality -# PY_USE_INOFFICIAL=1 diff --git a/externals/grill/py/build/config-win.def b/externals/grill/py/build/config-win.def deleted file mode 100644 index 9c81bf35..00000000 --- a/externals/grill/py/build/config-win.def +++ /dev/null @@ -1,17 +0,0 @@ -# which major python version? -PYTHONVER=24 - -# where is the Python installation? -PYTHONPATH=%programfiles%/python$(PYTHONVER) - -# uncomment if numpy/numarray/numeric support should be compiled in -# for info see http://numeric.scipy.org -PY_NUMPY=1 -# PY_NUMARRAY=1 -# PY_NUMERIC=1 - -# use thread-safe GIL functionality (do this for python version >= 2.3!) -PY_USE_GIL=1 - -# use inofficial (pure data) functionality -# PY_USE_INOFFICIAL=1 diff --git a/externals/grill/py/build/gnumake-lnx-gcc.inc b/externals/grill/py/build/gnumake-lnx-gcc.inc deleted file mode 100644 index 7bbde1f0..00000000 --- a/externals/grill/py/build/gnumake-lnx-gcc.inc +++ /dev/null @@ -1,21 +0,0 @@ -DEFS += -DPY_EXPORTS -INCPATH += -I$(PYTHONPREFIX)/include/python$(PYTHONVERSION) -LIBS += -lpython$(PYTHONVERSION) - -ifdef PY_NUMARRAY -DEFS += -DPY_NUMARRAY -endif -ifdef PY_NUMPY -DEFS += -DPY_NUMPY -endif -ifdef PY_NUMERIC -DEFS += -DPY_NUMERIC -endif - -ifdef PY_USE_GIL -DEFS += -DPY_USE_GIL -endif - -ifdef PY_USE_INOFFICIAL -DEFS += -DPY_USE_INOFFICIAL -endif diff --git a/externals/grill/py/build/gnumake-mac-gcc.inc b/externals/grill/py/build/gnumake-mac-gcc.inc deleted file mode 100644 index d077c84e..00000000 --- a/externals/grill/py/build/gnumake-mac-gcc.inc +++ /dev/null @@ -1,22 +0,0 @@ -DEFS += -DPY_EXPORTS -LIBS += -F/Library/Frameworks -framework Python - -ifdef PY_NUMARRAY -DEFS += -DPY_NUMARRAY -endif -ifdef PY_NUMPY -DEFS += -DPY_NUMPY -INCPATH += -I/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/numpy/core/include -#INCPATH += -F/System/Library/Frameworks -I/Library/Python/2.3/site-packages/numpy/core/include -endif -ifdef PY_NUMERIC -DEFS += -DPY_NUMERIC -endif - -ifdef PY_USE_GIL -DEFS += -DPY_USE_GIL -endif - -ifdef PY_USE_INOFFICIAL -DEFS += -DPY_USE_INOFFICIAL -endif diff --git a/externals/grill/py/build/gnumake-win-cygwin.inc b/externals/grill/py/build/gnumake-win-cygwin.inc deleted file mode 100644 index a64fd9e1..00000000 --- a/externals/grill/py/build/gnumake-win-cygwin.inc +++ /dev/null @@ -1,22 +0,0 @@ -DEFS += -DPY_EXPORTS -INCPATH += -I$(PYTHONPATH)/include -LIBPATH += -L$(PYTHONPATH)/libs -LIBS += -lpython$(PYTHONVER) -lshell32 - -ifdef PY_NUMARRAY -DEFS += -DPY_NUMARRAY -endif -ifdef PY_NUMPY -DEFS += -DPY_NUMPY -endif -ifdef PY_NUMERIC -DEFS += -DPY_NUMERIC -endif - -ifdef PY_USE_GIL -DEFS += -DPY_USE_GIL -endif - -ifdef PY_USE_INOFFICIAL -DEFS += -DPY_USE_INOFFICIAL -endif diff --git a/externals/grill/py/build/nmake-win-msvc.inc b/externals/grill/py/build/nmake-win-msvc.inc deleted file mode 100644 index 7cf0d04d..00000000 --- a/externals/grill/py/build/nmake-win-msvc.inc +++ /dev/null @@ -1,23 +0,0 @@ -DEFS = $(DEFS) /DPY_EXPORTS -INCPATH=/I$(PYTHONPATH)\include -LIBPATH=/LIBPATH:$(PYTHONPATH)\libs -LIBS=$(LIBS) shell32.lib - -!ifdef PY_NUMARRAY -DEFS = $(DEFS) /DPY_NUMARRAY -!endif -!ifdef PY_NUMPY -INCPATH=$(INCPATH) /I$(PYTHONPATH)\Lib\site-packages\numpy\core\include -DEFS = $(DEFS) /DPY_NUMPY -!endif -!ifdef PY_NUMERIC -DEFS = $(DEFS) /DPY_NUMERIC -!endif - -!ifdef PY_USE_GIL -DEFS = $(DEFS) /DPY_USE_GIL -!endif - -!ifdef PY_USE_INOFFICIAL -DEFS = $(DEFS) /DPY_USE_INOFFICIAL -!endif diff --git a/externals/grill/py/gpl.txt b/externals/grill/py/gpl.txt deleted file mode 100644 index d712e5d9..00000000 --- a/externals/grill/py/gpl.txt +++ /dev/null @@ -1,284 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS diff --git a/externals/grill/py/license.txt b/externals/grill/py/license.txt deleted file mode 100644 index c4162b50..00000000 --- a/externals/grill/py/license.txt +++ /dev/null @@ -1,50 +0,0 @@ -py/pyext - python script objects for PD and MaxMSP -Copyright (C) 2002-2008 Thomas Grill - -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. - -In the official py/pyext distribution, the GNU General Public License is -in the file gpl.txt - ---------------------------------------------------------- - - OTHER COPYRIGHT NOTICES - ---------------------------------------------------------- -This package uses the flext C++ layer - See its license text below: - - ---- flext ---------------------------------------------- -flext - C++ layer for Max/MSP and pd (pure data) externals -Copyright (C) 2001-2008 Thomas Grill - -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. - -In the official flext distribution, the GNU General Public License is -in the file gpl.txt - - diff --git a/externals/grill/py/maxmsp/py-objectmappings.txt b/externals/grill/py/maxmsp/py-objectmappings.txt deleted file mode 100644 index cb0e4db3..00000000 --- a/externals/grill/py/maxmsp/py-objectmappings.txt +++ /dev/null @@ -1,19 +0,0 @@ -max objectfile py py; -max objectfile py. py; -max objectfile pyext py; -max objectfile pyext. py; -max objectfile pyx py; -max objectfile pyx. py; -max objectfile pyext~ py; -max objectfile pyext.~ py; -max objectfile pyx~ py; -max objectfile pyx.~ py; -max objectfile pym py; - -max oblist python py; -max oblist python py.; -max oblist python pyext; -max oblist python pyext.; -max oblist python pyext~; -max oblist python pyext.~; -max oblist python pym; diff --git a/externals/grill/py/maxmsp/thread-1.mxb b/externals/grill/py/maxmsp/thread-1.mxb deleted file mode 100644 index de2d4716..00000000 Binary files a/externals/grill/py/maxmsp/thread-1.mxb and /dev/null differ diff --git a/externals/grill/py/package.txt b/externals/grill/py/package.txt deleted file mode 100644 index 9002aa86..00000000 --- a/externals/grill/py/package.txt +++ /dev/null @@ -1,16 +0,0 @@ -NAME=py - -BUILDTYPE=multi -BUILDDIR=build - -SRCDIR=source -PRECOMPILE=pyprefix.h - -SRCS= \ - main.cpp \ - py.cpp pyext.cpp modmeth.cpp clmeth.cpp \ - register.cpp bound.cpp pyargs.cpp \ - pysymbol.cpp pybuffer.cpp pybundle.cpp pydsp.cpp \ - pyatom.cpp pybase.cpp pymeth.cpp - -HDRS= pyprefix.h main.h pyext.h pysymbol.h pybuffer.h pybundle.h pyatom.h pybase.h diff --git a/externals/grill/py/pd/attr-1.pd b/externals/grill/py/pd/attr-1.pd deleted file mode 100644 index 56875379..00000000 --- a/externals/grill/py/pd/attr-1.pd +++ /dev/null @@ -1,37 +0,0 @@ -#N canvas 114 127 697 455 12; -#X obj 224 397 pyext simple ex3; -#X obj 392 398 print A; -#X msg 362 247 get tmp; -#X msg 396 320 get _inlets; -#X msg 395 344 set _inlets 4; -#X msg 18 206 dir; -#X msg 15 312 getattributes; -#X msg 15 336 getmethods; -#X msg 18 234 dir+; -#X text 15 75 This demonstrates the usage of attributes. See the simple.py -file.; -#X text 260 212 access a class variable; -#X text 395 301 try to get/set internal stuff; -#X text 506 347 (NOT allowed!); -#X text 14 288 get attributes and methods; -#X text 51 205 Python module dict; -#X text 59 235 Python class dict; -#X text 17 128 All attribute-related methods dump eventual output to -the attribute outlet (which is the right-most one); -#X obj 16 13 cnv 15 650 40 empty empty py/pyext 10 22 0 24 -260818 --1 0; -#X text 235 16 Python script objects \, (C)2003-2005 Thomas Grill; -#X text 235 32 http://grrrr.org/ext; -#X msg 260 248 set tmp \$1; -#X obj 259 230 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -10 -262144 -1 -1 0 256; -#X connect 0 1 1 0; -#X connect 2 0 0 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; -#X connect 5 0 0 0; -#X connect 6 0 0 0; -#X connect 7 0 0 0; -#X connect 8 0 0 0; -#X connect 20 0 0 0; -#X connect 21 0 20 0; diff --git a/externals/grill/py/pd/buffer-1.pd b/externals/grill/py/pd/buffer-1.pd deleted file mode 100644 index 0314d3fe..00000000 --- a/externals/grill/py/pd/buffer-1.pd +++ /dev/null @@ -1,61 +0,0 @@ -#N canvas 123 58 716 496 12; -#X obj 37 240 print; -#X obj 107 241 print A; -#X msg 30 139 reload; -#N canvas 0 0 450 300 graph1 0; -#X array array1 100 float 3; -#A 0 0 0 0 0 0 0 0 0 0 0 0.00285713 0.00471427 0.00514284 0.00557141 -0.00599998 0.00642855 0.00228571 0.00242857 0.00257143 -0.00542855 --0.0114285 -0.0209999 -0.0377142 -0.0427142 -0.0479998 -0.067857 -0.0891426 --0.104143 -0.108 -0.111857 -0.115714 -0.119571 -0.123428 -0.127285 --0.131142 -0.125 -0.128571 -0.132143 -0.127571 -0.122571 -0.12 -0.117142 --0.114 -0.110571 -0.106857 -0.102857 -0.0985711 -0.0872856 -0.0754282 --0.0629998 -0.0499999 -0.0437141 -0.0371427 -0.0227142 -0.00771428 -0.00785714 0.0239999 0.0298571 0.0359047 0.0421427 0.068571 0.0915 -0.132857 0.161999 0.146285 0.134642 0.122571 0.105285 0.0582855 0.00985713 -0.00999999 0.0101428 -0.0411427 -0.0417142 -0.0739998 -0.0749998 -0.0759998 --0.132 -0.133714 -0.12533 -0.113684 -0.101707 -0.089398 -0.0767592 --0.0637893 -0.0504886 -0.036857 -0.0152967 0.0067692 0.0293405 0.0524174 -0.0759997 0.100088 0.12468 0.14978 0.175384 0.201493 0.228109 0.25523 -0.325284; -#X coords 0 1 99 -1 200 140 1; -#X restore 421 156 graph; -#N canvas 0 0 450 300 graph2 0; -#X array array2 100 float 3; -#A 0 0 0 0 0 0 0 0.0285712 0.0428568 0.0571424 0.12857 0.171427 0.185712 -0.199998 0.242854 0.342853 0.342853 0.364281 0.41428 0.41428 0.357138 -0.314282 0.278568 0.314282 0.328567 0.342853 0.378567 0.41428 0.457137 -0.49285 0.528564 0.54285 0.557135 0.599992 0.614277 0.671419 0.671419 -0.599992 0.614276 0.59999 0.585705 0.571419 0.499991 0.482135 0.464278 -0.446421 0.428564 0.408564 0.388565 0.368565 0.348565 0.328566 0.305709 -0.282852 0.259995 0.237138 0.214282 0.194282 0.174282 0.154282 0.134283 -0.114283 0.0914263 0.0685695 0.0457127 0.0228559 8.84384e-007 0.0142864 -0.0285719 0.0428574 0.0571429 0.0714284 0.096428 0.121428 0.146427 -0.171427 0.181631 0.191835 0.202039 0.212243 0.222446 0.23265 0.242854 -0.25714 0.271425 0.285711 0.299996 0.314282 0.33571 0.357138 0.385709 -0.407138 0.428566 0.457137 0.457137 0.12857 0.514279 0.557135 0.604754 -0.652372 0.814274; -#X coords 0 1 99 -1 200 140 1; -#X restore 421 305 graph; -#N canvas 0 0 450 300 graph3 0; -#X array array3 100 float 2; -#X coords 0 1 99 -1 200 140 1; -#X restore 65 301 graph; -#X obj 36 199 py buffer @detach 1; -#X msg 200 123 mul array3 array1 array2; -#X msg 200 145 add array3 array1 array2; -#X obj 16 13 cnv 15 650 40 empty empty py/pyext 10 22 0 24 -260818 --1 0; -#X text 235 16 Python script objects \, (C)2003-2005 Thomas Grill; -#X text 235 32 http://grrrr.org/ext; -#X text 17 67 This demonstrates the usage of buffers. See the buffer.py -script.; -#X msg 201 172 fadein array1; -#X msg 199 196 neg array2; -#X connect 2 0 6 0; -#X connect 6 0 0 0; -#X connect 6 1 1 0; -#X connect 7 0 6 1; -#X connect 8 0 6 1; -#X connect 13 0 6 1; -#X connect 14 0 6 1; diff --git a/externals/grill/py/pd/buffer-2.pd b/externals/grill/py/pd/buffer-2.pd deleted file mode 100644 index fe066805..00000000 --- a/externals/grill/py/pd/buffer-2.pd +++ /dev/null @@ -1,37 +0,0 @@ -#N canvas 608 159 694 442 12; -#X obj 16 13 cnv 15 650 40 empty empty py/pyext 10 22 0 24 -260818 --1 0; -#X text 235 16 Python script objects \, (C)2003-2005 Thomas Grill; -#X text 235 32 http://grrrr.org/ext; -#X text 17 67 This demonstrates how to resize buffers; -#N canvas 0 0 450 300 graph1 0; -#X array array1 42 float 3; -#A 0 0 0 0 0 0.0285715 0.0857145 0.128572 0.171429 0.257144 0.314287 -0.385715 0.385715 0.385715 0.385715 0.385715 0.37143 0.342858 0.314287 -0.228572 0.128572 0.0428573 -0.0857145 -0.200001 -0.285715 -0.328572 --0.357144 -0.400001 -0.428573 -0.428573 -0.457144 -0.457144 -0.457144 --0.457144 -0.457144 -0.457144 -0.457144 -0.457144 -0.457144 -0.414287 --0.342858 -0.314287 1.02445e-007; -#X coords 0 1 42 -1 200 140 1; -#X restore 413 259 graph; -#X msg 40 148 symbol array1; -#X obj 40 194 py pyext.Buffer @py 1; -#X obj 143 238 nbx 5 14 0 100 0 1 empty empty empty 0 -6 0 10 -260818 --1 -1 42 256; -#X obj 143 260 t b f; -#X obj 39 287 pym 2 resize @py 1; -#X obj 40 120 loadbang; -#X text 37 310 returns buffer object; -#X obj 41 361 py .len; -#X text 111 361 call __builtin__.len; -#X text 222 192 create Buffer object; -#X obj 41 394 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -10 -261681 -1 -1 0 256; -#X connect 5 0 6 1; -#X connect 6 0 9 1; -#X connect 7 0 8 0; -#X connect 8 0 9 0; -#X connect 8 1 9 2; -#X connect 9 0 12 1; -#X connect 10 0 5 0; -#X connect 12 0 15 0; diff --git a/externals/grill/py/pd/builtins-1.pd b/externals/grill/py/pd/builtins-1.pd deleted file mode 100644 index 23088d9f..00000000 --- a/externals/grill/py/pd/builtins-1.pd +++ /dev/null @@ -1,53 +0,0 @@ -#N canvas 602 394 714 429 12; -#X obj 36 241 py .range @py 1; -#X floatatom 35 356 5 0 0 0 - - -; -#X obj 35 323 py .sum; -#X obj 16 13 cnv 15 650 40 empty empty py/pyext 10 22 0 24 -260818 --1 0; -#X text 235 32 http://grrrr.org/ext; -#X obj 36 159 nbx 5 14 -1e+037 1e+037 0 1 empty empty min 0 -6 0 10 --262131 -1 -1 51 256; -#X obj 95 159 nbx 5 14 -1e+037 1e+037 0 1 empty empty max 0 -6 0 10 --262131 -1 -1 131 256; -#X obj 154 159 nbx 5 14 1 100000 1 1 empty empty step 0 -6 0 10 -262131 --1 -1 6.61169 256; -#N canvas 0 0 466 316 pak3 0; -#X obj 22 25 inlet; -#X obj 81 26 inlet; -#X obj 136 26 inlet; -#X obj 36 158 outlet; -#X obj 36 123 pack 0 0 0; -#X obj 78 71 t b f; -#X obj 133 73 t b f; -#X obj 208 46 loadbang; -#X obj 208 73 1; -#X obj 23 53 int; -#X obj 135 51 int; -#X obj 80 50 int; -#X connect 0 0 9 0; -#X connect 1 0 11 0; -#X connect 2 0 10 0; -#X connect 4 0 3 0; -#X connect 5 0 4 0; -#X connect 5 1 4 1; -#X connect 6 0 4 0; -#X connect 6 1 4 2; -#X connect 7 0 8 0; -#X connect 8 0 4 2; -#X connect 9 0 4 0; -#X connect 10 0 6 0; -#X connect 11 0 5 0; -#X restore 36 190 pd pak3; -#X text 169 239 construct a Python list; -#X text 78 282 Python object pointer is propagated to next object; -#X text 106 320 calculate sum over list elements; -#X text 21 73 Py can use built-in Python functions; -#X text 21 97 A . preceding the function name searches for the function -in either the pyext module or in __builtins__; -#X text 235 16 Python script objects \, (C)2003-2006 Thomas Grill; -#X connect 0 0 2 1; -#X connect 2 0 1 0; -#X connect 5 0 8 0; -#X connect 6 0 8 1; -#X connect 7 0 8 2; -#X connect 8 0 0 1; diff --git a/externals/grill/py/pd/methods-1.pd b/externals/grill/py/pd/methods-1.pd deleted file mode 100644 index 5b85c43a..00000000 --- a/externals/grill/py/pd/methods-1.pd +++ /dev/null @@ -1,24 +0,0 @@ -#N canvas 540 469 734 369 12; -#X obj 16 13 cnv 15 650 40 empty empty py/pyext 10 22 0 24 -260818 --1 0; -#X text 235 32 http://grrrr.org/ext; -#X symbolatom 21 139 10 0 0 0 - - -; -#X symbolatom 25 298 10 0 0 0 - - -; -#X obj 22 179 py .str @py 1; -#X text 145 170 convert the symbol to a Python string; -#X text 35 216 pass it as a true Python object; -#X symbolatom 364 295 10 0 0 0 - - -; -#X text 462 269 use module function; -#X text 23 119 enter some text; -#X text 145 187 using the built-in str function; -#X obj 25 252 pym swapcase; -#X text 63 270 use swapcase method; -#X obj 363 250 py string.swapcase; -#X text 235 16 Python script objects \, (C)2003-2006 Thomas Grill; -#X text 21 73 Py can act on Python objects in an object-oriented manner -; -#X connect 2 0 4 1; -#X connect 4 0 11 1; -#X connect 4 0 13 1; -#X connect 11 0 3 0; -#X connect 13 0 7 0; diff --git a/externals/grill/py/pd/methods-2.pd b/externals/grill/py/pd/methods-2.pd deleted file mode 100644 index df967716..00000000 --- a/externals/grill/py/pd/methods-2.pd +++ /dev/null @@ -1,30 +0,0 @@ -#N canvas 540 469 746 351 12; -#X obj 16 13 cnv 15 650 40 empty empty py/pyext 10 22 0 24 -260818 --1 0; -#X text 235 32 http://grrrr.org/ext; -#X symbolatom 21 139 10 0 0 0 - #0-t -; -#X text 23 119 enter some text; -#X obj 25 252 pym 2 *; -#X obj 213 183 t b f; -#X text 105 251 repeat text; -#X text 215 117 multiply it!; -#X symbolatom 25 283 80 0 0 0 - - -; -#X obj 214 139 nbx 5 14 1 100 0 1 empty empty empty 0 -6 0 10 -262131 --1 -1 6 256; -#N canvas 0 0 462 312 init 0; -#X obj 61 116 s \$0-t; -#X obj 64 44 loadbang; -#X obj 64 81 symbol a; -#X connect 1 0 2 0; -#X connect 2 0 0 0; -#X restore 606 127 pd init; -#X obj 213 159 int; -#X text 235 16 Python script objects \, (C)2003-2006 Thomas Grill; -#X text 21 73 Py can act on Python objects in an object-oriented manner -; -#X connect 2 0 4 1; -#X connect 4 0 8 0; -#X connect 5 0 4 0; -#X connect 5 1 4 2; -#X connect 9 0 11 0; -#X connect 11 0 5 0; diff --git a/externals/grill/py/pd/pak.pd b/externals/grill/py/pd/pak.pd deleted file mode 100644 index 139350a2..00000000 --- a/externals/grill/py/pd/pak.pd +++ /dev/null @@ -1,28 +0,0 @@ -#N canvas 463 293 282 232 12; -#X obj 17 32 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 10 --262144 -1 -1 47 256; -#X obj 34 52 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 10 --262144 -1 -1 182 256; -#X obj 56 68 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 10 --262144 -1 -1 86 256; -#X obj 68 88 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 10 --262144 -1 -1 31 256; -#X obj 118 29 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -10 -262144 -1 -1 117 256; -#X obj 135 49 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -10 -262144 -1 -1 0 256; -#X obj 157 65 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -10 -262144 -1 -1 86 256; -#X obj 169 85 nbx 5 14 -1e+037 1e+037 0 0 empty empty empty 0 -6 0 -10 -262144 -1 -1 0 256; -#X obj 36 168 print; -#X obj 37 129 pyx. pak 8; -#X connect 0 0 9 1; -#X connect 1 0 9 2; -#X connect 2 0 9 3; -#X connect 3 0 9 4; -#X connect 4 0 9 5; -#X connect 5 0 9 6; -#X connect 6 0 9 7; -#X connect 7 0 9 8; -#X connect 9 0 8 0; diff --git a/externals/grill/py/pd/script-1.pd b/externals/grill/py/pd/script-1.pd deleted file mode 100644 index 98fee527..00000000 --- a/externals/grill/py/pd/script-1.pd +++ /dev/null @@ -1,64 +0,0 @@ -#N canvas 297 17 700 542 12; -#X obj 39 278 print; -#X obj 345 251 print; -#X msg 499 149 freakhole; -#X msg 148 149 list H e l l o; -#X msg 166 175 Hello friend; -#X obj 42 460 print; -#X msg 102 367 0 1 2 3 4; -#X msg 197 367 5 67 3; -#X obj 350 456 print; -#X obj 316 358 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1 --1; -#X obj 515 455 print; -#X obj 484 381 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1 --1; -#X msg 188 204 1 3; -#X msg 345 155 help; -#X msg 350 320 set ret1; -#X msg 369 344 set ret2; -#X text 424 319 functions can be set; -#X msg 421 120 somewhere_past_mars; -#X text 152 101 reload with new arguments; -#X msg 40 104 reload 1 2 3; -#X text 21 69 This demonstrates simple scripting. See the script.py -file.; -#X obj 39 241 py script strcat; -#X obj 43 424 py script addall; -#X obj 350 420 py script; -#X obj 346 204 py script strlen; -#X msg 21 159 dir; -#X obj 146 279 print A; -#X msg 58 160 dir+; -#X obj 16 13 cnv 15 630 40 empty empty py/pyext 10 22 0 24 -260818 --1 0; -#X text 235 16 Python script objects \, (C)2003-2005 Thomas Grill; -#X text 235 32 http://grrrr.org/ext; -#X msg 509 178 a b c; -#X text 556 181 too many args; -#X text 505 372 just trigger without arguments; -#X msg 386 371 set ret4; -#X obj 516 419 py script ret3; -#X connect 2 0 24 1; -#X connect 3 0 21 1; -#X connect 4 0 21 1; -#X connect 6 0 22 1; -#X connect 7 0 22 1; -#X connect 9 0 23 0; -#X connect 11 0 35 0; -#X connect 12 0 21 1; -#X connect 13 0 24 0; -#X connect 14 0 23 0; -#X connect 15 0 23 0; -#X connect 17 0 24 1; -#X connect 19 0 21 0; -#X connect 21 0 0 0; -#X connect 21 1 26 0; -#X connect 22 0 5 0; -#X connect 23 0 8 0; -#X connect 24 0 1 0; -#X connect 25 0 21 0; -#X connect 27 0 21 0; -#X connect 31 0 24 1; -#X connect 34 0 23 0; -#X connect 35 0 10 0; diff --git a/externals/grill/py/pd/sendrecv-1.pd b/externals/grill/py/pd/sendrecv-1.pd deleted file mode 100644 index c2b8a500..00000000 --- a/externals/grill/py/pd/sendrecv-1.pd +++ /dev/null @@ -1,33 +0,0 @@ -#N canvas 145 126 658 333 12; -#X msg 125 81 reload mi ma; -#X floatatom 48 238 5 0 0 0 - - -; -#X floatatom 297 239 5 0 0 0 - - -; -#X obj 297 263 s mi; -#X floatatom 143 265 5 0 0 0 - - -; -#X floatatom 382 267 5 0 0 0 - - -; -#X obj 382 240 r ma; -#X obj 48 262 s he; -#X obj 143 238 r hu; -#X text 247 81 reload with different args; -#X msg 20 82 help; -#X msg 19 114 doc; -#X msg 58 114 doc+; -#X obj 49 165 pyext sendrecv ex1 he hu; -#X text 30 218 scroll here; -#X text 292 219 or here; -#X obj 16 13 cnv 15 600 40 empty empty py/pyext 10 22 0 24 -260818 --1 0; -#X msg 202 128 bind; -#X msg 249 129 unbind; -#X text 213 16 Python script objects \, (C)2003-2005 Thomas Grill; -#X text 213 32 http://grrrr.org/ext; -#X connect 0 0 13 0; -#X connect 1 0 7 0; -#X connect 2 0 3 0; -#X connect 6 0 5 0; -#X connect 8 0 4 0; -#X connect 10 0 13 0; -#X connect 11 0 13 0; -#X connect 12 0 13 0; -#X connect 17 0 13 1; -#X connect 18 0 13 1; diff --git a/externals/grill/py/pd/sendrecv-2.pd b/externals/grill/py/pd/sendrecv-2.pd deleted file mode 100644 index 77a6a466..00000000 --- a/externals/grill/py/pd/sendrecv-2.pd +++ /dev/null @@ -1,12 +0,0 @@ -#N canvas 133 322 647 189 12; -#X obj 152 98 pyext sendrecv ex2 huha; -#X floatatom 152 128 5 0 0 0 - - -; -#X floatatom 33 96 5 0 0 0 - - -; -#X obj 32 123 s huha; -#X text 20 77 scroll here; -#X obj 16 13 cnv 15 600 40 empty empty py/pyext 10 22 0 24 -260818 --1 0; -#X text 213 16 Python script objects \, (C)2003-2005 Thomas Grill; -#X text 213 32 http://grrrr.org/ext; -#X connect 0 0 1 0; -#X connect 2 0 3 0; diff --git a/externals/grill/py/pd/sendrecv-3.pd b/externals/grill/py/pd/sendrecv-3.pd deleted file mode 100644 index f43b7d94..00000000 --- a/externals/grill/py/pd/sendrecv-3.pd +++ /dev/null @@ -1,10 +0,0 @@ -#N canvas 294 237 648 327 12; -#X obj 410 265 pyext sendrecv ex3 @detach 1; -#X obj 611 236 bng 25 250 50 0 empty ugh empty 0 -6 0 8 -258699 -1 --1; -#X obj 16 13 cnv 15 600 40 empty empty py/pyext 10 22 0 24 -260818 --1 0; -#X text 213 16 Python script objects \, (C)2003-2005 Thomas Grill; -#X text 213 32 http://grrrr.org/ext; -#X text 414 213 quite likely not to work...; -#X connect 1 0 0 1; diff --git a/externals/grill/py/pd/sig-1.pd b/externals/grill/py/pd/sig-1.pd deleted file mode 100644 index 61342810..00000000 --- a/externals/grill/py/pd/sig-1.pd +++ /dev/null @@ -1,28 +0,0 @@ -#N canvas 52 147 663 315 12; -#X obj 56 234 dac~; -#X msg 523 211 \; pd dsp 1; -#X obj 524 184 loadbang; -#X obj 194 114 hsl 128 15 0.01 1 1 1 empty empty gain -2 -6 0 8 -225271 --1 -1 11200 1; -#X obj 89 116 noise~; -#X msg 21 116 reload; -#X obj 16 13 cnv 15 600 40 empty empty py/pyext 10 22 0 24 -260818 --1 0; -#X text 213 32 http://grrrr.org/ext; -#X text 213 16 Python script objects \, (C)2003-2005 Thomas Grill; -#X text 17 66 This demonstrates signal support. See the sig.py file. -; -#X obj 191 131 nbx 5 14 0.001 1 1 0 empty empty empty 0 -6 0 10 -225271 --1 -1 0.58047 256; -#X msg 192 148 set gain \$1; -#X text 123 202 message inlets \, outlets; -#X text 123 217 signal inlets \, outlets; -#X obj 67 181 pyext~ 0 0 1 1 sig gain2; -#X connect 2 0 1 0; -#X connect 3 0 10 0; -#X connect 4 0 14 0; -#X connect 5 0 14 0; -#X connect 10 0 11 0; -#X connect 11 0 14 0; -#X connect 14 0 0 0; -#X connect 14 0 0 1; diff --git a/externals/grill/py/pd/sig-2.pd b/externals/grill/py/pd/sig-2.pd deleted file mode 100644 index 699154d8..00000000 --- a/externals/grill/py/pd/sig-2.pd +++ /dev/null @@ -1,23 +0,0 @@ -#N canvas 56 67 663 315 12; -#X obj 121 246 dac~; -#X msg 523 211 \; pd dsp 1; -#X obj 524 184 loadbang; -#X obj 266 134 hsl 128 15 0 1 0 1 empty empty pan -2 -6 0 8 -225271 --1 -1 4700 1; -#X obj 100 127 noise~; -#X msg 31 127 reload; -#X obj 16 13 cnv 15 600 40 empty empty py/pyext 10 22 0 24 -260818 --1 0; -#X text 213 32 http://grrrr.org/ext; -#X text 213 16 Python script objects \, (C)2003-2005 Thomas Grill; -#X text 17 66 This demonstrates signal support. See the sig.py file. -; -#X obj 92 179 pyext~ 1 0 1 2 sig pan; -#X text 185 202 message inlets \, outlets; -#X text 183 218 signal inlets \, outlets; -#X connect 2 0 1 0; -#X connect 3 0 10 1; -#X connect 4 0 10 0; -#X connect 5 0 10 0; -#X connect 10 0 0 0; -#X connect 10 1 0 1; diff --git a/externals/grill/py/pd/simple-1.pd b/externals/grill/py/pd/simple-1.pd deleted file mode 100644 index bfe137de..00000000 --- a/externals/grill/py/pd/simple-1.pd +++ /dev/null @@ -1,45 +0,0 @@ -#N canvas 156 192 682 409 12; -#X obj 53 123 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 --1; -#X floatatom 52 155 5 0 0 0 - - -; -#X text 388 337 watch the console output!; -#X msg 52 186 2 3 4; -#X msg 277 131 ho; -#X msg 233 155 lets; -#X msg 283 190 go; -#X msg 212 214 !!!; -#X msg 205 113 hey; -#X obj 183 301 pyext simple ex1; -#X msg 434 114 onearg 123; -#X msg 456 167 threeargs 9 8 7; -#X msg 463 196 varargs 8 4 2 1; -#X msg 447 140 twoargs 41 15; -#X msg 453 239 twoargs 1 2 3; -#X msg 71 299 help; -#X text 16 69 This demonstrates message handling. See the simple.py -file.; -#X text 232 322 file class; -#X msg 70 324 doc; -#X msg 106 325 doc+; -#X obj 16 13 cnv 15 600 40 empty empty py/pyext 10 22 0 24 -260818 --1 0; -#X text 213 32 http://grrrr.org/ext; -#X text 213 16 Python script objects \, (C)2003-2005 Thomas Grill; -#X msg 41 246 reload; -#X connect 0 0 9 1; -#X connect 1 0 9 1; -#X connect 3 0 9 1; -#X connect 4 0 9 2; -#X connect 5 0 9 2; -#X connect 6 0 9 2; -#X connect 7 0 9 2; -#X connect 8 0 9 2; -#X connect 10 0 9 3; -#X connect 11 0 9 3; -#X connect 12 0 9 3; -#X connect 13 0 9 3; -#X connect 14 0 9 3; -#X connect 15 0 9 0; -#X connect 18 0 9 0; -#X connect 19 0 9 0; -#X connect 23 0 9 0; diff --git a/externals/grill/py/pd/simple-2.pd b/externals/grill/py/pd/simple-2.pd deleted file mode 100644 index 4c857d49..00000000 --- a/externals/grill/py/pd/simple-2.pd +++ /dev/null @@ -1,37 +0,0 @@ -#N canvas 570 275 788 398 12; -#X floatatom 202 113 5 0 0 0 - - -; -#X text 338 286 watch the console output!; -#X msg 20 115 help; -#X text 16 69 This demonstrates message handling. See the simple.py -file.; -#X msg 19 140 doc; -#X msg 55 141 doc+; -#X floatatom 259 113 5 0 0 0 - - -; -#X msg 169 235 msg 2; -#X obj 123 289 pyext simple ex2; -#X floatatom 123 334 5 0 0 0 - - -; -#X floatatom 240 335 5 0 0 0 - - -; -#X msg 100 204 msg 1 3; -#X msg 234 220 msg a b; -#X msg 120 174 hello; -#X msg 193 180 hello; -#X msg 266 179 msg; -#X obj 16 13 cnv 15 600 40 empty empty py/pyext 10 22 0 24 -260818 --1 0; -#X text 213 16 Python script objects \, (C)2003-2005 Thomas Grill; -#X text 213 32 http://grrrr.org/ext; -#X msg 333 186 whoopie a b c; -#X connect 0 0 8 1; -#X connect 2 0 8 0; -#X connect 4 0 8 0; -#X connect 5 0 8 0; -#X connect 6 0 8 2; -#X connect 7 0 8 2; -#X connect 8 0 9 0; -#X connect 8 1 10 0; -#X connect 11 0 8 1; -#X connect 12 0 8 3; -#X connect 13 0 8 1; -#X connect 14 0 8 3; -#X connect 15 0 8 2; -#X connect 19 0 8 3; diff --git a/externals/grill/py/pd/simple-3.pd b/externals/grill/py/pd/simple-3.pd deleted file mode 100644 index 5874991e..00000000 --- a/externals/grill/py/pd/simple-3.pd +++ /dev/null @@ -1,30 +0,0 @@ -#N canvas 136 275 657 369 12; -#X msg 73 266 help; -#X text 17 80 This demonstrates message handling. See the simple.py -file.; -#X msg 72 291 doc; -#X msg 108 292 doc+; -#X floatatom 258 305 5 0 0 0 - - -; -#X floatatom 316 119 5 0 0 0 - - -; -#X floatatom 399 119 5 0 0 0 - - -; -#X msg 24 182 reload.; -#X msg 24 210 reload -10; -#X text 95 181 reload script and keep arguments; -#X text 113 211 reload script with new arguments; -#X text 281 140 triggers; -#X text 310 304 result; -#X text 410 140 sets argument; -#X obj 16 13 cnv 15 600 40 empty empty py/pyext 10 22 0 24 -260818 --1 0; -#X text 213 16 Python script objects \, (C)2003-2005 Thomas Grill; -#X text 213 32 http://grrrr.org/ext; -#X obj 210 266 pyext simple.ex3 1; -#X text 369 258 the name can also be given in dotted Python style; -#X connect 0 0 17 0; -#X connect 2 0 17 0; -#X connect 3 0 17 0; -#X connect 5 0 17 1; -#X connect 6 0 17 2; -#X connect 7 0 17 0; -#X connect 8 0 17 0; -#X connect 17 0 4 0; diff --git a/externals/grill/py/pd/tcltk.pd b/externals/grill/py/pd/tcltk.pd deleted file mode 100644 index 368544e6..00000000 --- a/externals/grill/py/pd/tcltk.pd +++ /dev/null @@ -1,18 +0,0 @@ -#N canvas 156 192 614 333 12; -#X obj 328 118 bng 25 250 50 0 empty empty empty 0 -6 0 8 -258699 -1 --1; -#X msg 94 128 help; -#X msg 139 127 doc; -#X text 14 49 This demonstrates a tcl/tk dialog. See the tcltk.py file. -; -#X text 10 263 Note: When used concurrently with audio \, you will -notice clicks. This Tk window is NOT called over a net socket \, like -PD is; -#X obj 206 169 pyext tcltk myapp; -#X obj 206 200 print tcltk; -#X text 16 15 py/pyext - Python script objects \, (C)2002-2005 Thomas -Grill; -#X connect 0 0 5 1; -#X connect 1 0 5 0; -#X connect 2 0 5 0; -#X connect 5 0 6 0; diff --git a/externals/grill/py/pd/thread-1.pd b/externals/grill/py/pd/thread-1.pd deleted file mode 100644 index f2160cae..00000000 --- a/externals/grill/py/pd/thread-1.pd +++ /dev/null @@ -1,62 +0,0 @@ -#N canvas 135 178 652 409 12; -#X msg 35 292 help; -#X msg 34 317 doc; -#X msg 70 318 doc+; -#X floatatom 142 340 5 0 0 0 - - -; -#X text 17 66 This demonstrates threading. See the threads.py file. -; -#X obj 137 243 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 2 -2; -#X msg 137 263 detach \$1; -#X floatatom 250 341 5 0 0 0 - - -; -#X obj 272 150 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1 --1; -#X obj 143 154 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1 --1; -#X obj 143 181 t b b b; -#X obj 272 177 t b b b; -#X obj 286 206 1; -#X obj 157 208 0; -#X text 84 114 without threads; -#X text 248 112 with threads; -#X text 175 362 watch that!; -#X msg 421 264 stop; -#X text 391 243 you can even stop it; -#X obj 142 306 pyext threads ex1; -#X text 90 128 - blocking!! -; -#X obj 16 13 cnv 15 600 40 empty empty py/pyext 10 22 0 24 -260818 --1 0; -#X obj 407 150 bng 15 250 50 0 empty empty empty 0 -6 0 8 -258699 -1 --1; -#X obj 407 177 t b b b; -#X text 383 112 with threads; -#X text 249 129 non-blocking; -#X text 384 129 parallel; -#X obj 445 205 2; -#X text 213 32 http://grrrr.org/ext; -#X text 213 16 Python script objects \, (C)2003-2005 Thomas Grill; -#X msg 44 195 reload; -#X connect 0 0 19 0; -#X connect 1 0 19 0; -#X connect 2 0 19 0; -#X connect 5 0 6 0; -#X connect 6 0 19 0; -#X connect 8 0 11 0; -#X connect 9 0 10 0; -#X connect 10 0 19 1; -#X connect 10 1 19 2; -#X connect 10 2 13 0; -#X connect 11 0 19 1; -#X connect 11 1 19 2; -#X connect 11 2 12 0; -#X connect 12 0 5 0; -#X connect 13 0 5 0; -#X connect 17 0 19 0; -#X connect 19 0 3 0; -#X connect 19 1 7 0; -#X connect 22 0 23 0; -#X connect 23 0 19 1; -#X connect 23 1 19 2; -#X connect 23 2 27 0; -#X connect 27 0 5 0; -#X connect 30 0 19 0; diff --git a/externals/grill/py/py.vcproj b/externals/grill/py/py.vcproj deleted file mode 100644 index 76ee84a5..00000000 --- a/externals/grill/py/py.vcproj +++ /dev/null @@ -1,1347 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/externals/grill/py/py.xcode/project.pbxproj b/externals/grill/py/py.xcode/project.pbxproj deleted file mode 100644 index 48155944..00000000 --- a/externals/grill/py/py.xcode/project.pbxproj +++ /dev/null @@ -1,995 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 39; - objects = { - 089C1669FE841209C02AAC07 = { - buildSettings = { - }; - buildStyles = ( - 4F9091AC011F3BD104CA0E50, - 4F9091AD011F3BD104CA0E50, - ); - hasScannedForEncodings = 1; - isa = PBXProject; - mainGroup = 089C166AFE841209C02AAC07; - projectDirPath = ""; - targets = ( - E90E52E508092505001341AC, - E926B6D2089F75950034D534, - ); - }; - 089C166AFE841209C02AAC07 = { - children = ( - 08FB77ADFE841716C02AAC07, - 089C1671FE841209C02AAC07, - 19C28FB4FE9D528D11CA2CBB, - E926B6D4089F75950034D534, - ); - isa = PBXGroup; - name = py; - refType = 4; - sourceTree = ""; - }; - 089C1671FE841209C02AAC07 = { - children = ( - E9D6762D08FC61860039A6F6, - E9D6762E08FC61860039A6F6, - E9D6762F08FC61860039A6F6, - E9D6763008FC61860039A6F6, - E926B819089F78400034D534, - E926B817089F782F0034D534, - E90E52D208091F79001341AC, - E90E521108091CA5001341AC, - E90E51FB080919EC001341AC, - ); - isa = PBXGroup; - name = "External Frameworks and Libraries"; - refType = 4; - sourceTree = ""; - }; - 08FB77ADFE841716C02AAC07 = { - children = ( - E903AC8C09D32D03004755CA, - E903AC8D09D32D03004755CA, - E90043820887A302008AEAFC, - E90043830887A302008AEAFC, - E90043840887A302008AEAFC, - E90043850887A302008AEAFC, - E90043860887A302008AEAFC, - E90E51DB08091989001341AC, - E90E51DC08091989001341AC, - E90E51DD08091989001341AC, - E90E51DE08091989001341AC, - E90E51DF08091989001341AC, - E90E51E008091989001341AC, - E90E51E108091989001341AC, - E90E51E208091989001341AC, - E90E51E308091989001341AC, - E90E51E408091989001341AC, - E90E51E508091989001341AC, - E90E51E608091989001341AC, - E90E51E708091989001341AC, - E90E51E808091989001341AC, - E90E51E908091989001341AC, - E90E51EA08091989001341AC, - ); - isa = PBXGroup; - name = Source; - refType = 4; - sourceTree = ""; - }; -//080 -//081 -//082 -//083 -//084 -//190 -//191 -//192 -//193 -//194 - 19C28FB4FE9D528D11CA2CBB = { - children = ( - E90E52E608092505001341AC, - E926B6D3089F75950034D534, - ); - isa = PBXGroup; - name = Products; - refType = 4; - sourceTree = ""; - }; -//190 -//191 -//192 -//193 -//194 -//4F0 -//4F1 -//4F2 -//4F3 -//4F4 - 4F9091AC011F3BD104CA0E50 = { - buildSettings = { - COPY_PHASE_STRIP = NO; - DEBUGGING_SYMBOLS = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = "$(GCC_PREPROCESSOR_DEFINITIONS) FLEXT_DEBUG FLEXT_THREADS"; - LIBRARY_STYLE = STATIC; - OPTIMIZATION_CFLAGS = "-O0"; - ZERO_LINK = YES; - }; - isa = PBXBuildStyle; - name = Development; - }; - 4F9091AD011F3BD104CA0E50 = { - buildSettings = { - COPY_PHASE_STRIP = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_PREPROCESSOR_DEFINITIONS = "$(GCC_PREPROCESSOR_DEFINITIONS) FLEXT_SHARED"; - ZERO_LINK = NO; - }; - isa = PBXBuildStyle; - name = Deployment; - }; -//4F0 -//4F1 -//4F2 -//4F3 -//4F4 -//E90 -//E91 -//E92 -//E93 -//E94 - E90043820887A302008AEAFC = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = pyatom.cpp; - path = source/pyatom.cpp; - refType = 4; - sourceTree = ""; - }; - E90043830887A302008AEAFC = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = pyatom.h; - path = source/pyatom.h; - refType = 4; - sourceTree = ""; - }; - E90043840887A302008AEAFC = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = pybase.cpp; - path = source/pybase.cpp; - refType = 4; - sourceTree = ""; - }; - E90043850887A302008AEAFC = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = pybase.h; - path = source/pybase.h; - refType = 4; - sourceTree = ""; - }; - E90043860887A302008AEAFC = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = pymeth.cpp; - path = source/pymeth.cpp; - refType = 4; - sourceTree = ""; - }; - E90043870887A302008AEAFC = { - fileRef = E90043820887A302008AEAFC; - isa = PBXBuildFile; - settings = { - }; - }; - E90043880887A302008AEAFC = { - fileRef = E90043830887A302008AEAFC; - isa = PBXBuildFile; - settings = { - }; - }; - E90043890887A302008AEAFC = { - fileRef = E90043840887A302008AEAFC; - isa = PBXBuildFile; - settings = { - }; - }; - E900438A0887A302008AEAFC = { - fileRef = E90043850887A302008AEAFC; - isa = PBXBuildFile; - settings = { - }; - }; - E900438B0887A302008AEAFC = { - fileRef = E90043860887A302008AEAFC; - isa = PBXBuildFile; - settings = { - }; - }; - E903AC8C09D32D03004755CA = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = pybundle.cpp; - path = source/pybundle.cpp; - refType = 4; - sourceTree = ""; - }; - E903AC8D09D32D03004755CA = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = pybundle.h; - path = source/pybundle.h; - refType = 4; - sourceTree = ""; - }; - E903AC8E09D32D03004755CA = { - fileRef = E903AC8C09D32D03004755CA; - isa = PBXBuildFile; - settings = { - }; - }; - E903AC8F09D32D03004755CA = { - fileRef = E903AC8D09D32D03004755CA; - isa = PBXBuildFile; - settings = { - }; - }; - E903AC9009D32D03004755CA = { - fileRef = E903AC8C09D32D03004755CA; - isa = PBXBuildFile; - settings = { - }; - }; - E903AC9109D32D03004755CA = { - fileRef = E903AC8D09D32D03004755CA; - isa = PBXBuildFile; - settings = { - }; - }; - E90E51DB08091989001341AC = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = bound.cpp; - path = source/bound.cpp; - refType = 4; - sourceTree = ""; - }; - E90E51DC08091989001341AC = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = clmeth.cpp; - path = source/clmeth.cpp; - refType = 4; - sourceTree = ""; - }; - E90E51DD08091989001341AC = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = main.cpp; - path = source/main.cpp; - refType = 4; - sourceTree = ""; - }; - E90E51DE08091989001341AC = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = main.h; - path = source/main.h; - refType = 4; - sourceTree = ""; - }; - E90E51DF08091989001341AC = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = modmeth.cpp; - path = source/modmeth.cpp; - refType = 4; - sourceTree = ""; - }; - E90E51E008091989001341AC = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = py.cpp; - path = source/py.cpp; - refType = 4; - sourceTree = ""; - }; - E90E51E108091989001341AC = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = pyargs.cpp; - path = source/pyargs.cpp; - refType = 4; - sourceTree = ""; - }; - E90E51E208091989001341AC = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = pybuffer.cpp; - path = source/pybuffer.cpp; - refType = 4; - sourceTree = ""; - }; - E90E51E308091989001341AC = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = pybuffer.h; - path = source/pybuffer.h; - refType = 4; - sourceTree = ""; - }; - E90E51E408091989001341AC = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = pydsp.cpp; - path = source/pydsp.cpp; - refType = 4; - sourceTree = ""; - }; - E90E51E508091989001341AC = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = pyext.cpp; - path = source/pyext.cpp; - refType = 4; - sourceTree = ""; - }; - E90E51E608091989001341AC = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = pyext.h; - path = source/pyext.h; - refType = 4; - sourceTree = ""; - }; - E90E51E708091989001341AC = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = pyprefix.h; - path = source/pyprefix.h; - refType = 4; - sourceTree = ""; - }; - E90E51E808091989001341AC = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = pysymbol.cpp; - path = source/pysymbol.cpp; - refType = 4; - sourceTree = ""; - }; - E90E51E908091989001341AC = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.c.h; - name = pysymbol.h; - path = source/pysymbol.h; - refType = 4; - sourceTree = ""; - }; - E90E51EA08091989001341AC = { - fileEncoding = 30; - isa = PBXFileReference; - lastKnownFileType = sourcecode.cpp.cpp; - name = register.cpp; - path = source/register.cpp; - refType = 4; - sourceTree = ""; - }; - E90E51FB080919EC001341AC = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = Python.framework; - path = /System/Library/Frameworks/Python.framework; - refType = 0; - sourceTree = ""; - }; - E90E521108091CA5001341AC = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = ApplicationServices.framework; - path = /System/Library/Frameworks/ApplicationServices.framework; - refType = 0; - sourceTree = ""; - }; - E90E52D208091F79001341AC = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = vecLib.framework; - path = /System/Library/Frameworks/vecLib.framework; - refType = 0; - sourceTree = ""; - }; - E90E52E208092505001341AC = { - buildActionMask = 2147483647; - files = ( - E90E52E908092581001341AC, - E90E52EA08092581001341AC, - E90E52EB08092581001341AC, - E90E52EC08092581001341AC, - E90E52ED08092581001341AC, - E90043880887A302008AEAFC, - E900438A0887A302008AEAFC, - E903AC9109D32D03004755CA, - ); - isa = PBXHeadersBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E90E52E308092505001341AC = { - buildActionMask = 2147483647; - files = ( - E90E52EE0809258A001341AC, - E90E52EF0809258A001341AC, - E90E52F00809258A001341AC, - E90E52F10809258A001341AC, - E90E52F20809258A001341AC, - E90E52F30809258A001341AC, - E90E52F40809258A001341AC, - E90E52F50809258A001341AC, - E90E52F60809258A001341AC, - E90E52F70809258A001341AC, - E90E52F80809258A001341AC, - E90043870887A302008AEAFC, - E90043890887A302008AEAFC, - E900438B0887A302008AEAFC, - E903AC9009D32D03004755CA, - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E90E52E408092505001341AC = { - buildActionMask = 2147483647; - files = ( - E9D6763108FC619F0039A6F6, - E9D6763208FC619F0039A6F6, - E90E535B08092593001341AC, - E90E535D08092593001341AC, - E90E535E08092593001341AC, - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E90E52E508092505001341AC = { - buildPhases = ( - E90E52E208092505001341AC, - E90E52E308092505001341AC, - E90E52E408092505001341AC, - ); - buildRules = ( - ); - buildSettings = { - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - EXECUTABLE_EXTENSION = pd_darwin; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_MODEL_CPU = G4; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/pyprefix.h; - GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=2"; - HEADER_SEARCH_PATHS = "$(flext)/source $(PDApp)/src"; - INSTALL_PATH = "$(PDApp)/extra"; - LIBRARY_SEARCH_PATHS = "$(flext)/build"; - LIBRARY_STYLE = DYNAMIC; - OTHER_CFLAGS = ""; - OTHER_LDFLAGS = "-bundle_loader $(PDApp)/bin/pd"; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = py; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; - }; - dependencies = ( - ); - isa = PBXNativeTarget; - name = py.pd_darwin; - productName = py; - productReference = E90E52E608092505001341AC; - productType = "com.apple.product-type.library.dynamic"; - }; - E90E52E608092505001341AC = { - explicitFileType = "compiled.mach-o.dylib"; - includeInIndex = 0; - isa = PBXFileReference; - path = py.pd_darwin; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; - E90E52E908092581001341AC = { - fileRef = E90E51DE08091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E90E52EA08092581001341AC = { - fileRef = E90E51E308091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E90E52EB08092581001341AC = { - fileRef = E90E51E608091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E90E52EC08092581001341AC = { - fileRef = E90E51E708091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E90E52ED08092581001341AC = { - fileRef = E90E51E908091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E90E52EE0809258A001341AC = { - fileRef = E90E51DB08091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E90E52EF0809258A001341AC = { - fileRef = E90E51DC08091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E90E52F00809258A001341AC = { - fileRef = E90E51DD08091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E90E52F10809258A001341AC = { - fileRef = E90E51DF08091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E90E52F20809258A001341AC = { - fileRef = E90E51E008091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E90E52F30809258A001341AC = { - fileRef = E90E51E108091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E90E52F40809258A001341AC = { - fileRef = E90E51E208091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E90E52F50809258A001341AC = { - fileRef = E90E51E408091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E90E52F60809258A001341AC = { - fileRef = E90E51E508091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E90E52F70809258A001341AC = { - fileRef = E90E51E808091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E90E52F80809258A001341AC = { - fileRef = E90E51EA08091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E90E535B08092593001341AC = { - fileRef = E90E51FB080919EC001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E90E535D08092593001341AC = { - fileRef = E90E521108091CA5001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E90E535E08092593001341AC = { - fileRef = E90E52D208091F79001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E926B6CF089F75950034D534 = { - buildActionMask = 2147483647; - files = ( - E903AC8F09D32D03004755CA, - ); - isa = PBXResourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E926B6D0089F75950034D534 = { - buildActionMask = 2147483647; - files = ( - E926B6D8089F76D90034D534, - E926B6D9089F76D90034D534, - E926B6DA089F76D90034D534, - E926B6DB089F76D90034D534, - E926B6DC089F76D90034D534, - E926B6DD089F76D90034D534, - E926B6DE089F76D90034D534, - E926B6DF089F76D90034D534, - E926B6E0089F76D90034D534, - E926B6E1089F76D90034D534, - E926B6E2089F76D90034D534, - E926B6E3089F76D90034D534, - E926B6E4089F76D90034D534, - E926B6E5089F76D90034D534, - E926B6E6089F76D90034D534, - E926B6E7089F76D90034D534, - E926B6E8089F76D90034D534, - E926B6E9089F76D90034D534, - E926B6EA089F76D90034D534, - E926B6EB089F76D90034D534, - E926B6EC089F76D90034D534, - E903AC8E09D32D03004755CA, - ); - isa = PBXSourcesBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E926B6D1089F75950034D534 = { - buildActionMask = 2147483647; - files = ( - E9D6763308FC61A40039A6F6, - E9D6763408FC61A40039A6F6, - E926B833089F7CB50034D534, - E926B7B6089F77B90034D534, - E926B6F4089F77B20034D534, - E926B818089F782F0034D534, - E926B81A089F78400034D534, - ); - isa = PBXFrameworksBuildPhase; - runOnlyForDeploymentPostprocessing = 0; - }; - E926B6D2089F75950034D534 = { - buildPhases = ( - E926B6CF089F75950034D534, - E926B6D0089F75950034D534, - E926B6D1089F75950034D534, - ); - buildRules = ( - ); - buildSettings = { - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/pyprefix.h; - GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=1"; - GENERATE_PKGINFO_FILE = YES; - HEADER_SEARCH_PATHS = "$(flext)/source $(MaxSDK)/max-includes $(MaxSDK)/msp-includes"; - INFOPLIST_FILE = "py-Info.plist"; - LIBRARY_SEARCH_PATHS = "$(MaxSDK)/max-includes $(MaxSDK)/msp-includes"; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = py; - SECTORDER_FLAGS = ""; - SKIP_INSTALL = YES; - WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas"; - WRAPPER_EXTENSION = mxo; - }; - dependencies = ( - ); - isa = PBXNativeTarget; - name = py; - productName = py; - productReference = E926B6D3089F75950034D534; - productSettingsXML = " - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - py - CFBundleIdentifier - com.yourcompany.py - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - APPL - CFBundleSignature - ???? - CFBundleVersion - 1.0 - CSResourcesFileMapped - yes - - -"; - productType = "com.apple.product-type.bundle"; - }; - E926B6D3089F75950034D534 = { - explicitFileType = wrapper.cfbundle; - includeInIndex = 0; - isa = PBXFileReference; - path = py.mxo; - refType = 3; - sourceTree = BUILT_PRODUCTS_DIR; - }; - E926B6D4089F75950034D534 = { - isa = PBXFileReference; - lastKnownFileType = text.xml; - name = "py-Info.plist"; - path = "/Users/thomas/Develop/pdmax/py/py-Info.plist"; - refType = 0; - sourceTree = ""; - }; - E926B6D8089F76D90034D534 = { - fileRef = E90043820887A302008AEAFC; - isa = PBXBuildFile; - settings = { - }; - }; - E926B6D9089F76D90034D534 = { - fileRef = E90043830887A302008AEAFC; - isa = PBXBuildFile; - settings = { - }; - }; - E926B6DA089F76D90034D534 = { - fileRef = E90043840887A302008AEAFC; - isa = PBXBuildFile; - settings = { - }; - }; - E926B6DB089F76D90034D534 = { - fileRef = E90043850887A302008AEAFC; - isa = PBXBuildFile; - settings = { - }; - }; - E926B6DC089F76D90034D534 = { - fileRef = E90043860887A302008AEAFC; - isa = PBXBuildFile; - settings = { - }; - }; - E926B6DD089F76D90034D534 = { - fileRef = E90E51DB08091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E926B6DE089F76D90034D534 = { - fileRef = E90E51DC08091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E926B6DF089F76D90034D534 = { - fileRef = E90E51DD08091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E926B6E0089F76D90034D534 = { - fileRef = E90E51DE08091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E926B6E1089F76D90034D534 = { - fileRef = E90E51DF08091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E926B6E2089F76D90034D534 = { - fileRef = E90E51E008091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E926B6E3089F76D90034D534 = { - fileRef = E90E51E108091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E926B6E4089F76D90034D534 = { - fileRef = E90E51E208091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E926B6E5089F76D90034D534 = { - fileRef = E90E51E308091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E926B6E6089F76D90034D534 = { - fileRef = E90E51E408091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E926B6E7089F76D90034D534 = { - fileRef = E90E51E508091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E926B6E8089F76D90034D534 = { - fileRef = E90E51E608091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E926B6E9089F76D90034D534 = { - fileRef = E90E51E708091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E926B6EA089F76D90034D534 = { - fileRef = E90E51E808091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E926B6EB089F76D90034D534 = { - fileRef = E90E51E908091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E926B6EC089F76D90034D534 = { - fileRef = E90E51EA08091989001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E926B6F4089F77B20034D534 = { - fileRef = E90E52D208091F79001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E926B7B6089F77B90034D534 = { - fileRef = E90E51FB080919EC001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E926B817089F782F0034D534 = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = MaxAPI.framework; - path = /Library/Frameworks/MaxAPI.framework; - refType = 0; - sourceTree = ""; - }; - E926B818089F782F0034D534 = { - fileRef = E926B817089F782F0034D534; - isa = PBXBuildFile; - settings = { - }; - }; - E926B819089F78400034D534 = { - isa = PBXFileReference; - lastKnownFileType = wrapper.framework; - name = MaxAudioAPI.framework; - path = /Library/Frameworks/MaxAudioAPI.framework; - refType = 0; - sourceTree = ""; - }; - E926B81A089F78400034D534 = { - fileRef = E926B819089F78400034D534; - isa = PBXBuildFile; - settings = { - }; - }; - E926B833089F7CB50034D534 = { - fileRef = E90E521108091CA5001341AC; - isa = PBXBuildFile; - settings = { - }; - }; - E9D6762D08FC61860039A6F6 = { - isa = PBXFileReference; - lastKnownFileType = "compiled.mach-o.dylib"; - name = "libflext-max_d.dylib"; - path = "/usr/local/lib/libflext-max_d.dylib"; - refType = 0; - sourceTree = ""; - }; - E9D6762E08FC61860039A6F6 = { - isa = PBXFileReference; - lastKnownFileType = "compiled.mach-o.dylib"; - name = "libflext-max.dylib"; - path = "/usr/local/lib/libflext-max.dylib"; - refType = 0; - sourceTree = ""; - }; - E9D6762F08FC61860039A6F6 = { - isa = PBXFileReference; - lastKnownFileType = "compiled.mach-o.dylib"; - name = "libflext-pd_d.dylib"; - path = "/usr/local/lib/libflext-pd_d.dylib"; - refType = 0; - sourceTree = ""; - }; - E9D6763008FC61860039A6F6 = { - isa = PBXFileReference; - lastKnownFileType = "compiled.mach-o.dylib"; - name = "libflext-pd.dylib"; - path = "/usr/local/lib/libflext-pd.dylib"; - refType = 0; - sourceTree = ""; - }; - E9D6763108FC619F0039A6F6 = { - fileRef = E9D6762F08FC61860039A6F6; - isa = PBXBuildFile; - settings = { - }; - }; - E9D6763208FC619F0039A6F6 = { - fileRef = E9D6763008FC61860039A6F6; - isa = PBXBuildFile; - settings = { - }; - }; - E9D6763308FC61A40039A6F6 = { - fileRef = E9D6762D08FC61860039A6F6; - isa = PBXBuildFile; - settings = { - }; - }; - E9D6763408FC61A40039A6F6 = { - fileRef = E9D6762E08FC61860039A6F6; - isa = PBXBuildFile; - settings = { - }; - }; - }; - rootObject = 089C1669FE841209C02AAC07; -} diff --git a/externals/grill/py/py.xcodeproj/project.pbxproj b/externals/grill/py/py.xcodeproj/project.pbxproj deleted file mode 100644 index 29d99ee7..00000000 --- a/externals/grill/py/py.xcodeproj/project.pbxproj +++ /dev/null @@ -1,661 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 42; - objects = { - -/* Begin PBXBuildFile section */ - E90043870887A302008AEAFC /* pyatom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90043820887A302008AEAFC /* pyatom.cpp */; }; - E90043880887A302008AEAFC /* pyatom.h in Headers */ = {isa = PBXBuildFile; fileRef = E90043830887A302008AEAFC /* pyatom.h */; }; - E90043890887A302008AEAFC /* pybase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90043840887A302008AEAFC /* pybase.cpp */; }; - E900438A0887A302008AEAFC /* pybase.h in Headers */ = {isa = PBXBuildFile; fileRef = E90043850887A302008AEAFC /* pybase.h */; }; - E900438B0887A302008AEAFC /* pymeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90043860887A302008AEAFC /* pymeth.cpp */; }; - E903AC8E09D32D03004755CA /* pybundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E903AC8C09D32D03004755CA /* pybundle.cpp */; }; - E903AC8F09D32D03004755CA /* pybundle.h in Resources */ = {isa = PBXBuildFile; fileRef = E903AC8D09D32D03004755CA /* pybundle.h */; }; - E903AC9009D32D03004755CA /* pybundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E903AC8C09D32D03004755CA /* pybundle.cpp */; }; - E903AC9109D32D03004755CA /* pybundle.h in Headers */ = {isa = PBXBuildFile; fileRef = E903AC8D09D32D03004755CA /* pybundle.h */; }; - E90E52E908092581001341AC /* main.h in Headers */ = {isa = PBXBuildFile; fileRef = E90E51DE08091989001341AC /* main.h */; }; - E90E52EA08092581001341AC /* pybuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = E90E51E308091989001341AC /* pybuffer.h */; }; - E90E52EB08092581001341AC /* pyext.h in Headers */ = {isa = PBXBuildFile; fileRef = E90E51E608091989001341AC /* pyext.h */; }; - E90E52EC08092581001341AC /* pyprefix.h in Headers */ = {isa = PBXBuildFile; fileRef = E90E51E708091989001341AC /* pyprefix.h */; }; - E90E52ED08092581001341AC /* pysymbol.h in Headers */ = {isa = PBXBuildFile; fileRef = E90E51E908091989001341AC /* pysymbol.h */; }; - E90E52EE0809258A001341AC /* bound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51DB08091989001341AC /* bound.cpp */; }; - E90E52EF0809258A001341AC /* clmeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51DC08091989001341AC /* clmeth.cpp */; }; - E90E52F00809258A001341AC /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51DD08091989001341AC /* main.cpp */; }; - E90E52F10809258A001341AC /* modmeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51DF08091989001341AC /* modmeth.cpp */; }; - E90E52F20809258A001341AC /* py.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E008091989001341AC /* py.cpp */; }; - E90E52F30809258A001341AC /* pyargs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E108091989001341AC /* pyargs.cpp */; }; - E90E52F40809258A001341AC /* pybuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E208091989001341AC /* pybuffer.cpp */; }; - E90E52F50809258A001341AC /* pydsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E408091989001341AC /* pydsp.cpp */; }; - E90E52F60809258A001341AC /* pyext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E508091989001341AC /* pyext.cpp */; }; - E90E52F70809258A001341AC /* pysymbol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E808091989001341AC /* pysymbol.cpp */; }; - E90E52F80809258A001341AC /* register.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51EA08091989001341AC /* register.cpp */; }; - E90E535D08092593001341AC /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E90E521108091CA5001341AC /* ApplicationServices.framework */; }; - E90E535E08092593001341AC /* vecLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E90E52D208091F79001341AC /* vecLib.framework */; }; - E926B6D8089F76D90034D534 /* pyatom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90043820887A302008AEAFC /* pyatom.cpp */; }; - E926B6D9089F76D90034D534 /* pyatom.h in Sources */ = {isa = PBXBuildFile; fileRef = E90043830887A302008AEAFC /* pyatom.h */; }; - E926B6DA089F76D90034D534 /* pybase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90043840887A302008AEAFC /* pybase.cpp */; }; - E926B6DB089F76D90034D534 /* pybase.h in Sources */ = {isa = PBXBuildFile; fileRef = E90043850887A302008AEAFC /* pybase.h */; }; - E926B6DC089F76D90034D534 /* pymeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90043860887A302008AEAFC /* pymeth.cpp */; }; - E926B6DD089F76D90034D534 /* bound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51DB08091989001341AC /* bound.cpp */; }; - E926B6DE089F76D90034D534 /* clmeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51DC08091989001341AC /* clmeth.cpp */; }; - E926B6DF089F76D90034D534 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51DD08091989001341AC /* main.cpp */; }; - E926B6E0089F76D90034D534 /* main.h in Sources */ = {isa = PBXBuildFile; fileRef = E90E51DE08091989001341AC /* main.h */; }; - E926B6E1089F76D90034D534 /* modmeth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51DF08091989001341AC /* modmeth.cpp */; }; - E926B6E2089F76D90034D534 /* py.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E008091989001341AC /* py.cpp */; }; - E926B6E3089F76D90034D534 /* pyargs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E108091989001341AC /* pyargs.cpp */; }; - E926B6E4089F76D90034D534 /* pybuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E208091989001341AC /* pybuffer.cpp */; }; - E926B6E5089F76D90034D534 /* pybuffer.h in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E308091989001341AC /* pybuffer.h */; }; - E926B6E6089F76D90034D534 /* pydsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E408091989001341AC /* pydsp.cpp */; }; - E926B6E7089F76D90034D534 /* pyext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E508091989001341AC /* pyext.cpp */; }; - E926B6E8089F76D90034D534 /* pyext.h in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E608091989001341AC /* pyext.h */; }; - E926B6E9089F76D90034D534 /* pyprefix.h in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E708091989001341AC /* pyprefix.h */; }; - E926B6EA089F76D90034D534 /* pysymbol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E808091989001341AC /* pysymbol.cpp */; }; - E926B6EB089F76D90034D534 /* pysymbol.h in Sources */ = {isa = PBXBuildFile; fileRef = E90E51E908091989001341AC /* pysymbol.h */; }; - E926B6EC089F76D90034D534 /* register.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E90E51EA08091989001341AC /* register.cpp */; }; - E926B6F4089F77B20034D534 /* vecLib.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E90E52D208091F79001341AC /* vecLib.framework */; }; - E926B7B6089F77B90034D534 /* Python.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E90E51FB080919EC001341AC /* Python.framework */; }; - E926B818089F782F0034D534 /* MaxAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E926B817089F782F0034D534 /* MaxAPI.framework */; }; - E926B81A089F78400034D534 /* MaxAudioAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E926B819089F78400034D534 /* MaxAudioAPI.framework */; }; - E926B833089F7CB50034D534 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E90E521108091CA5001341AC /* ApplicationServices.framework */; }; - E9D6763308FC61A40039A6F6 /* libflext-max_d.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = E9D6762D08FC61860039A6F6 /* libflext-max_d.dylib */; }; - E9D6763408FC61A40039A6F6 /* libflext-max.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = E9D6762E08FC61860039A6F6 /* libflext-max.dylib */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - E90043820887A302008AEAFC /* pyatom.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pyatom.cpp; path = source/pyatom.cpp; sourceTree = ""; }; - E90043830887A302008AEAFC /* pyatom.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pyatom.h; path = source/pyatom.h; sourceTree = ""; }; - E90043840887A302008AEAFC /* pybase.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pybase.cpp; path = source/pybase.cpp; sourceTree = ""; }; - E90043850887A302008AEAFC /* pybase.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pybase.h; path = source/pybase.h; sourceTree = ""; }; - E90043860887A302008AEAFC /* pymeth.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pymeth.cpp; path = source/pymeth.cpp; sourceTree = ""; }; - E903AC8C09D32D03004755CA /* pybundle.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pybundle.cpp; path = source/pybundle.cpp; sourceTree = ""; }; - E903AC8D09D32D03004755CA /* pybundle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pybundle.h; path = source/pybundle.h; sourceTree = ""; }; - E90E51DB08091989001341AC /* bound.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = bound.cpp; path = source/bound.cpp; sourceTree = ""; }; - E90E51DC08091989001341AC /* clmeth.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = clmeth.cpp; path = source/clmeth.cpp; sourceTree = ""; }; - E90E51DD08091989001341AC /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = source/main.cpp; sourceTree = ""; }; - E90E51DE08091989001341AC /* main.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = main.h; path = source/main.h; sourceTree = ""; }; - E90E51DF08091989001341AC /* modmeth.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = modmeth.cpp; path = source/modmeth.cpp; sourceTree = ""; }; - E90E51E008091989001341AC /* py.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = py.cpp; path = source/py.cpp; sourceTree = ""; }; - E90E51E108091989001341AC /* pyargs.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pyargs.cpp; path = source/pyargs.cpp; sourceTree = ""; }; - E90E51E208091989001341AC /* pybuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pybuffer.cpp; path = source/pybuffer.cpp; sourceTree = ""; }; - E90E51E308091989001341AC /* pybuffer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pybuffer.h; path = source/pybuffer.h; sourceTree = ""; }; - E90E51E408091989001341AC /* pydsp.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pydsp.cpp; path = source/pydsp.cpp; sourceTree = ""; }; - E90E51E508091989001341AC /* pyext.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pyext.cpp; path = source/pyext.cpp; sourceTree = ""; }; - E90E51E608091989001341AC /* pyext.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pyext.h; path = source/pyext.h; sourceTree = ""; }; - E90E51E708091989001341AC /* pyprefix.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pyprefix.h; path = source/pyprefix.h; sourceTree = ""; }; - E90E51E808091989001341AC /* pysymbol.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pysymbol.cpp; path = source/pysymbol.cpp; sourceTree = ""; }; - E90E51E908091989001341AC /* pysymbol.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pysymbol.h; path = source/pysymbol.h; sourceTree = ""; }; - E90E51EA08091989001341AC /* register.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = register.cpp; path = source/register.cpp; sourceTree = ""; }; - E90E51FB080919EC001341AC /* Python.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Python.framework; path = /System/Library/Frameworks/Python.framework; sourceTree = ""; }; - E90E521108091CA5001341AC /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = ""; }; - E90E52D208091F79001341AC /* vecLib.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = vecLib.framework; path = /System/Library/Frameworks/vecLib.framework; sourceTree = ""; }; - E90E52E608092505001341AC /* py.pd_darwin */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = py.pd_darwin; sourceTree = BUILT_PRODUCTS_DIR; }; - E926B6D3089F75950034D534 /* py.mxo */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = py.mxo; sourceTree = BUILT_PRODUCTS_DIR; }; - E926B817089F782F0034D534 /* MaxAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MaxAPI.framework; path = /Library/Frameworks/MaxAPI.framework; sourceTree = ""; }; - E926B819089F78400034D534 /* MaxAudioAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MaxAudioAPI.framework; path = /Library/Frameworks/MaxAudioAPI.framework; sourceTree = ""; }; - E9D6762D08FC61860039A6F6 /* libflext-max_d.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libflext-max_d.dylib"; path = "/usr/local/lib/libflext-max_d.dylib"; sourceTree = ""; }; - E9D6762E08FC61860039A6F6 /* libflext-max.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libflext-max.dylib"; path = "/usr/local/lib/libflext-max.dylib"; sourceTree = ""; }; - E9D6762F08FC61860039A6F6 /* libflext-pd_d.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libflext-pd_d.dylib"; path = "/usr/local/lib/libflext-pd_d.dylib"; sourceTree = ""; }; - E9D6763008FC61860039A6F6 /* libflext-pd.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libflext-pd.dylib"; path = "/usr/local/lib/libflext-pd.dylib"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - E90E52E408092505001341AC /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E90E535D08092593001341AC /* ApplicationServices.framework in Frameworks */, - E90E535E08092593001341AC /* vecLib.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E926B6D1089F75950034D534 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E9D6763308FC61A40039A6F6 /* libflext-max_d.dylib in Frameworks */, - E9D6763408FC61A40039A6F6 /* libflext-max.dylib in Frameworks */, - E926B833089F7CB50034D534 /* ApplicationServices.framework in Frameworks */, - E926B7B6089F77B90034D534 /* Python.framework in Frameworks */, - E926B6F4089F77B20034D534 /* vecLib.framework in Frameworks */, - E926B818089F782F0034D534 /* MaxAPI.framework in Frameworks */, - E926B81A089F78400034D534 /* MaxAudioAPI.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 089C166AFE841209C02AAC07 /* py */ = { - isa = PBXGroup; - children = ( - 08FB77ADFE841716C02AAC07 /* Source */, - 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */, - 19C28FB4FE9D528D11CA2CBB /* Products */, - ); - name = py; - sourceTree = ""; - }; - 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = { - isa = PBXGroup; - children = ( - E9D6762D08FC61860039A6F6 /* libflext-max_d.dylib */, - E9D6762E08FC61860039A6F6 /* libflext-max.dylib */, - E9D6762F08FC61860039A6F6 /* libflext-pd_d.dylib */, - E9D6763008FC61860039A6F6 /* libflext-pd.dylib */, - E926B819089F78400034D534 /* MaxAudioAPI.framework */, - E926B817089F782F0034D534 /* MaxAPI.framework */, - E90E52D208091F79001341AC /* vecLib.framework */, - E90E521108091CA5001341AC /* ApplicationServices.framework */, - E90E51FB080919EC001341AC /* Python.framework */, - ); - name = "External Frameworks and Libraries"; - sourceTree = ""; - }; - 08FB77ADFE841716C02AAC07 /* Source */ = { - isa = PBXGroup; - children = ( - E903AC8C09D32D03004755CA /* pybundle.cpp */, - E903AC8D09D32D03004755CA /* pybundle.h */, - E90043820887A302008AEAFC /* pyatom.cpp */, - E90043830887A302008AEAFC /* pyatom.h */, - E90043840887A302008AEAFC /* pybase.cpp */, - E90043850887A302008AEAFC /* pybase.h */, - E90043860887A302008AEAFC /* pymeth.cpp */, - E90E51DB08091989001341AC /* bound.cpp */, - E90E51DC08091989001341AC /* clmeth.cpp */, - E90E51DD08091989001341AC /* main.cpp */, - E90E51DE08091989001341AC /* main.h */, - E90E51DF08091989001341AC /* modmeth.cpp */, - E90E51E008091989001341AC /* py.cpp */, - E90E51E108091989001341AC /* pyargs.cpp */, - E90E51E208091989001341AC /* pybuffer.cpp */, - E90E51E308091989001341AC /* pybuffer.h */, - E90E51E408091989001341AC /* pydsp.cpp */, - E90E51E508091989001341AC /* pyext.cpp */, - E90E51E608091989001341AC /* pyext.h */, - E90E51E708091989001341AC /* pyprefix.h */, - E90E51E808091989001341AC /* pysymbol.cpp */, - E90E51E908091989001341AC /* pysymbol.h */, - E90E51EA08091989001341AC /* register.cpp */, - ); - name = Source; - sourceTree = ""; - }; - 19C28FB4FE9D528D11CA2CBB /* Products */ = { - isa = PBXGroup; - children = ( - E90E52E608092505001341AC /* py.pd_darwin */, - E926B6D3089F75950034D534 /* py.mxo */, - ); - name = Products; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - E90E52E208092505001341AC /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - E90E52E908092581001341AC /* main.h in Headers */, - E90E52EA08092581001341AC /* pybuffer.h in Headers */, - E90E52EB08092581001341AC /* pyext.h in Headers */, - E90E52EC08092581001341AC /* pyprefix.h in Headers */, - E90E52ED08092581001341AC /* pysymbol.h in Headers */, - E90043880887A302008AEAFC /* pyatom.h in Headers */, - E900438A0887A302008AEAFC /* pybase.h in Headers */, - E903AC9109D32D03004755CA /* pybundle.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - E90E52E508092505001341AC /* py.pd_darwin */ = { - isa = PBXNativeTarget; - buildConfigurationList = E93C2D850A5DB6E70023B566 /* Build configuration list for PBXNativeTarget "py.pd_darwin" */; - buildPhases = ( - E90E52E208092505001341AC /* Headers */, - E90E52E308092505001341AC /* Sources */, - E90E52E408092505001341AC /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = py.pd_darwin; - productName = py; - productReference = E90E52E608092505001341AC /* py.pd_darwin */; - productType = "com.apple.product-type.library.dynamic"; - }; - E926B6D2089F75950034D534 /* py */ = { - isa = PBXNativeTarget; - buildConfigurationList = E93C2D890A5DB6E70023B566 /* Build configuration list for PBXNativeTarget "py" */; - buildPhases = ( - E926B6CF089F75950034D534 /* Resources */, - E926B6D0089F75950034D534 /* Sources */, - E926B6D1089F75950034D534 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = py; - productName = py; - productReference = E926B6D3089F75950034D534 /* py.mxo */; - productType = "com.apple.product-type.bundle"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 089C1669FE841209C02AAC07 /* Project object */ = { - isa = PBXProject; - buildConfigurationList = E93C2D8D0A5DB6E70023B566 /* Build configuration list for PBXProject "py" */; - hasScannedForEncodings = 1; - mainGroup = 089C166AFE841209C02AAC07 /* py */; - projectDirPath = ""; - targets = ( - E90E52E508092505001341AC /* py.pd_darwin */, - E926B6D2089F75950034D534 /* py */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - E926B6CF089F75950034D534 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E903AC8F09D32D03004755CA /* pybundle.h in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - E90E52E308092505001341AC /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E90E52EE0809258A001341AC /* bound.cpp in Sources */, - E90E52EF0809258A001341AC /* clmeth.cpp in Sources */, - E90E52F00809258A001341AC /* main.cpp in Sources */, - E90E52F10809258A001341AC /* modmeth.cpp in Sources */, - E90E52F20809258A001341AC /* py.cpp in Sources */, - E90E52F30809258A001341AC /* pyargs.cpp in Sources */, - E90E52F40809258A001341AC /* pybuffer.cpp in Sources */, - E90E52F50809258A001341AC /* pydsp.cpp in Sources */, - E90E52F60809258A001341AC /* pyext.cpp in Sources */, - E90E52F70809258A001341AC /* pysymbol.cpp in Sources */, - E90E52F80809258A001341AC /* register.cpp in Sources */, - E90043870887A302008AEAFC /* pyatom.cpp in Sources */, - E90043890887A302008AEAFC /* pybase.cpp in Sources */, - E900438B0887A302008AEAFC /* pymeth.cpp in Sources */, - E903AC9009D32D03004755CA /* pybundle.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E926B6D0089F75950034D534 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E926B6D8089F76D90034D534 /* pyatom.cpp in Sources */, - E926B6D9089F76D90034D534 /* pyatom.h in Sources */, - E926B6DA089F76D90034D534 /* pybase.cpp in Sources */, - E926B6DB089F76D90034D534 /* pybase.h in Sources */, - E926B6DC089F76D90034D534 /* pymeth.cpp in Sources */, - E926B6DD089F76D90034D534 /* bound.cpp in Sources */, - E926B6DE089F76D90034D534 /* clmeth.cpp in Sources */, - E926B6DF089F76D90034D534 /* main.cpp in Sources */, - E926B6E0089F76D90034D534 /* main.h in Sources */, - E926B6E1089F76D90034D534 /* modmeth.cpp in Sources */, - E926B6E2089F76D90034D534 /* py.cpp in Sources */, - E926B6E3089F76D90034D534 /* pyargs.cpp in Sources */, - E926B6E4089F76D90034D534 /* pybuffer.cpp in Sources */, - E926B6E5089F76D90034D534 /* pybuffer.h in Sources */, - E926B6E6089F76D90034D534 /* pydsp.cpp in Sources */, - E926B6E7089F76D90034D534 /* pyext.cpp in Sources */, - E926B6E8089F76D90034D534 /* pyext.h in Sources */, - E926B6E9089F76D90034D534 /* pyprefix.h in Sources */, - E926B6EA089F76D90034D534 /* pysymbol.cpp in Sources */, - E926B6EB089F76D90034D534 /* pysymbol.h in Sources */, - E926B6EC089F76D90034D534 /* register.cpp in Sources */, - E903AC8E09D32D03004755CA /* pybundle.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - E93C2D860A5DB6E70023B566 /* Development */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - DEBUGGING_SYMBOLS = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - EXECUTABLE_EXTENSION = pd_darwin; - FRAMEWORK_SEARCH_PATHS = /Library/Frameworks; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_MODEL_CPU = G4; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/pyprefix.h; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "FLEXT_SYS=2", - FLEXT_DEBUG, - FLEXT_SHARED, - ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(flext)/source", - "$(PD-devel)/src", - ); - INSTALL_PATH = "$(PDApp)/extra"; - LIBRARY_SEARCH_PATHS = "$(flext)/build"; - LIBRARY_STYLE = STATIC; - MACH_O_TYPE = mh_dylib; - OPTIMIZATION_CFLAGS = "-O0"; - OTHER_CFLAGS = ""; - OTHER_LDFLAGS = ( - "-undefined", - dynamic_lookup, - "-lflext-pd_d", - "-framework", - Python, - ); - OTHER_REZFLAGS = ""; - PRODUCT_NAME = py; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - ZERO_LINK = YES; - }; - name = Development; - }; - E93C2D870A5DB6E70023B566 /* Deployment */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - EXECUTABLE_EXTENSION = pd_darwin; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_MODEL_CPU = G4; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/pyprefix.h; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "FLEXT_SYS=2", - FLEXT_SHARED, - ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(flext)/source", - "$(PD-devel)/src", - ); - INSTALL_PATH = "$(PDApp)/extra"; - LIBRARY_SEARCH_PATHS = "$(flext)/build"; - LIBRARY_STYLE = DYNAMIC; - MACH_O_TYPE = mh_dylib; - OTHER_CFLAGS = ""; - OTHER_LDFLAGS = ( - "-undefined", - dynamic_lookup, - "-lflext-pd", - ); - OTHER_REZFLAGS = ""; - PRODUCT_NAME = py; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - ZERO_LINK = NO; - }; - name = Deployment; - }; - E93C2D880A5DB6E70023B566 /* Default */ = { - isa = XCBuildConfiguration; - buildSettings = { - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - EXECUTABLE_EXTENSION = pd_darwin; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_MODEL_CPU = G4; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/pyprefix.h; - GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=2"; - HEADER_SEARCH_PATHS = ( - "$(flext)/source", - "$(PD-devel)/src", - ); - INSTALL_PATH = "$(PDApp)/extra"; - LIBRARY_SEARCH_PATHS = "$(flext)/build"; - LIBRARY_STYLE = DYNAMIC; - MACH_O_TYPE = mh_dylib; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = py; - SECTORDER_FLAGS = ""; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - }; - name = Default; - }; - E93C2D8A0A5DB6E70023B566 /* Development */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = NO; - DEBUGGING_SYMBOLS = YES; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = YES; - GCC_GENERATE_DEBUGGING_SYMBOLS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/pyprefix.h; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "FLEXT_SYS=1", - FLEXT_SHARED, - ); - GENERATE_PKGINFO_FILE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(maxsdk)/max-includes", - "$(maxsdk)/msp-includes", - ); - INFOPLIST_FILE = "source/py-Info.plist"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(maxsdk)/max-includes", - "$(maxsdk)/msp-includes", - ); - LIBRARY_STYLE = STATIC; - OPTIMIZATION_CFLAGS = "-O0"; - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = py; - SECTORDER_FLAGS = ""; - SKIP_INSTALL = YES; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - WRAPPER_EXTENSION = mxo; - ZERO_LINK = YES; - }; - name = Development; - }; - E93C2D8B0A5DB6E70023B566 /* Deployment */ = { - isa = XCBuildConfiguration; - buildSettings = { - COPY_PHASE_STRIP = YES; - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/pyprefix.h; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "FLEXT_SYS=1", - FLEXT_SHARED, - ); - GENERATE_PKGINFO_FILE = YES; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "$(maxsdk)/max-includes", - "$(maxsdk)/msp-includes", - ); - INFOPLIST_FILE = "source/py-Info.plist"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(maxsdk)/max-includes", - "$(maxsdk)/msp-includes", - ); - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = py; - SECTORDER_FLAGS = ""; - SKIP_INSTALL = YES; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - WRAPPER_EXTENSION = mxo; - ZERO_LINK = NO; - }; - name = Deployment; - }; - E93C2D8C0A5DB6E70023B566 /* Default */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_ALTIVEC_EXTENSIONS = YES; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = source/pyprefix.h; - GCC_PREPROCESSOR_DEFINITIONS = "FLEXT_SYS=1"; - GENERATE_PKGINFO_FILE = YES; - HEADER_SEARCH_PATHS = ( - "$(flext)/source", - "$(MaxSDK)/max-includes", - "$(MaxSDK)/msp-includes", - ); - INFOPLIST_FILE = "py-Info.plist"; - LIBRARY_SEARCH_PATHS = ( - "$(MaxSDK)/max-includes", - "$(MaxSDK)/msp-includes", - ); - OTHER_CFLAGS = ""; - OTHER_REZFLAGS = ""; - PRODUCT_NAME = py; - SECTORDER_FLAGS = ""; - SKIP_INSTALL = YES; - WARNING_CFLAGS = ( - "-Wmost", - "-Wno-four-char-constants", - "-Wno-unknown-pragmas", - ); - WRAPPER_EXTENSION = mxo; - }; - name = Default; - }; - E93C2D8E0A5DB6E70023B566 /* Development */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - _DEBUG, - PY_NUMPY, - PY_USE_GIL, - ); - HEADER_SEARCH_PATHS = ( - "/Library/Python/2.3/site-packages/numpy/core/include/", - "$(lockfree)", - "$(flext)/source", - ); - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; - }; - name = Development; - }; - E93C2D8F0A5DB6E70023B566 /* Deployment */ = { - isa = XCBuildConfiguration; - buildSettings = { - ARCHS = ( - i386, - ppc, - ); - GCC_GENERATE_DEBUGGING_SYMBOLS = NO; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - NDEBUG, - PY_NUMPY, - PY_USE_GIL, - ); - HEADER_SEARCH_PATHS = ( - "/Library/Python/2.3/site-packages/numpy/core/include/", - "$(lockfree)", - "$(flext)/source", - ); - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; - }; - name = Deployment; - }; - E93C2D900A5DB6E70023B566 /* Default */ = { - isa = XCBuildConfiguration; - buildSettings = { - GCC_PREPROCESSOR_DEFINITIONS = PY_NUMPY; - SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; - }; - name = Default; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - E93C2D850A5DB6E70023B566 /* Build configuration list for PBXNativeTarget "py.pd_darwin" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E93C2D860A5DB6E70023B566 /* Development */, - E93C2D870A5DB6E70023B566 /* Deployment */, - E93C2D880A5DB6E70023B566 /* Default */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Default; - }; - E93C2D890A5DB6E70023B566 /* Build configuration list for PBXNativeTarget "py" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E93C2D8A0A5DB6E70023B566 /* Development */, - E93C2D8B0A5DB6E70023B566 /* Deployment */, - E93C2D8C0A5DB6E70023B566 /* Default */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Default; - }; - E93C2D8D0A5DB6E70023B566 /* Build configuration list for PBXProject "py" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E93C2D8E0A5DB6E70023B566 /* Development */, - E93C2D8F0A5DB6E70023B566 /* Deployment */, - E93C2D900A5DB6E70023B566 /* Default */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Default; - }; -/* End XCConfigurationList section */ - }; - rootObject = 089C1669FE841209C02AAC07 /* Project object */; -} diff --git a/externals/grill/py/readme.txt b/externals/grill/py/readme.txt deleted file mode 100644 index be168835..00000000 --- a/externals/grill/py/readme.txt +++ /dev/null @@ -1,222 +0,0 @@ -py/pyext - python script objects for PD and Max/MSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -Donations for further development of the package are highly appreciated. -Visit https://www.paypal.com/xclick/business=gr%40grrrr.org&item_name=pyext&no_note=1&tax=0¤cy_code=EUR - ----------------------------------------------------------------------------- - -You need to have Python installed on your system for the py/pyext external to work. -For Windows pick an up-to-date package from http://www.python.org . -For linux use the package manager. -For OS X keep things as the are - it has Python installed by default. - - -The py/pyext package should run with Python version >= 2.1. -It has been thoroughly tested with versions 2.2 to 2.5 - -The default build setting using PY_USE_GIL requires Python version >= 2.3. - -Check out the sample patches and scripts - ----------------------------------------------------------------------------- - -INSTALLATION -============ - -PD version >= 0.38 - Add "py" to the Startup items ("binaries to load") and add the folder "scripts" to the pd search path. -PD version < 0.38 - Load it as a library with e.g. "pd -lib py -path scripts" - -Max/MSP - Copy py-objectmappings.txt into the init folder and py.mxe (Windows) or py.mxo (OSX) into the externals folder. - ----------------------------------------------------------------------------- - -DESCRIPTION -=========== - -With the py object you can load python modules and execute the functions therein. -With the pyext you can use python classes to represent full-featured pd/Max message objects. -Multithreading (detached methods) is supported for both objects. -You can send messages to named objects or receive (with pyext) with Python methods. - - -Known bugs: -- The TCL/TK help patch is not usable under OSX. -- With standard PD 0.37, threaded py scripts will cause "Stack overflows" under some circumstances - -> use PD 0.38 or the devel_0_37 cvs branch instead -- It has been reported that pyext crashes on AMD64 with SSE enabled (for these CPUs, disable the respective compiler flags) - ----------------------------------------------------------------------------- - -BUILDING from source -==================== - -You will need the flext C++ layer for PD and Max/MSP externals to compile this. -See http://grrrr.org/ext/flext -Download, install and compile the package. -Afterwards you can proceed with building this external. - - -pd/Max - Windows - Microsoft Visual C, Borland C++, MinGW: ----------------------------------------------------------- -Start a command shell with your eventual build environment -(e.g. run vcvars32.bat for Microsoft Visual Studio) - -then run - ..\flext\build.bat -(you would have to substitute ..\flext with the respective path to the flext package) - - -pd/Max - OSX/Linux - GCC: -------------------------- -From a shell run -bash ../flext/build.sh -(you would have to substitute ../flext with the respective path to the flext package) - - ----------------------------------------------------------------------------- - -Python array support for py/pyext@Max/MSP: - -In the Max/MSP SDK change the file -4.5 headers\c74support\max-includes\ext_types.h, line 45 -from - typedef unsigned long UInt32; - typedef signed long SInt32; -to - typedef unsigned int UInt32; - typedef signed int SInt32; -to avoid a compile-time type definition clash. - ----------------------------------------------------------------------------- - -Version history: - -0.2.1: -- FIX: some simplifications in py and pyext -- ADD: Python objects can be sent/received through outlets/inlets -- ADD: py can have multiple inlets for multiple function arguments (right inlets are non-triggering) -- ADD: allow module.function syntax for py and pyext -- FIX: pyext: cleanup float vs. int ... first decision is made by tag, afterwards a conversion is tried -- ADD: pym: object-oriented object... Python methods for any object type -- ADD: py: allow all callables (also object constructors and builtins) -- ADD: py: enable Python built-in functions (like range, str etc.) -- ADD: sequence protocol for symbol type -- FIX: cleanup for outbound messages (e.g. symbol atoms instead of one-element general messages) -- FIX: better exception handling (no longer leaves reference to function object) and cleared misleading error message -- FIX: better definition of output values for atoms, lists and anythings -- FIX: much better detached method handling (one thread for all object instances!) -- ADD: open module file in editor on "edit" message (or shift-click (PD) or double click (Max)) -- FIX: _inlets and _outlets default to 0 if not given -- ADD: enable optimization of Python code in reease build -- CHG: _isthreaded is now a data member instead of a method -- FIX: more safety for calls where association python-pd has already been removed -- ADD: __str__ method for pyext, to enable print self calls -- ADD: enable symbol binding for all callables (not only functions and methods) -- ADD: Buffer.resize(frames,keep=1,zero=1) method -- ADD: py.Bundle class to support flext message bundles -- ADD: enable usage of compiled-only modules (.py[co]) -- ADD: enable usage of module packages (with module/__init__.py[co]) -- ADD: make use of the PyGILState_*() functions -- ADD: always run the Python interpreter in the background (to keep alive Python threads) -- ADD: added PY_USE_INOFFICIAL to enable usage of s_stuff.h PD header, to have access to search and help paths -- ADD: pyext: _init method is now called after __init__ (after inlets/outlets have been created) -- FIX: buffer protocol adapted to Python 2.5 - -0.2.0: -- ADD: handling of Python threads -- FIX: output of single atoms instead of 1-element lists -- ADD: new detach mechanism (call queue) -- ADD: support for Max/MSP @ OSX and Windows -- DEL: eliminated meaningless inchannels and outchannels methods -- ADD: enabled "int"-tags for pyext class functions -- ADD: py: when no function is given on the command line, let it be selected by message tag -- FIX: __init__ wasn't called on reload -- FIX: bound instance methods weren't correctly decref'd -- ADD: Python symbol type -- ADD: _del method in pyext-derived class can be used to clean up things on exit -- FIX: solved py->py messaging problem with lock count instead of message queuing -- ADD: buffer handling with optional numarray support (if present) -- ADD: new objects for dsp processing: pyext~,pyx~,pyext.~,pyx.~ -- FIX: correctly report Python errors while contructing the object - -0.1.4: -- ADD: better (and independent) handling of inlet and outlet count (as class variables or dynamically initialized in __init__) -- FIX: many memory leaks associated to ***GetItem stuff (big thanks to sven!) -- FIX: set "this" memory in object after reloading script -- ADD: _getvalue,_setvalue to access PD values -- FIX: don't shout when Python script returns PyNone -- ADD: alias creation names pyext. and pyx. take the script name also for the class name - -0.1.3: -- FIX: class variables are now set atomic if parameter list has only 1 element -- ADD: introduced shortcut "pyx" for pyext. -- ADD: arguments to the pyext class are now exposed as attributes "args" -- FIX: parameters to Python functions are treated as integers when they can be. -- ADD: inlet and outlet count can be given for pyext, python _inlet and _outlet members are ignored then -- FIX: crash if script or class names are non-strings -- FIX: long multi-line doc strings are now printed correctly -- FIX: message "doc+" for class/instance __doc__ now working -- FIX: improved/debugged handling of reference counts -- FIX: _pyext._send will now send anythings if feasible -- CHANGE: no more finalization - it's really not necessary... -- FIX: calling from unregistered threads (like flext helper thread) now works - -0.1.2: -- CHANGE: updates for flext 0.4.1 - method registering within class scope -- FIX: bugs in bound.cpp (object_free calls) -- FIX: bug with threaded methods along with flext bug fix. -- ADD: map Python threads to system threads -- ADD: shut down the Python interpreter appropriately -- CHANGE: use flext timer and bind functionality -- ADD: attribute functionality -- ADD: dir and dir+ methods for Python dictionary listing -- ADD: get and set methods for Python class attributes - -0.1.1: -- CHANGE: updates for flext 0.4.0 -- FIX: crash when module couldn't be loaded -- FIX: GetBound method (modmeth.cpp, line 138) doesn't exist in flext any more -- FIX: deadlock occured when connecting two py/pyext boxes in non-detached mode -- ADD: current path and path of the canvas is added to the python path -- FIX: path is not added to python path if already included - -0.1.0: -- completely reworked all code -- added class functionality for full-featured objects and renamed the merge to pyext -- enabled threads and made everything thread-safe ... phew! -- using flext 0.3.2 -- pyext now gets full python path -- python's argv[0] is now "py" or "pyext" -- etc.etc. - -0.0.2: -- fixed bug when calling script with no function defined (thanks to Ben Saylor) -- cleaner gcc makefile - -0.0.1: -- using flext 0.2.1 - ---------------------------------------------------------------------------- - -TODO list: - -bugs: -- crashes with long Python printouts - -general: -- Documentation and better example patches -- better error reporting for runtime errors -- we should pre-scan and cache class methods - -features: -- enable multiple interpreters? ( -> not possible within one thread) -- options to fully detach a script (included initialization and finalization) -- stop individual threads -- support named (keyword) arguments (like attributes for messages) - -tests: -- compile-time check for python threading support diff --git a/externals/grill/py/scripts/buffer.py b/externals/grill/py/scripts/buffer.py deleted file mode 100644 index 46c47991..00000000 --- a/externals/grill/py/scripts/buffer.py +++ /dev/null @@ -1,60 +0,0 @@ -# py/pyext - python script objects for PD and MaxMSP -# -# Copyright (c) 2002-2005 Thomas Grill (gr@grrrr.org) -# For information on usage and redistribution, and for a DISCLAIMER OF ALL -# WARRANTIES, see the file, "license.txt," in this distribution. -# - -"""This is an example script for the py/pyext object's buffer support. - -PD/Max buffers can be mapped to Python arrays. -Currently, there are three implementations: -Numeric, numarray and Numeric3 (for all of them see http://numeric.scipy.org) -""" - -import sys - -try: - import pyext -except: - print "ERROR: This script must be loaded by the PD/Max py/pyext external" - -try: - from numarray import * -except: - print "Failed importing numarray module:",sys.exc_value - -def mul(*args): - # create buffer objects - # as long as these variables live the underlying buffers are locked - c = pyext.Buffer(args[0]) - a = pyext.Buffer(args[1]) - b = pyext.Buffer(args[2]) - - # slicing causes Python arrays (mapped to buffers) to be created - # note the c[:] - to assign contents you must assign to a slice of the buffer - c[:] = a[:]*b[:] - -def add(*args): - c = pyext.Buffer(args[0]) - a = pyext.Buffer(args[1]) - b = pyext.Buffer(args[2]) - - # this is also possible, but is probably slower - # the + converts a into a Python array, the argument b is taken as a sequence - # depending on the implementation this may be as fast - # as above or not - c[:] = a+b - -def fadein(target): - a = pyext.Buffer(target) - # in place operations are ok - a *= arange(len(a),type=Float32)/len(a) - -def neg(target): - a = pyext.Buffer(target) - # in place transformation (see Python array ufuncs) - negative(a[:],a[:]) - # must mark buffer content as dirty to update graph - # (no explicit assignment occurred) - a.dirty() diff --git a/externals/grill/py/scripts/pak.py b/externals/grill/py/scripts/pak.py deleted file mode 100644 index 6394570d..00000000 --- a/externals/grill/py/scripts/pak.py +++ /dev/null @@ -1,14 +0,0 @@ -import pyext - -class pak(pyext._class): - def __init__(self,n): - # n should be type-checked - self._inlets = n - self._outlets = 1 - # initialize list - self.lst = [0 for x in range(n)] - - def _anything_(self,n,arg): - # arg should be type-checked! - self.lst[n-1] = arg - self._outlet(1,self.lst) diff --git a/externals/grill/py/scripts/script.py b/externals/grill/py/scripts/script.py deleted file mode 100644 index ff41730f..00000000 --- a/externals/grill/py/scripts/script.py +++ /dev/null @@ -1,48 +0,0 @@ -# py/pyext - python script objects for PD and MaxMSP -# -# Copyright (c) 2002-2005 Thomas Grill (gr@grrrr.org) -# For information on usage and redistribution, and for a DISCLAIMER OF ALL -# WARRANTIES, see the file, "license.txt," in this distribution. -# - -"""Several functions to show the py script functionality""" - -import sys - -print "Script initialized" - -try: - print "Script arguments: ",sys.argv -except: - print - -def numargs(*args): # variable argument list - """Return the number of arguments""" - return len(args) - -def strlen(arg): - """Return the string length""" - # we must convert to string first (it's a symbol type most likely) - return len(str(arg)) - - -def strcat(*args): - """Concatenate several symbols""" - return reduce(lambda a,b: a+str(b), args,"") - -def addall(*args): # variable argument list - """Add a couple of numbers""" - return reduce(lambda a,b: a+b, args,0) - - -def ret1(): - return 1,2,3,4 - - -def ret2(): - return "sd","lk","ki" - - -def ret3(): - return ["sd","lk","ki"] - diff --git a/externals/grill/py/scripts/sendrecv.py b/externals/grill/py/scripts/sendrecv.py deleted file mode 100644 index 9d873bae..00000000 --- a/externals/grill/py/scripts/sendrecv.py +++ /dev/null @@ -1,180 +0,0 @@ -# py/pyext - python script objects for PD and MaxMSP -# -# Copyright (c) 2002-2005 Thomas Grill (gr@grrrr.org) -# For information on usage and redistribution, and for a DISCLAIMER OF ALL -# WARRANTIES, see the file, "license.txt," in this distribution. -# - -"""This is an example script for the py/pyext object's send/receive functionality. - -You can: -- bind - - -There are several classes exposing py/pyext features: -- ex1: A class receiving messages and sending them out again -- ex2: A class receiving messages and putting them out to an outlet -- ex3: Do some PD scripting - -""" - -try: - import pyext -except: - print "ERROR: This script must be loaded by the PD/Max pyext external" - - -from time import sleep - -################################################################# - -def recv_gl(arg): - """This is a global receive function, it has no access to class members.""" - print "GLOBAL",arg - -class ex1(pyext._class): - """Example of a class which receives and sends messages - - It has two creation arguments: a receiver and a sender name. - There are no inlets and outlets. - Python functions (one global function, one class method) are bound to PD's or Max/MSP's receive symbols. - The class method sends the received messages out again. - """ - - - # no inlets and outlets - _inlets=1 - _outlets=0 - - recvname="" - sendname="" - - def recv(self,*arg): - """This is a class-local receive function, which has access to class members.""" - - # print some stuff - print "CLASS",self.recvname,arg - - # send data to specified send address - self._send(self.sendname,arg) - - - def __init__(self,*args): - """Class constructor""" - - # store sender/receiver names - if len(args) >= 1: self.recvname = args[0] - if len(args) >= 2: self.sendname = args[1] - - self.bind_1() - - def bind_1(self): - # bind functions to receiver names - # both are called upon message - self._bind(self.recvname,self.recv) - self._bind(self.recvname,recv_gl) - - def unbind_1(self): - self._unbind(self.recvname,self.recv) - self._unbind(self.recvname,recv_gl) - - def __del__(self): - """Class destructor""" - - # unbinding is automatically done at destruction - pass - - -################################################################# - -class ex2(pyext._class): - """Example of a class which receives a message and forwards it to an outlet - - It has one creation argument: the receiver name. - """ - - - # define inlets and outlets - _inlets=0 - _outlets=1 - - recvname="" - - def recv(self,*arg): - """This is a class-local receive function""" - - # send received data to outlet - self._outlet(1,arg) - - - def __init__(self,rname): - """Class constructor""" - - # store receiver names - self.recvname = rname - - # bind function to receiver name - self._bind(self.recvname,self.recv) - - -################################################################# - -from math import pi -from cmath import exp -from random import random,randint - -class ex3(pyext._class): - """Example of a class which does some object manipulation by scripting""" - - - # define inlets and outlets - _inlets=1 - _outlets=0 - - def __init__(self): - """Class constructor""" - - # called scripting method should run on its own thread - if self._isthreaded: - print "Threading is on" - self._detach(1) - - def bang_1(self): - """Do some scripting - PD only!""" - - num = 12 # number of objects - ori = complex(150,180) # origin - rad = 100 # radius - l = range(num) # initialize list - - # make flower - self._tocanvas("obj",ori.real,ori.imag,"bng",20,250,50,0,"empty","yeah","empty",0,-6,64,8,-24198,-1,-1) - for i in xrange(num): - l[i] = ori+rad*exp(complex(0,i*2*pi/num)) - self._tocanvas("obj",l[i].real,l[i].imag,"bng",15,250,50,0,"empty","yeah"+str(i),"empty",0,-6,64,8,0,-1,-1) - self._tocanvas("connect",6,0,7+i,0) - - # blink - for i in range(10): - self._send("yeah","bang") - sleep(1./(i+1)) - - # move objects around - for i in xrange(200): - ix = randint(0,num-1) - l[ix] = ori+rad*complex(2*random()-1,2*random()-1) - self._send("yeah"+str(ix),"pos",l[ix].real,l[ix].imag) - sleep(0.02) - - # now delete - # this is not well-done... from time to time an object remains - self._tocanvas("editmode",1) - for i in xrange(num): - self._tocanvas("mouse",l[i].real,l[i].imag,0,0) - self._tocanvas("cut") - - self._tocanvas("mouse",ori.real+1,ori.imag+1,0,0) - self._tocanvas("cut") - - self._tocanvas("editmode",0) - diff --git a/externals/grill/py/scripts/sig.py b/externals/grill/py/scripts/sig.py deleted file mode 100644 index 09be7b66..00000000 --- a/externals/grill/py/scripts/sig.py +++ /dev/null @@ -1,100 +0,0 @@ -# py/pyext - python script objects for PD and MaxMSP -# -# Copyright (c) 2002-2005 Thomas Grill (gr@grrrr.org) -# For information on usage and redistribution, and for a DISCLAIMER OF ALL -# WARRANTIES, see the file, "license.txt," in this distribution. -# - -"""This is an example script for the py/pyext signal support. - -For numarray see http://numeric.scipy.org -It will probably once be replaced by Numeric(3) -""" - -try: - import pyext -except: - print "ERROR: This script must be loaded by the PD/Max py/pyext external" - -try: - import psyco - psyco.full() - print "Using JIT compilation" -except: - # don't care - pass - -import sys,math - -try: - import numarray -except: - print "Failed importing numarray module:",sys.exc_value - - -class gain(pyext._class): - """Just a simple gain stage""" - - gain = 0 - - def _signal(self): - # Multiply input vector by gain and copy to output - try: - self._outvec(0)[:] = self._invec(0)*self.gain - except: - pass - - -class gain2(pyext._class): - """More optimized version""" - - gain = 0 - - def _dsp(self): - if not self._arraysupport(): - print "No DSP support" - return False - - # cache vectors in this scope - self.invec = self._invec(0) - self.outvec = self._outvec(0) - # initialize _signal method here for optimized version - if self.invec is self.outvec: - self._signal = self.signal1 - else: - self._signal = self.signal2 - return True - - def signal1(self): - # Multiply signal vector in place - self.outvec *= self.gain - - def signal2(self): - # Multiply input vector by gain and copy to output - self.outvec[:] = self.invec*self.gain - - -class pan(pyext._class): - """Stereo panning""" - - def __init__(self): - self.float_1(0.5) - - def float_1(self,pos): - """pos ranges from 0 to 1""" - x = pos*math.pi/2 - self.fl = math.cos(x) - self.fr = math.sin(x) - - def _dsp(self): - # if _dsp is present it must return True to enable DSP - return pyext._arraysupport() - - def _signal(self): - # Multiply input vector by gain and copy to output - iv = self._invec(0) - # first process right output channel because left one could be - # identical to input - # we could also test with 'self._outvec(1)[:] is iv' - self._outvec(1)[:] = iv*self.fr - self._outvec(0)[:] = iv*self.fl diff --git a/externals/grill/py/scripts/simple.py b/externals/grill/py/scripts/simple.py deleted file mode 100644 index 1aa211c5..00000000 --- a/externals/grill/py/scripts/simple.py +++ /dev/null @@ -1,214 +0,0 @@ -# py/pyext - python script objects for PD and MaxMSP -# -# Copyright (c) 2002-2007 Thomas Grill (gr@grrrr.org) -# For information on usage and redistribution, and for a DISCLAIMER OF ALL -# WARRANTIES, see the file, "license.txt," in this distribution. -# - -"""This is an example script for the py/pyext object's basic functionality. - -pyext Usage: -- Import pyext - -- Inherit your class from pyext._class - -- Specfiy the number of inlets and outlets: - Use the class members (variables) _inlets and _outlets - If not given they default to 1 - You can also use class methods with the same names to return the respective number - -- Constructors/Destructors - You can specify an __init__ constructor and/or an __del__ destructor. - The constructor will be called with the object's arguments - - e.g. if your PD or MaxMSP object looks like - [pyext script class arg1 arg2 arg3] - - then the __init__(self,*args) function will be called with a tuple argument - args = (arg1,arg2,arg3) - With this syntax, you will have to give at least one argument. - By defining the constructor as __init__(self,*args) you can also initialize - the class without arguments. - -- Methods called by pyext - The general format is 'tag_inlet(self,arg)' resp. 'tag_inlet(self,*args)': - tag is the PD or MaxMSP message header.. either bang, float, list etc. - inlet is the inlet (starting from 1) from which messages are received. - args is a tuple which corresponds to the content of the message. args can be omitted. - - The inlet index can be omitted. The method name then has the format 'tag_(self,inlet,args)'. - Here, the inlet index is a additional parameter to the method - - You can also set up methods which react on any message. These have the special forms - _anything_inlet(self,*args) - or - _anything_(self,inlet,*args) - - Please see below for examples. - - Any return values are ignored - use _outlet (see below). - - Generally, you should avoid method_, method_xx forms for your non-pyext class methods. - Identifiers (variables and functions) with leading underscores are reserved for pyext. - -- Send messages to outlets: - Use the inherited _outlet method. - You can either use the form - self._outlet(outlet,arg1,arg2,arg3,arg4) ... where all args are atoms (no sequence types!) - or - self._outlet(outlet,arg) ... where arg is a sequence containing only atoms - - Do not use _outlet inside __init__, since the outlets have not been created at that time. - -- Use pyext functions and methods: - See the __doc__ strings of the pyext module and the pyext._class base class. - -""" - -try: - import pyext -except: - print "ERROR: This script must be loaded by the PD/Max pyext external" - -################################################################# - -class ex1(pyext._class): - """Example of a simple class which receives messages and prints to the console""" - - # number of inlets and outlets - _inlets=3 - _outlets=0 - - - # methods for first inlet - - def bang_1(self): - print "Bang into first inlet" - - def int_1(self,f): - print "Integer",f,"into first inlet" - - def float_1(self,f): - print "Float",f,"into first inlet" - - def list_1(self,*s): - print "List",s,"into first inlet" - - - # methods for second inlet - - def hey_2(self): - print "Tag 'hey' into second inlet" - - def ho_2(self): - print "Tag 'ho' into second inlet" - - def lets_2(self): - print "Tag 'lets' into second inlet" - - def go_2(self): - print "Tag 'go' into second inlet" - - def _anything_2(self,*args): - print "Some other message into second inlet:",args - - - # methods for third inlet - - def onearg_3(self,a): - print "Tag 'onearg' into third inlet:",a - - def twoargs_3(self,*a): - if len(a) == 2: - print "Tag 'twoargs' into third inlet:",a[0],a[1] - else: - print "Tag 'twoargs': wrong number of arguments" - - def threeargs_3(self,*a): - if len(a) == 3: - print "Tag 'threeargs' into third inlet",a[0],a[1],a[2] - else: - print "Tag 'threeargs': wrong number of arguments" - - def varargs_3(self,*args): - # with *args there can be arguments or not - - print "Tag 'varargs' into third inlet",args - - - -################################################################# - -class ex2(pyext._class): - """Example of a simple class which receives messages and writes to outlets""" - - # number of inlets and outlets - _inlets=3 - _outlets=2 - - # methods for all inlets - - def hello_(self,n): - print "Tag 'hello' into inlet",n - - def _anything_(self,n,*args): - print "Message into inlet",n,":",args - - - # methods for first inlet - - def float_1(self,f): - self._outlet(2,f) - - # methods for second inlet - - def float_2(self,f): - self._outlet(1,f) - - -################################################################# - -# helper function - determine whether argument is a numeric type -def isNumber(value): - import types - if type(value) in (types.FloatType, types.IntType, types.LongType): - return 1 - else: - return 0 - - -class ex3(pyext._class): - """Example of a simple class doing a typical number addition - - It uses a constructor and a class member as temporary storage. - """ - - # number of inlets and outlets - _inlets=2 - _outlets=1 - - # temporary storage - tmp=0 - - # constructor - def __init__(self,*args): - if len(args) == 1: - if isNumber(args[0]): - self.tmp = args[0] - else: - print "ex3: __init__ has superfluous arguments" - - # methods - - def float_1(self,f): - self._outlet(1,self.tmp+f) - - def float_2(self,f): - self.tmp = f - - # handlers for MaxMSP int type - def int_1(self,f): - self.float_1(f) - - def int_2(self,f): - self.float_2(f) diff --git a/externals/grill/py/scripts/tcltk.py b/externals/grill/py/scripts/tcltk.py deleted file mode 100644 index 08131995..00000000 --- a/externals/grill/py/scripts/tcltk.py +++ /dev/null @@ -1,81 +0,0 @@ -# py/pyext - python script objects for PD and MaxMSP -# -# Copyright (c) 2002-2003 Thomas Grill (xovo@gmx.net) -# For information on usage and redistribution, and for a DISCLAIMER OF ALL -# WARRANTIES, see the file, "license.txt," in this distribution. -# - -"""This is an example script for showing a nonsense tcl/tk application.""" - -try: - import pyext -except: - print "ERROR: This script must be loaded by the PD/Max pyext external" - -from Tkinter import * -import random - - -class Application(Frame): - """This is the TK application class""" - - # Button pressed - def say_hi(self): - self.extcl._outlet(1,"hi there, everyone!") - - # Mouse motion over canvas - def evfunc(self, ev): - x = random.uniform(-3,3) - y = random.uniform(-3,3) - self.mcanv.move('group',x,y) - - # Create interface stuff - def createWidgets(self): - self.hi = Button(self) - self.hi["text"] = "Hi!" - self.hi["fg"] = "red" - self.hi["command"] = self.say_hi - self.hi.pack({"side": "left"}) - - self.mcanv = Canvas(self) - self.mcanv.pack({"side": "left"}) - self.mcanv.bind("", self.evfunc) - self.mcanv.create_rectangle(50,50,200,200) - r = self.mcanv.create_rectangle(50,50,200,200) - self.mcanv.addtag_withtag('group',r) - - for i in xrange(500): - x = random.uniform(50,200) - y = random.uniform(50,200) - l = self.mcanv.create_line(x,y,x+1,y) - self.mcanv.addtag_withtag('group',l) - - # Constructor - def __init__(self,cl): - self.extcl = cl - Frame.__init__(self) - self.pack() - self.createWidgets() - pass - - -# derive class from pyext._class - -class myapp(pyext._class): - """This class demonstrates how a TCL/TK can be openened from within a pyext external""" - - # how many inlets and outlets? - _inlets = 1 - _outlets = 1 - - # Constructor - def __init__(self): - # detach bang method - self._detach(1) - - def bang_1(self): - self._priority(-3) - # display the tcl/tk dialog - app = Application(self) - app.mainloop() - diff --git a/externals/grill/py/scripts/threads.py b/externals/grill/py/scripts/threads.py deleted file mode 100644 index b0299101..00000000 --- a/externals/grill/py/scripts/threads.py +++ /dev/null @@ -1,50 +0,0 @@ -# py/pyext - python script objects for PD and MaxMSP -# -# Copyright (c) 2002-2003 Thomas Grill (xovo@gmx.net) -# For information on usage and redistribution, and for a DISCLAIMER OF ALL -# WARRANTIES, see the file, "license.txt," in this distribution. -# - -"""This is an example script for the py/pyext object's threading functionality. - -For threading support pyext exposes several function and variables - -- _detach([0/1]): by enabling thread detaching, threads will run in their own threads -- _priority(prio+-): you can raise or lower the priority of the current thread -- _stop({wait time in ms}): stop all running threads (you can additionally specify a wait time in ms) -- _shouldexit: this is a flag which indicates that the running thread should terminate - -""" - -try: - import pyext -except: - print "ERROR: This script must be loaded by the PD/Max pyext external" - -from time import sleep - -################################################################# - -class ex1(pyext._class): - """This is a simple class with one method looping over time.""" - - # number of inlets and outlets - _inlets=2 - _outlets=2 - - sltime=0.1 # sleep time - loops=20 # loops to iterate - - # method for bang to any inlet - def bang_(self,n): - for i in xrange(self.loops): - # if _shouldexit is true, the thread ought to stop - if self._shouldexit: - print "BREAK" - break - - self._outlet(n,i) - sleep(self.sltime) - - - diff --git a/externals/grill/py/source/bound.cpp b/externals/grill/py/source/bound.cpp deleted file mode 100644 index 266bb9c5..00000000 --- a/externals/grill/py/source/bound.cpp +++ /dev/null @@ -1,202 +0,0 @@ -/* -py/pyext - python external object for PD and MaxMSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#include "pyext.h" -#include "flinternal.h" - -#include - -class MethodCompare: - public std::less -{ -public: - bool operator()(PyObject *a,PyObject *b) const - { - if(PyMethod_Check(a)) - if(PyMethod_Check(b)) { - // both are methods - PyObject *sa = PyMethod_GET_SELF(a); - PyObject *sb = PyMethod_GET_SELF(b); - if(sa) - if(sb) { - // both have self - if(sa == sb) - return PyMethod_GET_FUNCTION(a) < PyMethod_GET_FUNCTION(b); - else - return sa < sb; - } - else - return false; - else - if(sb) - return true; - else - return PyMethod_GET_FUNCTION(a) < PyMethod_GET_FUNCTION(b); - } - else - return false; - else - if(PyMethod_Check(b)) - return true; - else - // both are non-method callables - return a < b; - } -}; - -typedef std::set FuncSet; - -struct bounddata -{ - PyObject *self; - FuncSet funcs; -}; - -bool pyext::boundmeth(flext_base *th,t_symbol *sym,int argc,t_atom *argv,void *data) -{ - bounddata *obj = (bounddata *)data; - pyext *pyth = static_cast(th); - - ThrState state = pyth->PyLock(); - - PyObject *args = MakePyArgs(sym,argc,argv); - - // call all functions bound by this symbol - for(FuncSet::iterator it = obj->funcs.begin(); it != obj->funcs.end(); ++it) { - PyObject *ret = PyObject_CallObject(*it,args); - if(!ret) - PyErr_Print(); - else - Py_DECREF(ret); - } - - Py_XDECREF(args); - - pyth->PyUnlock(state); - return true; -} - -PyObject *pyext::pyext_bind(PyObject *,PyObject *args) -{ - PyObject *self,*meth,*name; - if(!PyArg_ParseTuple(args, "OOO:pyext_bind", &self,&name,&meth)) // borrowed references - post("py/pyext - Wrong arguments!"); - else if(!PyInstance_Check(self) || !PyCallable_Check(meth)) { - post("py/pyext - Wrong argument types!"); - } - else { - pyext *th = GetThis(self); - if(!th) { - PyErr_SetString(PyExc_RuntimeError,"pyext - _bind: instance not associated with pd object"); - return NULL; - } - - const t_symbol *recv = pyObject_AsSymbol(name); - - void *data = NULL; - if(recv && th->GetBoundMethod(recv,boundmeth,data)) { - // already bound to that symbol and function - bounddata *bdt = (bounddata *)data; - FLEXT_ASSERT(bdt != NULL && bdt->self == self); - - FuncSet::iterator it = bdt->funcs.find(meth); - if(it == bdt->funcs.end()) { - bdt->funcs.insert(meth); - Py_INCREF(meth); - } - } - else { - Py_INCREF(self); // self is borrowed reference - Py_INCREF(meth); - - bounddata *data = new bounddata; - data->self = self; - data->funcs.insert(meth); - - th->BindMethod(recv,boundmeth,data); - } - } - - Py_INCREF(Py_None); - return Py_None; -} - -PyObject *pyext::pyext_unbind(PyObject *,PyObject *args) -{ - PyObject *self,*meth,*name; - if(!PyArg_ParseTuple(args, "OOO:pyext_bind", &self,&name,&meth)) // borrowed references - post("py/pyext - Wrong arguments!"); - else if(!PyInstance_Check(self) || !PyCallable_Check(meth)) { - post("py/pyext - Wrong argument types!"); - } - else { - pyext *th = GetThis(self); - if(!th) { - PyErr_SetString(PyExc_RuntimeError,"pyext - _unbind: instance not associated with pd object"); - return NULL; - } - - const t_symbol *recv = pyObject_AsSymbol(name); - - void *data = NULL; - if(recv && th->GetBoundMethod(recv,boundmeth,data)) { - bounddata *bdt = (bounddata *)data; - FLEXT_ASSERT(bdt != NULL); - - // erase from map - // ATTENTION: meth is different from the element found in the map - // it just points to the same instance method - FuncSet::iterator it = bdt->funcs.find(meth); - if(it != bdt->funcs.end()) { - Py_DECREF(*it); - bdt->funcs.erase(it); - } - else - post("py/pyext - Function to unbind couldn't be found"); - - if(bdt->funcs.empty()) { - Py_DECREF(bdt->self); - delete bdt; - - th->UnbindMethod(recv,boundmeth,NULL); - } - } - } - - Py_INCREF(Py_None); - return Py_None; -} - - -void pyext::ClearBinding() -{ - // in case the object couldn't be constructed... - if(!pyobj) return; - - pyext *th = GetThis(pyobj); - if(!th) return; - - void *data = NULL; - const t_symbol *sym = NULL; - - // unbind all - while(th->UnbindMethod(sym,NULL,&data)) { - bounddata *bdt = (bounddata *)data; - if(bdt) { - for(FuncSet::iterator it = bdt->funcs.begin(); it != bdt->funcs.end(); ++it) - Py_DECREF(*it); - - Py_DECREF(bdt->self); - delete bdt; - } - } -} diff --git a/externals/grill/py/source/clmeth.cpp b/externals/grill/py/source/clmeth.cpp deleted file mode 100644 index 62da451b..00000000 --- a/externals/grill/py/source/clmeth.cpp +++ /dev/null @@ -1,426 +0,0 @@ -/* -py/pyext - python external object for PD and Max/MSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#include "pyext.h" - - -PyMethodDef pyext::meth_tbl[] = -{ -/* - {"__init__", pyext::pyext__init__, METH_VARARGS, "Constructor"}, - {"__del__", pyext::pyext__del__, METH_VARARGS, "Destructor"}, -*/ - {"__str__", pyext::pyext__str__, METH_VARARGS, "stringify"}, - {"_outlet", pyext::pyext_outlet, METH_VARARGS,"Send message to outlet"}, -#if FLEXT_SYS == FLEXT_SYS_PD - {"_tocanvas", pyext::pyext_tocanvas, METH_VARARGS,"Send message to canvas" }, -#endif - - { "_bind", pyext::pyext_bind, METH_VARARGS,"Bind function to a receiving symbol" }, - { "_unbind", pyext::pyext_unbind, METH_VARARGS,"Unbind function from a receiving symbol" }, -#ifdef FLEXT_THREADS - { "_detach", pyext::pyext_detach, METH_VARARGS,"Set detach flag for called methods" }, - { "_stop", pyext::pyext_stop, METH_VARARGS,"Stop running threads" }, -#endif - { "_invec", pyext::pyext_invec, METH_VARARGS,"Get input vector" }, - { "_outvec", pyext::pyext_outvec, METH_VARARGS,"Get output vector" }, - {NULL, NULL, 0, NULL} /* Sentinel */ -}; - -PyMethodDef pyext::attr_tbl[] = -{ - { "__setattr__", pyext::pyext_setattr, METH_VARARGS,"Set class attribute" }, - { "__getattr__", pyext::pyext_getattr, METH_VARARGS,"Get class attribute" }, - { NULL, NULL,0,NULL }, -}; - - -const char *pyext::pyext_doc = - "py/pyext - python external object for PD and Max/MSP, (C)2002-2008 Thomas Grill\n" - "\n" - "This is the pyext base class. Available methods:\n" - "_outlet(self,ix,args...): Send a message to an indexed outlet\n" -#if FLEXT_SYS == FLEXT_SYS_PD - "_tocanvas(self,args...): Send a message to the parent canvas\n" -#endif - "_bind(self,name,func): Bind a python function to a symbol\n" - "_unbind(self,name,func): Unbind a python function from a symbol\n" - "_isthreaded: Query whether threading is enabled\n" -#ifdef FLEXT_THREADS - "_detach(self,int): Define whether a called Python method has its own thread\n" - "_stop(self): Stop running threads\n" - "_shouldexit: Query whether threads should terminate\n" -#endif -; - -/* -PyObject* pyext::pyext__init__(PyObject *,PyObject *args) -{ -// post("pyext.__init__ called"); - - Py_INCREF(Py_None); - return Py_None; -} - -PyObject* pyext::pyext__del__(PyObject *,PyObject *args) -{ -// post("pyext.__del__ called"); - - Py_INCREF(Py_None); - return Py_None; -} -*/ - -PyObject* pyext::pyext__str__(PyObject *,PyObject *args) -{ - PyObject *self; - if(!PyArg_ParseTuple(args, "O:pyext__str__",&self)) { - // handle error - ERRINTERNAL(); - return NULL; - } - - return PyString_FromFormat("",self); -} - -PyObject* pyext::pyext_setattr(PyObject *,PyObject *args) -{ - PyObject *self,*name,*val; - if(!PyArg_ParseTuple(args, "OOO:pyext_setattr", &self,&name,&val)) { - // handle error - ERRINTERNAL(); - return NULL; - } - - bool handled = false; - -/* - if(PyString_Check(name)) { - char* sname = PyString_AsString(name); - if (sname) { -// post("pyext::setattr %s",sname); - } - } -*/ - if(!handled) { - if(PyInstance_Check(self)) - PyDict_SetItem(((PyInstanceObject *)self)->in_dict, name,val); - else - ERRINTERNAL(); - } - - Py_INCREF(Py_None); - return Py_None; -} - -PyObject* pyext::pyext_getattr(PyObject *,PyObject *args) -{ - PyObject *self,*name,*ret = NULL; - if(!PyArg_ParseTuple(args, "OO:pyext_getattr", &self,&name)) { - // handle error - ERRINTERNAL(); - } - - if(PyString_Check(name)) { - char* sname = PyString_AS_STRING(name); - if(sname) { -#ifdef FLEXT_THREADS - if(!strcmp(sname,"_shouldexit")) { - pyext *ext = GetThis(self); - if(ext) - ret = PyLong_FromLong(ext->shouldexit?1:0); - else { - // return true for _shouldexit if association has been removed - Py_INCREF(Py_True); - ret = Py_True; - } - } - else -#endif - if(!strcmp(sname,"_isthreaded")) { - #ifdef FLEXT_THREADS - Py_INCREF(Py_True); - ret = Py_True; - #else - Py_INCREF(Py_False); - ret = Py_False; - #endif - } - } - } - - if(!ret) { -#if PY_VERSION_HEX >= 0x02020000 - ret = PyObject_GenericGetAttr(self,name); // new reference (?) -#else - if(PyInstance_Check(self)) - // borrowed reference - ret = PyDict_GetItem(((PyInstanceObject *)self)->in_dict,name); -#endif - } - return ret; -} - -//! Send message to outlet -PyObject *pyext::pyext_outlet(PyObject *,PyObject *args) -{ - bool ok = false; - - // should always be a tuple! - FLEXT_ASSERT(PyTuple_Check(args)); - - int sz = PyTuple_GET_SIZE(args); - - // borrowed references! - PyObject *self,*outl; - - if( - sz >= 2 && - (self = PyTuple_GET_ITEM(args,0)) != NULL && PyInstance_Check(self) && - (outl = PyTuple_GET_ITEM(args,1)) != NULL && PyInt_Check(outl) - ) { - pyext *ext = GetThis(self); - if(!ext) { - PyErr_SetString(PyExc_RuntimeError,"pyext - _outlet: instance not associated with pd object"); - return NULL; - } - - PyObject *val; -#if 0 - if(sz == 3) { - val = PyTuple_GET_ITEM(args,2); // borrow reference - Py_INCREF(val); - tp = PySequence_Check(val); - } - else - tp = false; - - if(!tp) - val = PySequence_GetSlice(args,2,sz); // new ref -#else - if(sz == 3) { - val = PyTuple_GET_ITEM(args,2); // borrow reference - Py_INCREF(val); - } - else - val = PyTuple_GetSlice(args,2,sz); // new ref -#endif - - int o = PyInt_AS_LONG(outl); - if(o >= 1 && o <= ext->Outlets()) { - // offset outlet by signal outlets - o += ext->sigoutlets; - - if(ext->OutObject(ext,o-1,val)) - ok = true; - else - PyErr_SetString(PyExc_ValueError,"pyext - _outlet: invalid arguments"); - } - else - PyErr_SetString(PyExc_ValueError,"pyext - _outlet: index out of range"); - - Py_DECREF(val); - } - else - PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _outlet(self,outlet,args...)"); - - if(!ok) return NULL; - Py_INCREF(Py_None); - return Py_None; -} - - - -#ifdef FLEXT_THREADS -//! Detach threads -PyObject *pyext::pyext_detach(PyObject *,PyObject *args) -{ - PyObject *self; - int val; - if(!PyArg_ParseTuple(args, "Oi:pyext_detach",&self,&val)) { - // handle error - PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _detach(self,[0/1/2])"); - return NULL; - } - else if(val < 0 || val > 2) { - PyErr_SetString(PyExc_ValueError,"pyext - _detach must be in the range 0..2"); - return NULL; - } - else { - pyext *ext = GetThis(self); - if(!ext) { - PyErr_SetString(PyExc_RuntimeError,"pyext - _detach: instance not associated with pd object"); - return NULL; - } - - ext->detach = val; - } - - Py_INCREF(Py_None); - return Py_None; -} - -//! Stop running threads -PyObject *pyext::pyext_stop(PyObject *,PyObject *args) -{ - PyObject *self; - int val = -1; - if(!PyArg_ParseTuple(args, "O|i:pyext_stop",&self,&val)) { - // handle error - PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _stop(self,{wait time})"); - return NULL; - } - else if(val < 0) { - PyErr_SetString(PyExc_ValueError,"pyext - _stop time must be >= 0"); - return NULL; - } - else { - pyext *ext = GetThis(self); - if(!ext) { - PyErr_SetString(PyExc_RuntimeError,"pyext - _stop: instance not associated with pd object"); - return NULL; - } - - int cnt; - t_atom at; - if(val >= 0) cnt = 1,flext::SetInt(at,val); - else cnt = 0; - ext->m_stop(cnt,&at); - } - - Py_INCREF(Py_None); - return Py_None; -} - -#endif - - -#if FLEXT_SYS == FLEXT_SYS_PD -//! Send message to canvas -PyObject *pyext::pyext_tocanvas(PyObject *,PyObject *args) -{ - FLEXT_ASSERT(PyTuple_Check(args)); - - int sz = PyTuple_GET_SIZE(args); - - bool ok = false; - PyObject *self; // borrowed ref - if( - sz >= 1 && - (self = PyTuple_GET_ITEM(args,0)) != NULL && PyInstance_Check(self) - ) { - pyext *ext = GetThis(self); - if(!ext) { - PyErr_SetString(PyExc_RuntimeError,"pyext - _tocanvas: instance not associated with pd object"); - return NULL; - } - - PyObject *val; - - bool tp = - sz == 2 && - PySequence_Check( - val = PyTuple_GET_ITEM(args,1) // borrowed ref - ); - - if(!tp) - val = PyTuple_GetSlice(args,1,sz); // new ref - - flext::AtomListStatic<16> lst; - const t_symbol *sym = GetPyArgs(lst,val); - if(sym) { - t_glist *gl = ext->thisCanvas(); - if(gl) { - // \TODO find a flext-based non-locking method - sys_lock(); - pd_forwardmess((t_class **)gl,lst.Count(),lst.Atoms()); - sys_unlock(); - } -#ifdef FLEXT_DEBUG - else - post("pyext - no parent canvas?!"); -#endif - ok = true; - } - else - post("py/pyext - No data to send"); - - if(!tp) Py_DECREF(val); - } - - if(!ok) { - PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _tocanvas(self,args...)"); - return NULL; - } - - Py_INCREF(Py_None); - return Py_None; -} -#endif - -PyObject *pyext::pyext_invec(PyObject *,PyObject *args) -{ - PyObject *self; - int val = -1; - if(!PyArg_ParseTuple(args, "O|i:pyext_invec",&self,&val)) { - // handle error - PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _invec(self,inlet)"); - return NULL; - } - else if(val < 0) { - PyErr_SetString(PyExc_ValueError,"pyext - _invec: index out of range"); - return NULL; - } - else { - pyext *ext = GetThis(self); - if(ext) { - PyObject *b = ext->GetSig(val,true); - if(b) return b; - } - else { - PyErr_SetString(PyExc_RuntimeError,"pyext - _invec: instance not associated with pd object"); - return NULL; - } - } - - Py_INCREF(Py_None); - return Py_None; -} - -PyObject *pyext::pyext_outvec(PyObject *,PyObject *args) -{ - PyObject *self; - int val = -1; - if(!PyArg_ParseTuple(args, "O|i:pyext_outvec",&self,&val)) { - // handle error - PyErr_SetString(PyExc_SyntaxError,"pyext - Syntax: _outvec(self,inlet)"); - return NULL; - } - else if(val < 0) { - PyErr_SetString(PyExc_ValueError,"pyext - _outvec: index out of range"); - return NULL; - } - else { - pyext *ext = GetThis(self); - if(ext) { - PyObject *b = ext->GetSig(val,false); - if(b) return b; - } - else { - PyErr_SetString(PyExc_RuntimeError,"pyext - _outvec: instance not associated with pd object"); - return NULL; - } - } - - Py_INCREF(Py_None); - return Py_None; -} diff --git a/externals/grill/py/source/main.cpp b/externals/grill/py/source/main.cpp deleted file mode 100644 index fc93084e..00000000 --- a/externals/grill/py/source/main.cpp +++ /dev/null @@ -1,15 +0,0 @@ -/* -py/pyext - python external object for PD and MaxMSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#include "pybase.h" - - diff --git a/externals/grill/py/source/main.h b/externals/grill/py/source/main.h deleted file mode 100644 index 0d5c001c..00000000 --- a/externals/grill/py/source/main.h +++ /dev/null @@ -1,43 +0,0 @@ -/* -py/pyext - python script object for PD and MaxMSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#ifndef __MAIN_H -#define __MAIN_H - -#include "pyprefix.h" - -#define PY__VERSION "0.2.1pre" - - -#define PYEXT_MODULE "pyext" // name for module -#define PYEXT_CLASS "_class" // name for base class - -#define REGNAME "_registry" - -#define PY_STOP_WAIT 100 // ms -#define PY_STOP_TICK 1 // ms - - -class pybase; - -class FifoEl - : public FifoCell -{ -public: - void Set(pybase *t,PyObject *f,PyObject *a) { th = t,fun = f,args = a; } - pybase *th; - PyObject *fun,*args; -}; - -typedef PooledFifo PyFifo; - -#endif diff --git a/externals/grill/py/source/modmeth.cpp b/externals/grill/py/source/modmeth.cpp deleted file mode 100644 index b388f240..00000000 --- a/externals/grill/py/source/modmeth.cpp +++ /dev/null @@ -1,304 +0,0 @@ -/* -py/pyext - python external object for PD and Max/MSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#include "pybase.h" - - -// function table for module -PyMethodDef pybase::func_tbl[] = -{ - { "_send", pybase::py_send, METH_VARARGS,"Send message to a named object" }, -#ifdef FLEXT_THREADS - { "_priority", pybase::py_priority, METH_VARARGS,"Set priority of current thread" }, -#endif - - { "_arraysupport", pybase::py_arraysupport, METH_NOARGS,"Query Python array support" }, - { "_samplerate", pybase::py_samplerate, METH_NOARGS,"Get system sample rate" }, - { "_blocksize", pybase::py_blocksize, METH_NOARGS,"Get system block size" }, - - { "_searchpaths", pybase::py_searchpaths, METH_NOARGS,"Get system search paths" }, - { "_helppaths", pybase::py_helppaths, METH_NOARGS,"Get system help paths" }, - -#if FLEXT_SYS == FLEXT_SYS_PD - { "_getvalue", pybase::py_getvalue, METH_VARARGS,"Get value of a 'value' object" }, - { "_setvalue", pybase::py_setvalue, METH_VARARGS,"Set value of a 'value' object" }, -#endif - - { "_list", pybase::py_list, METH_VARARGS,"Make a list from arguments" }, - { "_tuple", pybase::py_tuple, METH_VARARGS,"Make a tuple from arguments" }, - - {NULL, NULL, 0, NULL} // sentinel -}; - -const char *pybase::py_doc = - "py/pyext - python external object for PD and Max/MSP, (C)2002-2008 Thomas Grill\n" - "\n" - "This is the pyext module. Available function:\n" - "_send(args...): Send a message to a send symbol\n" -#ifdef FLEXT_THREADS - "_priority(int): Raise/lower thread priority\n" -#endif - "_samplerate(): Get system sample rate\n" - "_blocksize(): Get current blocksize\n" - "_getvalue(name): Get value of a 'value' object\n" - "_setvalue(name,float): Set value of a 'value' object\n" - - "_list(args...): Make a list from args\n" - "_tuple(args...): Make a tuple from args\n" -; - -#ifdef FLEXT_THREADS -void pybase::tick(void *) -{ - Lock(); - - if(!thrcount) { - // all threads have stopped - shouldexit = false; - stoptick = 0; - } - else { - // still active threads - if(!--stoptick) { - post("py/pyext - Threads couldn't be stopped entirely - %i remaining",thrcount); - shouldexit = false; - } - else - // continue waiting - stoptmr.Delay(PY_STOP_TICK/1000.); - } - - Unlock(); -} -#endif - -void pybase::m_stop(int argc,const t_atom *argv) -{ -#ifdef FLEXT_THREADS - if(thrcount) { - Lock(); - - int wait = PY_STOP_WAIT; - if(argc >= 1 && CanbeInt(argv[0])) wait = GetAInt(argv[0]); - - int ticks = wait/PY_STOP_TICK; - if(stoptick) { - // already stopping - if(ticks < stoptick) stoptick = ticks; - } - else - stoptick = ticks; - shouldexit = true; - stoptmr.Delay(PY_STOP_TICK/1000.); - - Unlock(); - } -#endif -} - -PyObject *pybase::py_samplerate(PyObject *self,PyObject *args) -{ - return PyFloat_FromDouble(sys_getsr()); -} - -PyObject *pybase::py_blocksize(PyObject *self,PyObject *args) -{ - return PyLong_FromLong(sys_getblksize()); -} - -PyObject *pybase::py_searchpaths(PyObject *self,PyObject *args) -{ -#if FLEXT_SYS == FLEXT_SYS_PD && defined(PD_DEVEL_VERSION) && defined(PY_USE_INOFFICIAL) - PyObject *ret = PyList_New(0); - char *dir; - for(int i = 0; (dir = namelist_get(sys_searchpath,i)) != NULL; ++i) - PyList_Append(ret,PyString_FromString(dir)); - return ret; -#else - Py_INCREF(Py_None); - return Py_None; -#endif -} - -PyObject *pybase::py_helppaths(PyObject *self,PyObject *args) -{ -#if FLEXT_SYS == FLEXT_SYS_PD && defined(PD_DEVEL_VERSION) && defined(PY_USE_INOFFICIAL) - PyObject *ret = PyList_New(0); - char *dir; - for(int i = 0; (dir = namelist_get(sys_helppath,i)) != NULL; ++i) - PyList_Append(ret,PyString_FromString(dir)); - return ret; -#else - Py_INCREF(Py_None); - return Py_None; -#endif -} - -PyObject *pybase::py_send(PyObject *,PyObject *args) -{ - // should always be a tuple - FLEXT_ASSERT(PyTuple_Check(args)); - - const int sz = PyTuple_GET_SIZE(args); - - const t_symbol *recv; - if( - sz >= 1 && - (recv = pyObject_AsSymbol(PyTuple_GET_ITEM(args,0))) != NULL - ) { - PyObject *val; - -#if 0 - bool tp = - sz == 2 && - PySequence_Check( - val = PyTuple_GET_ITEM(args,1) // borrowed ref - ); - - if(!tp) - val = PySequence_GetSlice(args,1,sz); // new ref -#else - if(sz == 2) { - val = PyTuple_GET_ITEM(args,1); // borrow reference - Py_INCREF(val); - } - else - val = PySequence_GetSlice(args,1,sz); // new ref -#endif - - AtomListStatic<16> lst; - const t_symbol *sym = GetPyArgs(lst,val); - Py_DECREF(val); - - if(sym) { - bool ok = Forward(recv,sym,lst.Count(),lst.Atoms()); -#ifdef FLEXT_DEBUG - if(!ok) - post("py/pyext - Receiver doesn't exist"); -#endif - Py_INCREF(Py_None); - return Py_None; - } -/* - else if(PyErr_Occurred()) - PyErr_Print(); - else - post("py/pyext - No data to send"); -*/ - else { - FLEXT_ASSERT(PyErr_Occurred()); - return NULL; - } - } -/* - else - post("py/pyext - Send name is invalid"); -*/ - else { - PyErr_SetString(PyExc_ValueError,"py/pyext - Send name is invalid"); - return NULL; - } -} - -#ifdef FLEXT_THREADS -PyObject *pybase::py_priority(PyObject *self,PyObject *args) -{ - int val; - if(!PyArg_ParseTuple(args, "i:py_priority", &val)) { - post("py/pyext - Syntax: _priority [int]"); - } - else - RelPriority(val); - - Py_INCREF(Py_None); - return Py_None; -} -#endif - -#if FLEXT_SYS == FLEXT_SYS_PD -PyObject *pybase::py_getvalue(PyObject *self,PyObject *args) -{ - FLEXT_ASSERT(PyTuple_Check(args)); - - const int sz = PyTuple_GET_SIZE(args); - const t_symbol *sym; - PyObject *ret; - - if( - sz == 1 && - (sym = pyObject_AsSymbol(PyTuple_GET_ITEM(args,0))) != NULL - ) { - float f; - if(value_getfloat(const_cast(sym),&f)) { - post("py/pyext - Could not get value '%s'",GetString(sym)); - Py_INCREF(Py_None); - ret = Py_None; - } - else - ret = PyFloat_FromDouble(f); - } - else { - post("py/pyext - Syntax: _getvalue [name]"); - Py_INCREF(Py_None); - ret = Py_None; - } - return ret; -} - -PyObject *pybase::py_setvalue(PyObject *self,PyObject *args) -{ - FLEXT_ASSERT(PyTuple_Check(args)); - - const int sz = PyTuple_GET_SIZE(args); - const t_symbol *sym; - PyObject *val; // borrowed reference - - if( - sz == 2 && - (sym = pyObject_AsSymbol(PyTuple_GET_ITEM(args,0))) != NULL && - PyNumber_Check(val = PyTuple_GET_ITEM(args,1)) - ) { - float f = (float)PyFloat_AsDouble(val); - - if(value_setfloat(const_cast(sym),f)) - post("py/pyext - Could not set value '%s'",GetString(sym)); - } - else - post("py/pyext - Syntax: _setvalue [name] [value]"); - - Py_INCREF(Py_None); - return Py_None; -} -#endif - -PyObject *pybase::py_list(PyObject *,PyObject *args) -{ - // should always be a tuple - FLEXT_ASSERT(PyTuple_Check(args)); - - const int sz = PyTuple_GET_SIZE(args); - PyObject *ret = PyList_New(sz); - for(int i = 0; i < sz; ++i) { - PyObject *el = PyTuple_GET_ITEM(args,i); - Py_INCREF(el); - PyList_SET_ITEM(ret,i,el); - } - return ret; -} - -PyObject *pybase::py_tuple(PyObject *,PyObject *args) -{ - // should always be a tuple - FLEXT_ASSERT(PyTuple_Check(args)); - Py_INCREF(args); - return args; -} diff --git a/externals/grill/py/source/py.cpp b/externals/grill/py/source/py.cpp deleted file mode 100644 index 1745ad74..00000000 --- a/externals/grill/py/source/py.cpp +++ /dev/null @@ -1,419 +0,0 @@ -/* -py/pyext - python script object for PD and Max/MSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#include "pybase.h" - -class pyobj - : public pybase - , public flext_base -{ - FLEXT_HEADER_S(pyobj,flext_base,Setup) - -public: - pyobj(int argc,const t_atom *argv); - ~pyobj(); - -protected: - virtual void Exit(); - - virtual bool CbMethodResort(int n,const t_symbol *s,int argc,const t_atom *argv); - virtual void CbClick(); - - void m_help(); - - void m_reload() { Reload(); } - void m_reload_(int argc,const t_atom *argv) { args(argc,argv); Reload(); } - void m_set(int argc,const t_atom *argv); - void m_dir_() { m__dir(function); } - void m_doc_() { m__doc(function); } - - const t_symbol *funname; - PyObject *function; - bool withfunction; - - virtual void LoadModule(); - virtual void UnloadModule(); - - virtual void Load(); - virtual void Unload(); - - bool SetFunction(const t_symbol *func); - bool ResetFunction(); - - virtual void DumpOut(const t_symbol *sym,int argc,const t_atom *argv); - - PyObject **objects; - -private: - - virtual void callpy(PyObject *fun,PyObject *args); - - static void Setup(t_classid c); - - FLEXT_CALLBACK(m_help) - FLEXT_CALLBACK(m_reload) - FLEXT_CALLBACK_V(m_reload_) - FLEXT_CALLBACK_V(m_set) - FLEXT_CALLBACK(m_dir_) - FLEXT_CALLBACK(m_doc_) - - // callbacks - FLEXT_ATTRVAR_I(detach) - FLEXT_ATTRVAR_B(pymsg) - FLEXT_ATTRVAR_B(respond) - - FLEXT_CALLBACK_V(m_stop) - FLEXT_CALLBACK(m_dir) - FLEXT_CALLGET_V(mg_dir) - FLEXT_CALLBACK(m_doc) - - FLEXT_CALLBACK(CbClick) - -#ifdef FLEXT_THREADS - FLEXT_CALLBACK_T(tick) -#endif -}; - -FLEXT_LIB_V("py",pyobj) - - -void pyobj::Setup(t_classid c) -{ - FLEXT_CADDMETHOD_(c,0,"doc",m_doc); - FLEXT_CADDMETHOD_(c,0,"dir",m_dir); -#ifdef FLEXT_THREADS - FLEXT_CADDATTR_VAR1(c,"detach",detach); - FLEXT_CADDMETHOD_(c,0,"stop",m_stop); -#endif - - FLEXT_CADDMETHOD_(c,0,"help",m_help); - FLEXT_CADDMETHOD_(c,0,"reload",m_reload_); - FLEXT_CADDMETHOD_(c,0,"reload.",m_reload); - FLEXT_CADDMETHOD_(c,0,"doc+",m_doc_); - FLEXT_CADDMETHOD_(c,0,"dir+",m_dir_); - - FLEXT_CADDMETHOD_(c,0,"set",m_set); - - FLEXT_CADDMETHOD_(c,0,"edit",CbClick); - - FLEXT_CADDATTR_VAR1(c,"py",pymsg); - FLEXT_CADDATTR_VAR1(c,"respond",respond); -} - -pyobj::pyobj(int argc,const t_atom *argv) - : funname(NULL) - , function(NULL) - , withfunction(false) - , objects(NULL) -{ -#ifdef FLEXT_THREADS - FLEXT_ADDTIMER(stoptmr,tick); -#endif - - ThrState state = PyLockSys(); - - int inlets; - if(argc && CanbeInt(*argv)) { - inlets = GetAInt(*argv); - if(inlets < 0) inlets = 1; - argv++,argc--; - } - else - // -1 signals non-explicit definition - inlets = -1; - - if(inlets >= 1) { - objects = new PyObject *[inlets]; - for(int i = 0; i < inlets; ++i) { objects[i] = Py_None; Py_INCREF(Py_None); } - } - - AddInAnything(1+(inlets < 0?1:inlets)); - AddOutAnything(); - - const t_symbol *funnm = NULL; - - // init script module - if(argc) { - AddCurrentPath(this); - - const char *sn = GetAString(*argv); - argv++,argc--; - - if(sn) { - char modnm[64]; - strcpy(modnm,sn); - - char *pt = strrchr(modnm,'.'); // search for last dot - if(pt && *pt) { - funnm = MakeSymbol(pt+1); - *pt = 0; - } - - if(*modnm) - ImportModule(modnm); - else - ImportModule(NULL); - } - else - PyErr_SetString(PyExc_ValueError,"Invalid module name"); - } - - Register(GetRegistry(REGNAME)); - - if(funnm || argc) { - if(!funnm) { - funnm = GetASymbol(*argv); - argv++,argc--; - } - - if(funnm) - SetFunction(funnm); - else - PyErr_SetString(PyExc_ValueError,"Invalid function name"); - } - - if(argc) args(argc,argv); - - Report(); - - PyUnlock(state); -} - -pyobj::~pyobj() -{ - ThrState state = PyLockSys(); - if(objects) { - for(int i = 0; i < CntIn()-1; ++i) Py_DECREF(objects[i]); - delete[] objects; - } - - Unregister(GetRegistry(REGNAME)); - Report(); - PyUnlock(state); -} - -void pyobj::Exit() -{ - pybase::Exit(); - flext_base::Exit(); -} - -void pyobj::m_set(int argc,const t_atom *argv) -{ - ThrState state = PyLockSys(); - - // function name has precedence - if(argc >= 2) { - const char *sn = GetAString(*argv); - ++argv,--argc; - - if(sn) { -// if(!module || !strcmp(sn,PyModule_GetName(module))) - { - ImportModule(sn); - Register(GetRegistry(REGNAME)); - } - } - else - PyErr_SetString(PyExc_ValueError,"Invalid module name"); - } - - if(argc) { - const t_symbol *fn = GetASymbol(*argv); - if(fn) - SetFunction(fn); - else - PyErr_SetString(PyExc_ValueError,"Invalid function name"); - } - - Report(); - - PyUnlock(state); -} - -void pyobj::m_help() -{ - post(""); - post("%s %s - python script object, (C)2002-2008 Thomas Grill",thisName(),PY__VERSION); -#ifdef FLEXT_DEBUG - post("DEBUG VERSION, compiled on " __DATE__ " " __TIME__); -#endif - - post("Arguments: %s [script name] [function name] {args...}",thisName()); - - post("Inlet 1:messages to control the py object"); - post(" 2:call python function with message as argument(s)"); - post("Outlet: 1:return values from python function"); - post("Methods:"); - post("\thelp: shows this help"); - post("\tbang: call script without arguments"); - post("\tset [script name] [function name]: set (script and) function name"); - post("\treload {args...}: reload python script"); - post("\treload. : reload with former arguments"); - post("\tdoc: display module doc string"); - post("\tdoc+: display function doc string"); - post("\tdir: dump module dictionary"); - post("\tdir+: dump function dictionary"); -#ifdef FLEXT_THREADS - post("\tdetach 0/1/2: detach threads"); - post("\tstop {wait time (ms)}: stop threads"); -#endif - post(""); -} - -bool pyobj::ResetFunction() -{ - // function was borrowed from dict! - function = NULL; - - if(!dict) - post("%s - No namespace available",thisName()); - else { - if(funname) { - function = PyDict_GetItemString(dict,(char *)GetString(funname)); // borrowed!!! - - if(!function && dict == module_dict) - // search also in __builtins__ - function = PyDict_GetItemString(builtins_dict,(char *)GetString(funname)); // borrowed!!! - - if(!function) - PyErr_SetString(PyExc_AttributeError,"Function not found"); - else if(!PyCallable_Check(function)) { - function = NULL; - PyErr_SetString(PyExc_TypeError,"Attribute is not callable"); - } - } - } - - // exception could be set here - return function != NULL; -} - -bool pyobj::SetFunction(const t_symbol *func) -{ - if(func) { - funname = func; - withfunction = ResetFunction(); - } - else { - function = NULL,funname = NULL; - withfunction = false; - } - - // exception could be set here - return withfunction; -} - - -void pyobj::LoadModule() -{ - SetFunction(funname); -} - -void pyobj::UnloadModule() -{ -} - -void pyobj::Load() -{ - ResetFunction(); -} - -void pyobj::Unload() -{ -// SetFunction(NULL); - function = NULL; // just clear the PyObject, not the function name -} - -void pyobj::callpy(PyObject *fun,PyObject *args) -{ - PyObject *ret = PyObject_CallObject(fun,args); - if(ret) { - OutObject(this,0,ret); // exception might be raised here - Py_DECREF(ret); - } -} - -bool pyobj::CbMethodResort(int n,const t_symbol *s,int argc,const t_atom *argv) -{ - if(n == 0 && s != sym_bang) - return flext_base::CbMethodResort(n,s,argc,argv); - - ThrState state = PyLockSys(); - - bool ret = false; - - if(objects && n >= 1) { - // store args - PyObject *&obj = objects[n-1]; - Py_DECREF(obj); - obj = MakePyArg(s,argc,argv); // steal reference - - if(n > 1) ret = true; // just store, don't trigger - } - - if(!ret) { - if(withfunction) { - if(function) { - Py_INCREF(function); - - PyObject *pargs; - - if(objects || CntIn() == 1) { - int inlets = CntIn()-1; - pargs = PyTuple_New(inlets); - for(int i = 0; i < inlets; ++i) { - Py_INCREF(objects[i]); - PyTuple_SET_ITEM(pargs,i,objects[i]); - } - } - else - // construct tuple from args - // if n == 0, it's a pure bang - pargs = MakePyArgs(n?s:NULL,argc,argv); - - gencall(function,pargs); // references are stolen - ret = true; - } - else - PyErr_SetString(PyExc_RuntimeError,"No function set"); - } - else if(module) { - // no function defined as creation argument -> use message tag - if(s) { - PyObject *func = PyObject_GetAttrString(module,const_cast(GetString(s))); - if(func) { - PyObject *pargs = MakePyArgs(sym_list,argc,argv); - gencall(func,pargs); - ret = true; - } - } - else - PyErr_SetString(PyExc_RuntimeError,"No function set"); - } - - Report(); - } - - PyUnlock(state); - - Respond(ret); - - return ret; -} - -void pyobj::CbClick() { pybase::OpenEditor(); } - -void pyobj::DumpOut(const t_symbol *sym,int argc,const t_atom *argv) -{ - ToOutAnything(GetOutAttr(),sym?sym:thisTag(),argc,argv); -} diff --git a/externals/grill/py/source/pyargs.cpp b/externals/grill/py/source/pyargs.cpp deleted file mode 100644 index 73d8f027..00000000 --- a/externals/grill/py/source/pyargs.cpp +++ /dev/null @@ -1,231 +0,0 @@ -/* -py/pyext - python external object for PD and MaxMSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#include "pybase.h" -#include "pyatom.h" - -static const t_symbol *symatom = flext::MakeSymbol(" py "); - -static PyObject *MakePyAtom(const t_atom &at) -{ - if(flext::IsSymbol(at)) - return pySymbol_FromSymbol(flext::GetSymbol(at)); -#if 1 - else if(flext::CanbeFloat(at)) { - // if a number can be an integer... let it be an integer! - int ival = flext::GetAInt(at); - double fval = flext::GetAFloat(at); - return (double)ival == fval?PyInt_FromLong(ival):PyFloat_FromDouble(fval); - } -#else - else if(flext::IsFloat(at)) - return PyFloat_FromDouble(flext::GetFloat(at)); - else if(flext::IsInt(at)) - return PyInt_FromLong(flext::GetInt(at)); -#endif - return NULL; -} - -static PyObject *MakePyAtom(int argc,const t_atom *argv) -{ - if(argc != sizeof(size_t)/2) return NULL; - - size_t atom = 0; - for(int i = sizeof(size_t)/2-1; i >= 0; --i) - if(!flext::CanbeInt(argv[i])) { - atom = 0; - break; - } - else - atom = (atom<<16)+flext::GetAInt(argv[i]); - - if(atom) { - PyObject *el = PyAtom::Retrieve(atom); - if(!el) el = Py_None; // object already gone.... - Py_INCREF(el); - return el; - } - else - return NULL; -} - -PyObject *pybase::MakePyArgs(const t_symbol *s,int argc,const t_atom *argv,int inlet) -{ - PyObject *ret,*el; - - if(s == symatom && (el = MakePyAtom(argc,argv)) != NULL) { - ret = PyTuple_New(1); - PyTuple_SET_ITEM(ret,0,el); - } - else { - bool any = IsAnything(s); - ret = PyTuple_New(argc+(any?1:0)+(inlet >= 0?1:0)); - - int pix = 0; - - if(inlet >= 0) - PyTuple_SET_ITEM(ret,pix++,PyInt_FromLong(inlet)); - - if(any) - PyTuple_SET_ITEM(ret,pix++,pySymbol_FromSymbol(s)); - - for(int i = 0; i < argc; ++i) { - el = MakePyAtom(argv[i]); - if(!el) { - post("py/pyext: cannot convert argument %i",any?i+1:i); - - el = Py_None; - Py_INCREF(Py_None); - } - - PyTuple_SET_ITEM(ret,pix++,el); // reference stolen - } - } - - return ret; -} - -PyObject *pybase::MakePyArg(const t_symbol *s,int argc,const t_atom *argv) -{ - PyObject *ret; - - if(s == symatom && (ret = MakePyAtom(argc,argv)) != NULL) { - // ok! - } - else if(argc == 1 && !IsAnything(s)) - // convert atoms and one-element lists - ret = MakePyAtom(*argv); - else { - bool any = s != sym_list; - ret = PyTuple_New(argc+(any?1:0)); - - int pix = 0; - if(any) - PyTuple_SET_ITEM(ret,pix++,pySymbol_FromSymbol(s)); - - for(int i = 0; i < argc; ++i) { - PyObject *el = MakePyAtom(argv[i]); - if(!el) { - post("py/pyext: cannot convert argument %i",any?i+1:i); - - el = Py_None; - Py_INCREF(Py_None); - } - - PyTuple_SET_ITEM(ret,pix++,el); // reference stolen - } - } - - return ret; -} - -inline bool issym(PyObject *p) -{ - return PyString_Check(p) || pySymbol_Check(p); -} - -inline bool isseq(PyObject *p) -{ - return PySequence_Check(p) && !issym(p); -} - -const t_symbol *pybase::getone(t_atom &at,PyObject *arg) -{ - if(PyInt_Check(arg)) { flext::SetInt(at,PyInt_AsLong(arg)); return sym_fint; } - else if(PyLong_Check(arg)) { flext::SetInt(at,PyLong_AsLong(arg)); return sym_fint; } - else if(PyFloat_Check(arg)) { flext::SetFloat(at,(float)PyFloat_AsDouble(arg)); return flext::sym_float; } - else if(pySymbol_Check(arg)) { flext::SetSymbol(at,pySymbol_AS_SYMBOL(arg)); return flext::sym_symbol; } - else if(PyString_Check(arg)) { flext::SetString(at,PyString_AS_STRING(arg)); return flext::sym_symbol; } - else { - PyObject *tp = PyObject_Type(arg); - PyObject *stp = tp?PyObject_Str(tp):NULL; - char *tmp = ""; - if(stp) tmp = PyString_AS_STRING(stp); - flext::post("py/pyext: Could not convert argument %s",tmp); - Py_XDECREF(stp); - Py_XDECREF(tp); - - flext::SetSymbol(at,flext::sym__); - return sym_symbol; - } -} - -const t_symbol *pybase::getlist(t_atom *lst,PyObject *seq,int cnt,int offs) -{ - for(int ix = 0; ix < cnt; ++ix) { - PyObject *arg = PySequence_GetItem(seq,ix+offs); // new reference - getone(lst[ix],arg); - Py_DECREF(arg); - } - return flext::sym_list; -} - -const t_symbol *pybase::GetPyArgs(AtomList &lst,PyObject *pValue,int offs) -{ - if(pValue == NULL) return false; - - // output bang on None returned - if(pValue == Py_None) return sym_bang; - - // analyze return value or tuple - const t_symbol *sym = NULL; - - if(isseq(pValue)) { - // Python might crash here if pValue is no "real" sequence, but rather e.g. an instance - - int rargc = PySequence_Size(pValue); - - if(rargc == 2) { - // check if syntax is symbol/string, list -> anything message - PyObject *s = PySequence_GetItem(pValue,0); - PyObject *l = PySequence_GetItem(pValue,1); - - if(issym(s) && isseq(l)) { - // is anything message - rargc = PySequence_Size(l); - lst(offs+rargc); - getlist(lst.Atoms(),l,rargc); - sym = pyObject_AsSymbol(s); - } - else { - // (symbol,atom) list - lst(offs+rargc); - sym = getlist(lst.Atoms(),pValue,rargc); - } - - Py_DECREF(s); - Py_DECREF(l); - } - else { - lst(offs+rargc); - sym = getlist(lst.Atoms(),pValue,rargc); - } - } - else { - lst(offs+1); - sym = getone(lst[offs],pValue); - } - - return sym; -} - - -const t_symbol *pybase::GetPyAtom(AtomList &lst,PyObject *obj) -{ - size_t atom = PyAtom::Register(obj); - size_t szat = sizeof(atom)/2; - - lst(szat); - for(size_t i = 0; i < szat; ++i,atom >>= 16) - flext::SetInt(lst[i],(int)(atom&((1<<16)-1))); - return symatom; -} diff --git a/externals/grill/py/source/pyatom.cpp b/externals/grill/py/source/pyatom.cpp deleted file mode 100644 index 7b45028e..00000000 --- a/externals/grill/py/source/pyatom.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/* -py/pyext - python script object for PD and Max/MSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#include "pyatom.h" -#include - -#define INTV 0.01 - -typedef std::map ObjMap; - -static ObjMap objmap; -static size_t collix = 0,curix = 0; -static double last = 0; - -size_t PyAtom::Register(PyObject *obj) -{ - Collect(); - - Py_INCREF(obj); - objmap[++curix] = obj; - -#ifdef _DEBUG -// post("REG %p (%i)\n",obj,objmap.size()); -#endif - return curix; -} - -PyObject *PyAtom::Retrieve(size_t id) -{ - ObjMap::iterator it = objmap.find(id); - PyObject *ret = it == objmap.end()?NULL:it->second; - Collect(); - return ret; -} - -void PyAtom::Collect() -{ - for(;;) { - ObjMap::iterator it = objmap.begin(); - if(it == objmap.end() || it->first > collix) break; - - PyObject *obj = it->second; - Py_DECREF(obj); - objmap.erase(it); - -#ifdef _DEBUG -// post("DEL %p\n",obj); -#endif - } - - // schedule next collect time - double tm = flext::GetTime(); - if(tm > last+INTV) last = tm,collix = curix; -} diff --git a/externals/grill/py/source/pyatom.h b/externals/grill/py/source/pyatom.h deleted file mode 100644 index beff390a..00000000 --- a/externals/grill/py/source/pyatom.h +++ /dev/null @@ -1,21 +0,0 @@ -/* -py/pyext - python script object for PD and Max/MSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#include "main.h" - -class PyAtom -{ -public: - static size_t Register(PyObject *obj); - static PyObject *Retrieve(size_t id); - static void Collect(); -}; diff --git a/externals/grill/py/source/pybase.cpp b/externals/grill/py/source/pybase.cpp deleted file mode 100644 index 033219e4..00000000 --- a/externals/grill/py/source/pybase.cpp +++ /dev/null @@ -1,923 +0,0 @@ -/* -py/pyext - python external object for PD and MaxMSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 18:00:03 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#include "pybase.h" -#include - -#if FLEXT_OS == FLEXT_OS_WIN -#include -#elif FLEXT_OS == FLEXT_OS_MAC -#include -#endif - -static PyMethodDef StdOut_Methods[] = -{ - { "write", pybase::StdOut_Write, 1 }, - { NULL, NULL, } -}; - -static PyObject *gcollect = NULL; - -#ifdef FLEXT_THREADS - -class ThrCmp -{ -public: - inline bool operator()(const flext::thrid_t &a,const flext::thrid_t &b) const - { - if(sizeof(a) == sizeof(size_t)) - return *(size_t *)&a < *(size_t *)&b; - else - return memcmp(&a,&b,sizeof(a)) < 0; - } -}; - - -int pybase::lockcount = 0; - -#ifndef PY_USE_GIL -static PyInterpreterState *pymain = NULL; - -typedef std::map PyThrMap; - -static PyThrMap pythrmap; -ThrState pybase::pythrsys = NULL; - -ThrState pybase::FindThreadState() -{ - flext::thrid_t id = flext::GetThreadId(); - PyThrMap::iterator it = pythrmap.find(id); - if(it == pythrmap.end()) { - // Make new thread state - ThrState st = PyThreadState_New(pymain); - pythrmap[id] = st; - return st; - } - else - return it->second; -} - -void pybase::FreeThreadState() -{ - flext::thrid_t id = flext::GetThreadId(); - PyThrMap::iterator it = pythrmap.find(id); - if(it != pythrmap.end()) { - // clear out any cruft from thread state object - PyThreadState_Clear(it->second); - // delete my thread state object - PyThreadState_Delete(it->second); - // delete from map - pythrmap.erase(it); - } -} -#endif // PY_USE_GIL - -PyFifo pybase::qufifo; -flext::ThrCond pybase::qucond; -#endif - - -PyObject *pybase::module_obj = NULL; -PyObject *pybase::module_dict = NULL; - -PyObject *pybase::builtins_obj = NULL; -PyObject *pybase::builtins_dict = NULL; - -const t_symbol *pybase::sym_fint = NULL; -const t_symbol *pybase::sym_response = NULL; - -// ----------------------------------------------------------------------------------------------------------- - - -void initsymbol(); -void initsamplebuffer(); -void initbundle(); - -void pybase::lib_setup() -{ - post(""); - post("------------------------------------------------"); - post("py/pyext %s - python script objects",PY__VERSION); - post("(C)2002-2008 Thomas Grill - http://grrrr.org/ext"); - post(""); - post("using Python %s",Py_GetVersion()); - -#ifdef FLEXT_DEBUG - post(""); - post("DEBUG version compiled on %s %s",__DATE__,__TIME__); -#endif - - // ------------------------------------------------------------- - - sym_response = flext::MakeSymbol("response"); - -#if FLEXT_SYS == FLEXT_SYS_PD - sym_fint = sym_float; -#else - sym_fint = sym_int; -#endif - - // ------------------------------------------------------------- - - Py_Initialize(); - -#ifdef FLEXT_DEBUG -// Py_DebugFlag = 1; -// Py_VerboseFlag = 1; -#else - Py_OptimizeFlag = 1; -#endif - -#ifdef FLEXT_THREADS - // enable thread support and acquire the global thread lock - PyEval_InitThreads(); - -#ifndef PY_USE_GIL - // get thread state - pythrsys = PyThreadState_Get(); - // get main interpreter state - pymain = pythrsys->interp; - - // add thread state of main thread to map - pythrmap[GetThreadId()] = pythrsys; -#endif // PY_USE_GIL - -#endif - - // sys.argv must be set to empty tuple - char *nothing = ""; - PySys_SetArgv(0,¬hing); - - // register/initialize pyext module only once! - module_obj = Py_InitModule(PYEXT_MODULE, func_tbl); - module_dict = PyModule_GetDict(module_obj); // borrowed reference - - PyModule_AddStringConstant(module_obj,"__doc__",(char *)py_doc); - - // redirect stdout - PyObject* py_out; - py_out = Py_InitModule("stdout", StdOut_Methods); - PySys_SetObject("stdout", py_out); - py_out = Py_InitModule("stderr", StdOut_Methods); - PySys_SetObject("stderr", py_out); - - // get garbage collector function - PyObject *gcobj = PyImport_ImportModule("gc"); - if(gcobj) { - gcollect = PyObject_GetAttrString(gcobj,"collect"); - Py_DECREF(gcobj); - } - - builtins_obj = PyImport_ImportModule("__builtin__"); - builtins_dict = PyModule_GetDict(builtins_obj); // borrowed reference - - // add symbol type - initsymbol(); - PyModule_AddObject(module_obj,"Symbol",(PyObject *)&pySymbol_Type); - - // pre-defined symbols - PyModule_AddObject(module_obj,"_s_",(PyObject *)pySymbol__); - PyModule_AddObject(module_obj,"_s_bang",(PyObject *)pySymbol_bang); - PyModule_AddObject(module_obj,"_s_list",(PyObject *)pySymbol_list); - PyModule_AddObject(module_obj,"_s_symbol",(PyObject *)pySymbol_symbol); - PyModule_AddObject(module_obj,"_s_float",(PyObject *)pySymbol_float); - PyModule_AddObject(module_obj,"_s_int",(PyObject *)pySymbol_int); - - // add samplebuffer type - initsamplebuffer(); - PyModule_AddObject(module_obj,"Buffer",(PyObject *)&pySamplebuffer_Type); - - // add message bundle type - initbundle(); - PyModule_AddObject(module_obj,"Bundle",(PyObject *)&pyBundle_Type); - - // ------------------------------------------------------------- -#if FLEXT_SYS == FLEXT_SYS_PD && defined(PD_DEVEL_VERSION) && defined(PY_USE_INOFFICIAL) - // add PD paths - - char *dir; - for(int i = 0; (dir = namelist_get(sys_searchpath,i)) != NULL; ++i) { - AddToPath(dir); - } -#endif - // ------------------------------------------------------------- - - FLEXT_SETUP(pyobj); - FLEXT_SETUP(pymeth); - FLEXT_SETUP(pyext); -#ifndef PY_NODSP - FLEXT_DSP_SETUP(pydsp); -#endif - -#ifdef FLEXT_THREADS - // release global lock - PyEval_ReleaseLock(); - - // launch thread worker - LaunchThread(quworker,NULL); - - // launch python worker - LaunchThread(pyworker,NULL); -#endif - - post("------------------------------------------------"); - post(""); -} - -FLEXT_LIB_SETUP(py,pybase::lib_setup) - - -// ----------------------------------------------------------------------------------------------------------- - - -pybase::pybase() - : module(NULL) - , dict(NULL) -#ifdef FLEXT_THREADS - , thrcount(0) - , shouldexit(false),stoptick(0) -#endif - , detach(0) - , pymsg(false) -{ - ThrState state = PyLock(); - Py_INCREF(module_obj); - PyUnlock(state); -} - -pybase::~pybase() -{ - ThrState state = PyLock(); - Py_XDECREF(module_obj); - PyUnlock(state); -} - -void pybase::Exit() -{ -#ifdef FLEXT_THREADS - erasethreads(); - - shouldexit = true; - qucond.Signal(); - - if(thrcount) { - // Wait for a certain time - for(int i = 0; i < (PY_STOP_WAIT/PY_STOP_TICK) && thrcount; ++i) - Sleep(PY_STOP_TICK*0.001f); - if(thrcount) { - // Wait forever - post("py/pyext - Waiting for thread termination!"); - while(thrcount) Sleep(PY_STOP_TICK*0.001f); - post("py/pyext - Okay, all threads have terminated"); - } - } -#endif -} - -void pybase::GetDir(PyObject *obj,AtomList &lst) -{ - if(obj) { - ThrState state = PyLock(); - - PyObject *pvar = PyObject_Dir(obj); - if(!pvar) - PyErr_Print(); // no method found - else { - const t_symbol *sym = GetPyArgs(lst,pvar); - if(!sym) - post("py/pyext - Argument list could not be created"); - else - FLEXT_ASSERT(sym == sym_list); - Py_DECREF(pvar); - } - - PyUnlock(state); - } -} - -void pybase::m__dir(PyObject *obj) -{ - AtomList lst; - GetDir(obj,lst); - // dump dir to attribute outlet - DumpOut(NULL,lst.Count(),lst.Atoms()); -} - -void pybase::m__doc(PyObject *obj) -{ - if(obj) { - ThrState state = PyLock(); - - PyObject *docf = PyDict_GetItemString(obj,"__doc__"); // borrowed!!! - if(docf && PyString_Check(docf)) { - post(""); - const char *s = PyString_AS_STRING(docf); - - // FIX: Python doc strings can easily be larger than 1k characters - // -> split into separate lines - for(;;) { - char buf[1024]; - char *nl = strchr((char *)s,'\n'); // the cast is for Borland C++ - if(!nl) { - // no more newline found - post(s); - break; - } - else { - // copy string before newline to temp buffer and post - unsigned int l = nl-s; - if(l >= sizeof(buf)) l = sizeof buf-1; - strncpy(buf,s,l); // copy all but newline - buf[l] = 0; - post(buf); - s = nl+1; // set after newline - } - } - } - - PyUnlock(state); - } -} - -void pybase::OpenEditor() -{ - if(!module) return; - const char *mname = PyModule_GetFilename(module); - if(!mname) { - PyErr_Clear(); - return; - } - - char fname[1024]; - strcpy(fname,mname); - - // replacing .pyc or .pyo for source file name - char *dt = strrchr(fname,'.'); - if(dt && !strncmp(dt,".py",2)) strcpy(dt,".py"); - - // this should open the editor.... -#if FLEXT_OS == FLEXT_OS_WIN - int err = (int)ShellExecute(NULL,"edit",fname,NULL,NULL,SW_SHOW); - if(err == SE_ERR_NOASSOC) { - // no association found - try notepad - err = (int)ShellExecute(NULL,NULL,"notepad.exe",fname,NULL,SW_SHOW); - } - else if(err == ERROR_FILE_NOT_FOUND || err == SE_ERR_FNF) - post("py/pyext - File not %s found",fname); - else if(err <= 32) - post("py/pyext - Unknown error opening %s",fname); - -#elif FLEXT_OS == FLEXT_OS_MAC - FSRef ref; - OSStatus err = FSPathMakeRef((unsigned char *)fname,&ref,NULL); - if(err) - post("py/pyext - Error interpreting path %s",fname); - else { - FSRef editor; - err = LSGetApplicationForItem(&ref,kLSRolesEditor,&editor,NULL); - if(err) { - // Can't find associated application... try Textedit - err = FSPathMakeRef((unsigned char *)"/Applications/TextEdit.app",&editor,NULL); - if(err) - post("py/pyext - Can't find Textedit application"); - } - - if(!err) { - LSLaunchFSRefSpec lspec; - lspec.appRef = &editor; - lspec.numDocs = 1; - lspec.itemRefs = &ref; - lspec.passThruParams = NULL; - lspec.launchFlags = kLSLaunchDefaults; - lspec.asyncRefCon = NULL; - err = LSOpenFromRefSpec(&lspec,NULL); - if(err) - post("py/pyext - Couldn't launch editor"); - } - } -#else - // thanks to Tim Blechmann - - char *editor = getenv("EDITOR"); - - if(!editor) { // || !strcmp(editor, "/usr/bin/nano") || !strcmp(editor, "/usr/bin/pico") || !strcmp(editor, "/usr/bin/vi")) { - // no environment variable or console text editor found ... use idle instead (should have come with Python) - editor = "idle"; - } - - pid_t child = fork(); - if(!child) { - char cmd[80]; - strcpy(cmd,editor); - strcat(cmd," "); - strcat(cmd,fname); - execl("/bin/sh", "sh", "-c", cmd, (char *) NULL); - } -#endif -} - -void pybase::SetArgs() -{ - // script arguments - int argc = args.Count(); - const t_atom *argv = args.Atoms(); - char **sargv = new char *[argc+1]; - for(int i = 0; i <= argc; ++i) { - sargv[i] = new char[256]; - if(!i) - strcpy(sargv[i],"py/pyext"); - else - GetAString(argv[i-1],sargv[i],255); - } - - // the arguments to the module are only recognized once! (at first use in a patcher) - PySys_SetArgv(argc+1,sargv); - - for(int j = 0; j <= argc; ++j) delete[] sargv[j]; - delete[] sargv; -} - -static bool getmodulesub(const char *mod,char *dir,int len,char *ext) -{ -#if FLEXT_SYS == FLEXT_SYS_PD - char *name; - int fd = open_via_path("",mod,ext,dir,&name,len,0); - if(fd > 0) { - FLEXT_ASSERT(name && *name); - close(fd); - } - else { - // look for mod/__init__.py - std::string tmp(mod); - int l = tmp.size(); - tmp += "/__init__"; - fd = open_via_path("",tmp.c_str(),ext,dir,&name,len,0); - if(fd > 0) { - FLEXT_ASSERT(name && *name); - close(fd); - // we must remove the module name from dir - char *t = dir+strlen(dir)-l; - FLEXT_ASSERT(!strcmp(mod,t) && t[-1] == '/'); - t[-1] = 0; - } - else - name = NULL; - } - - // if dir is current working directory... name points to dir - if(dir == name) strcpy(dir,"."); - return name != NULL; -#elif FLEXT_SYS == FLEXT_SYS_MAX - short path; - long type; - char smod[1024]; - strcpy(smod,mod); - strcat(smod,ext); - bool ok = !locatefile_extended(smod,&path,&type,&type,0); - if(ok) - // convert pathname to unix style - path_topathname(path,NULL,smod); - else { - // do path/file.ext combinations work at all under Max? - strcpy(smod,mod); - - short path; - type = 'fold'; - ok = !locatefile_extended(smod,&path,&type,&type,1); - if(ok) { - // convert pathname to unix style (including trailing slash) - path_topathname(path,NULL,smod); - char *end = smod+strlen(smod); - strcpy(end,mod); - strcat(end,"/__init__"); - strcat(end,ext); - - // check if file is really existing: try to open it - FILE *f = fopen(smod,"r"); - if(f) { - *end = 0; // clear module part ... we only need base path - fclose(f); - } - else - ok = false; - } - } - - if(ok) { - // convert path into slash style needed for Python -#if 0 - // Max API function uses Volume:/Path notation - path_nameconform(smod,dir,PATH_STYLE_SLASH,PATH_TYPE_ABSOLUTE); -#else -#if FLEXT_OS == FLEXT_OS_WIN - char *colon = NULL; -#else - char *colon = strchr(smod,':'); -#endif - if(colon) { - *colon = 0; - strcpy(dir,"/Volumes/"); - strcat(dir,smod); - strcat(dir,colon+1); - } - else - strcpy(dir,smod); -#endif - return true; - } - else - // not found - return false; -#else -#pragma message("Not implemented"); - return false; -#endif -} - -static bool getmodulepath(const char *mod,char *dir,int len) -{ - return - getmodulesub(mod,dir,len,".py") || - getmodulesub(mod,dir,len,".pyc") || - getmodulesub(mod,dir,len,".pyo"); -} - -bool pybase::ImportModule(const char *name) -{ - if(name) { - if(modname == name) { - // module with the same name is already loaded - if(module) return true; - } - else - modname = name; - } - else - modname.clear(); - - UnimportModule(); - return ReloadModule(); -} - -void pybase::UnimportModule() -{ - if(module) { - FLEXT_ASSERT(dict && module_obj && module_dict); - - Py_DECREF(module); - - // reference count to module is not 0 here, altough probably the last instance was unloaded - // Python retains one reference to the module all the time - // we don't care - - module = NULL; - dict = NULL; - } -} - -bool pybase::ReloadModule() -{ - SetArgs(); - PyObject *newmod; - - if(modname.length()) { - - if(module) - newmod = PyImport_ReloadModule(module); - else { - // search in module path (TODO: check before if module is already present to avoid costly searching) - char dir[1024]; - if(!getmodulepath(modname.c_str(),dir,sizeof(dir))) - PyErr_SetString(PyExc_ImportError,"Module not found in path"); - else - AddToPath(dir); - - // module could also be loaded ok, even if it's not in the path (e.g. for internal stuff) - newmod = PyImport_ImportModule((char *)modname.c_str()); - } - } - else { - // if no module name given, take py module - newmod = module_obj; - Py_INCREF(newmod); - } - - if(!newmod) { - // unload faulty module - UnimportModule(); - return false; - } - else { - Py_XDECREF(module); - module = newmod; - dict = PyModule_GetDict(module); // borrowed - return true; - } -} - -void pybase::AddToPath(const char *dir) -{ - if(dir && *dir) { - PyObject *pobj = PySys_GetObject("path"); - if(pobj && PyList_Check(pobj)) { - PyObject *ps = PyString_FromString(dir); - if(!PySequence_Contains(pobj,ps)) - PyList_Append(pobj,ps); // makes new reference - Py_DECREF(ps); - } - PySys_SetObject("path",pobj); // steals reference to pobj - } -} - -void pybase::AddCurrentPath(flext_base *o) -{ - char dir[1024]; - - // add dir of current patch to path - o->GetCanvasDir(dir,sizeof(dir)); - if(*dir) AddToPath(dir); - - // add current dir to path -#if FLEXT_SYS == FLEXT_SYS_PD - AddToPath(GetString(canvas_getcurrentdir())); -#elif FLEXT_SYS == FLEXT_SYS_MAX - short path = path_getdefault(); - path_topathname(path,NULL,dir); - AddToPath(dir); -#endif -} - -bool pybase::OutObject(flext_base *ext,int o,PyObject *obj) -{ - flext::AtomListStatic<16> lst; - const t_symbol *sym = pymsg?GetPyAtom(lst,obj):GetPyArgs(lst,obj); - if(sym) { - // call to outlet _outside_ the Mutex lock! - // otherwise (if not detached) deadlock will occur - ext->ToOutAnything(o,sym,lst.Count(),lst.Atoms()); - return true; - } - else - return false; -} - -void pybase::Reload() -{ - ThrState state = PyLock(); - - PyObject *reg = GetRegistry(REGNAME); - - if(reg) { - PyObject *key; - Py_ssize_t pos = 0; - while(PyDict_Next(reg,&pos,&key,NULL)) { - pybase *th = (pybase *)PyLong_AsLong(key); - FLEXT_ASSERT(th); - th->Unload(); - } - - UnloadModule(); - } - - bool ok = ReloadModule(); - - if(ok) { - LoadModule(); - - if(reg) { - SetRegistry(REGNAME,reg); - - PyObject *key; - Py_ssize_t pos = 0; - while(PyDict_Next(reg,&pos,&key,NULL)) { - pybase *th = (pybase *)PyLong_AsLong(key); - FLEXT_ASSERT(th); - th->Load(); - } - } - else - Load(); - } - - Report(); - PyUnlock(state); -} - -static PyObject *output = NULL; - -// post to the console -PyObject* pybase::StdOut_Write(PyObject* self, PyObject* args) -{ - // should always be a tuple - FLEXT_ASSERT(PyTuple_Check(args)); - - const int sz = PyTuple_GET_SIZE(args); - - for(int i = 0; i < sz; ++i) { - PyObject *val = PyTuple_GET_ITEM(args,i); // borrowed reference - PyObject *str = PyObject_Str(val); // new reference - char *cstr = PyString_AS_STRING(str); - char *lf = strchr(cstr,'\n'); - - // line feed in string - if(!lf) { - // no -> just append - if(output) - PyString_ConcatAndDel(&output,str); // str is decrefd - else - output = str; // take str reference - } - else { - // yes -> append up to line feed, reset output buffer to string remainder - PyObject *part = PyString_FromStringAndSize(cstr,lf-cstr); // new reference - if(output) - PyString_ConcatAndDel(&output,part); // str is decrefd - else - output = part; // take str reference - - // output concatenated string - post(PyString_AS_STRING(output)); - - Py_DECREF(output); - output = PyString_FromString(lf+1); // new reference - } - } - - Py_INCREF(Py_None); - return Py_None; -} - - -class work_data -{ -public: - work_data(PyObject *f,PyObject *a): fun(f),args(a) {} - ~work_data() { Py_DECREF(fun); Py_DECREF(args); } - - PyObject *fun,*args; -}; - -bool pybase::gencall(PyObject *pmeth,PyObject *pargs) -{ - bool ret = false; - - // Now call method - switch(detach) { - case 0: - ret = docall(pmeth,pargs); - Py_DECREF(pargs); - Py_DECREF(pmeth); - break; -#ifdef FLEXT_THREADS - case 1: - // put call into queue - ret = qucall(pmeth,pargs); - break; - case 2: - // each call a new thread - if(!shouldexit) { - thr_params *p = new thr_params; - p->cl = (flext_base *)this; - p->var->_ext = new work_data(pmeth,pargs); - ret = LaunchThread(thrworker,p); - if(!ret) post("py/pyext - Failed to launch thread!"); - } - break; -#endif - default: - post("py/pyext - Unknown detach mode"); - } - return ret; -} - -void pybase::exchandle() -{ -#if 0 - // want to use that, but exception keeps a reference to the object - // might be a Python bug! - PyErr_Print(); -#else - // must use that instead... clear the exception - PyObject *type,*value,*traceback; - PyErr_Fetch(&type,&value,&traceback); - PyErr_NormalizeException(&type,&value,&traceback); - PyErr_Display(type,value,traceback); - - Py_XDECREF(type); - Py_XDECREF(value); - Py_XDECREF(traceback); -#endif -} - -#ifdef FLEXT_THREADS -void pybase::thrworker(thr_params *p) -{ - FLEXT_ASSERT(p); - pybase *th = (pybase *)p->cl; - work_data *w = (work_data *)p->var->_ext; - - ++th->thrcount; // \todo this should be atomic - ThrState state = PyLock(); - - // call worker - th->docall(w->fun,w->args); - delete w; - - PyUnlock(state); - --th->thrcount; // \todo this should be atomic -} - -/*! This thread function basically keeps alive the Python interpreter in the background - It's good for threads that have been started from scripted functions -*/ -void pybase::pyworker(thr_params *) -{ - ThrState state = PyLock(); - - PyObject *timemod = PyImport_ImportModule("time"); - PyObject *sleep = PyObject_GetAttrString(timemod,"sleep"); - PyObject *args = PyTuple_New(1); - PyTuple_SET_ITEM(args,0,PyFloat_FromDouble(1000000)); - - for(;;) { - PyObject *res = PyObject_CallObject(sleep,args); - Py_DECREF(res); - } - - PyUnlock(state); -} - -void pybase::quworker(thr_params *) -{ - FifoEl *el; - ThrState my = FindThreadState(),state; - - for(;;) { - while(el = qufifo.Get()) { - ++el->th->thrcount; // \todo this should be atomic - state = PyLock(my); - el->th->docall(el->fun,el->args); - Py_XDECREF(el->fun); - Py_XDECREF(el->args); - PyUnlock(state); - --el->th->thrcount; // \todo this should be atomic - qufifo.Free(el); - } - qucond.Wait(); - } - - // we never end -#if 0 - state = PyLock(my); - // unref remaining Python objects - while(el = qufifo.Get()) { - Py_XDECREF(el->fun); - Py_XDECREF(el->args); - qufifo.Free(el); - } - PyUnlock(state); -#endif -} - -void pybase::erasethreads() -{ - PyFifo tmp; - FifoEl *el; - while(el = qufifo.Get()) { - if(el->th == this) { - Py_XDECREF(el->fun); - Py_XDECREF(el->args); - qufifo.Free(el); - } - else - tmp.Put(el); - } - // Push back - while(el = tmp.Get()) qufifo.Put(el); -} -#endif - -bool pybase::collect() -{ - if(gcollect) { - PyObject *ret = PyObject_CallObject(gcollect,NULL); - if(ret) { -#ifdef FLEXT_DEBUG - int refs = PyInt_AsLong(ret); - if(refs) post("py/pyext - Garbage collector reports %i unreachable objects",refs); -#endif - Py_DECREF(ret); - return false; - } - } - return true; -} diff --git a/externals/grill/py/source/pybase.h b/externals/grill/py/source/pybase.h deleted file mode 100644 index 48e2f772..00000000 --- a/externals/grill/py/source/pybase.h +++ /dev/null @@ -1,256 +0,0 @@ -/* -py/pyext - python script object for PD and MaxMSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#ifndef __PYBASE_H -#define __PYBASE_H - -#include "main.h" -#include "pysymbol.h" -#include "pybuffer.h" -#include "pybundle.h" - -#ifdef PY_USE_GIL - typedef PyGILState_STATE ThrState; -#else - typedef PyThreadState *ThrState; -#endif - -class pybase - : public flext -{ -public: - pybase(); - virtual ~pybase(); - - void Exit(); - - static PyObject *MakePyArgs(const t_symbol *s,int argc,const t_atom *argv,int inlet = -1); - static PyObject *MakePyArg(const t_symbol *s,int argc,const t_atom *argv); - static const t_symbol *GetPyArgs(AtomList &lst,PyObject *pValue,int offs = 0); - static const t_symbol *GetPyAtom(AtomList &lst,PyObject *pValue); - - static void lib_setup(); - -protected: - - virtual void DumpOut(const t_symbol *sym,int argc,const t_atom *argv) = 0; - - void m__dir(PyObject *obj); - void m__doc(PyObject *obj); - - void m_dir() { m__dir(module); } - void mg_dir(AtomList &lst) { m__dir(module); } - void m_doc() { m__doc(dict); } - - std::string modname; // module name - PyObject *module,*dict; // object module and associated dictionary - - static const char *py_doc; - - void GetDir(PyObject *obj,AtomList &lst); - - AtomList args; - - void AddCurrentPath(flext_base *o); - void SetArgs(); - - bool OutObject(flext_base *ext,int o,PyObject *obj); - - // reload module and all connected objects - void Reload(); - - bool ImportModule(const char *name); - void UnimportModule(); - bool ReloadModule(); - - // Get module registry - PyObject *GetRegistry(const char *regname); - // Set module registry - void SetRegistry(const char *regname,PyObject *reg); - - // Register object - void Register(PyObject *reg); - // Unregister object - void Unregister(PyObject *reg); - - virtual void LoadModule() = 0; - virtual void UnloadModule() = 0; - - virtual void Load() = 0; - virtual void Unload() = 0; - - void OpenEditor(); - - void Respond(bool b) - { - if(respond) { - t_atom a; - SetBool(a,b); - DumpOut(sym_response,1,&a); - } - } - - void Report() { while(PyErr_Occurred()) PyErr_Print(); } - - static bool IsAnything(const t_symbol *s) { return s && s != sym_float && s != sym_int && s != sym_symbol && s != sym_list && s != sym_pointer; } - static bool IsAtom(const t_symbol *s) { return s == sym_float || s == sym_int || s == sym_symbol || s == sym_pointer; } - -// enum retval { nothing,atom,sequ }; - - // --- module stuff ----- - - static PyObject *module_obj,*module_dict; - static PyObject *builtins_obj,*builtins_dict; - static PyMethodDef func_tbl[],attr_tbl[]; - - static PyObject *py__doc__(PyObject *,PyObject *args); - static PyObject *py_send(PyObject *,PyObject *args); -#ifdef FLEXT_THREADS - static PyObject *py_priority(PyObject *,PyObject *args); -#endif - - static PyObject *py_arraysupport(PyObject *,PyObject *args); - static PyObject *py_samplerate(PyObject *,PyObject *args); - static PyObject *py_blocksize(PyObject *,PyObject *args); - - static PyObject *py_searchpaths(PyObject *,PyObject *args); - static PyObject *py_helppaths(PyObject *,PyObject *args); - -#if FLEXT_SYS == FLEXT_SYS_PD - static PyObject *py_getvalue(PyObject *,PyObject *args); - static PyObject *py_setvalue(PyObject *,PyObject *args); -#endif - - static PyObject *py_list(PyObject *,PyObject *args); - static PyObject *py_tuple(PyObject *,PyObject *args); - - // ----thread stuff ------------ - - virtual void m_stop(int argc,const t_atom *argv); - - bool respond; -#ifdef FLEXT_THREADS - int thrcount; - bool shouldexit; - int stoptick; - Timer stoptmr; - - void tick(void *); -#endif - - int detach; - bool pymsg; - - bool gencall(PyObject *fun,PyObject *args); - - bool docall(PyObject *fun,PyObject *args) - { - callpy(fun,args); - if(PyErr_Occurred()) { - exchandle(); - return false; - } - else - return true; - } - - virtual void callpy(PyObject *fun,PyObject *args) = 0; - - void exchandle(); - - static bool collect(); - -protected: - -#ifdef FLEXT_THREADS - static void thrworker(thr_params *data); - - bool qucall(PyObject *fun,PyObject *args) - { - FifoEl *el = qufifo.New(); - el->Set(this,fun,args); - qufifo.Put(el); - qucond.Signal(); - return true; - } - - static void quworker(thr_params *); - static void pyworker(thr_params *); - void erasethreads(); - - static PyFifo qufifo; - static ThrCond qucond; - -#ifndef PY_USE_GIL - static ThrState pythrsys; -#endif -#endif - - static const t_symbol *sym_fint; // float or int symbol, depending on native number message type - static const t_symbol *sym_response; - - static const t_symbol *getone(t_atom &at,PyObject *arg); - static const t_symbol *getlist(t_atom *lst,PyObject *seq,int cnt,int offs = 0); - -public: - - static void AddToPath(const char *dir); - -#ifdef FLEXT_THREADS - // this is especially needed when one py/pyext object calls another one - // we don't want the message to be queued, but otoh we have to avoid deadlock - // (recursive calls can only happen in the system thread) - static int lockcount; - -#ifdef PY_USE_GIL - static inline ThrState FindThreadState() { return ThrState(); } - - static inline ThrState PyLock(ThrState = ThrState()) { return PyGILState_Ensure(); } - static inline ThrState PyLockSys() { return PyLock(); } - static inline void PyUnlock(ThrState st) { PyGILState_Release(st); } -#else // PY_USE_GIL - static ThrState FindThreadState(); - static void FreeThreadState(); - - static ThrState PyLock(ThrState st = FindThreadState()) - { - if(st != pythrsys || !lockcount++) PyEval_AcquireLock(); - return PyThreadState_Swap(st); - } - -#if 1 - static inline ThrState PyLockSys() { return PyLock(); } -#else - static ThrState PyLockSys() - { - if(!lockcount++) PyEval_AcquireLock(); - return PyThreadState_Swap(pythrsys); - } -#endif - - static void PyUnlock(ThrState st) - { - ThrState old = PyThreadState_Swap(st); - if(old != pythrsys || !--lockcount) PyEval_ReleaseLock(); - } -#endif // PY_USE_GIL - -#else // FLEXT_THREADS - static inline ThrState PyLock(ThrState = NULL) { return NULL; } - static inline ThrState PyLockSys() { return NULL; } - static inline void PyUnlock(ThrState st) {} -#endif - - static PyObject* StdOut_Write(PyObject* Self, PyObject* Args); -}; - -#endif diff --git a/externals/grill/py/source/pybuffer.cpp b/externals/grill/py/source/pybuffer.cpp deleted file mode 100644 index 82414e11..00000000 --- a/externals/grill/py/source/pybuffer.cpp +++ /dev/null @@ -1,828 +0,0 @@ -/* -py/pyext - python script object for PD and Max/MSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-04 12:24:43 +0100 (Fri, 04 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#include "pybase.h" - -#undef PY_ARRAYS - - -#if defined(PY_NUMERIC) || defined(PY_NUMPY) || defined(PY_NUMARRAY) - #define PY_ARRAYS 1 -#endif - -#ifdef PY_ARRAYS - -#ifdef PY_NUMARRAY -# if FLEXT_OS == FLEXT_OS_MAC -# include -# else -# include -# endif - -static NumarrayType numtype = tAny; -inline bool arrsupport() { return numtype != tAny; } - -#else -# if defined(PY_NUMPY) -# include -# else -# if FLEXT_OS == FLEXT_OS_MAC -# include -# else -# include -# endif -# endif - - static PyArray_TYPES numtype = PyArray_NOTYPE; - inline bool arrsupport() { return numtype != PyArray_NOTYPE; } -#endif -#endif - - -PyObject *pybase::py_arraysupport(PyObject *self,PyObject *args) -{ - PyObject *ret; -#ifdef PY_ARRAYS - ret = Py_True; -#else - ret = Py_False; -#endif - Py_INCREF(ret); - return ret; -} - - -// PD defines a T_OBJECT symbol -#undef T_OBJECT - -#if FLEXT_OS == FLEXT_OS_MAC -#include "Python/bufferobject.h" -#include "Python/structmember.h" -#else -#include "bufferobject.h" -#include "structmember.h" -#endif - -static PyObject *buffer_new(PyTypeObject *type, PyObject *args, PyObject *kwds) -{ - pySamplebuffer *self = (pySamplebuffer *)pySamplebuffer_Type.tp_alloc(&pySamplebuffer_Type, 0); - self->sym = NULL; - self->buf = NULL; - self->dirty = false; - return (PyObject *)self; -} - -static void buffer_dealloc(PyObject *obj) -{ - pySamplebuffer *self = (pySamplebuffer *)obj; - - if(self->buf) { - self->buf->Unlock(self->lock); - if(self->dirty) self->buf->Dirty(true); - delete self->buf; - } - - obj->ob_type->tp_free(obj); -} - -static int buffer_init(PyObject *obj, PyObject *args, PyObject *kwds) -{ - FLEXT_ASSERT(pySamplebuffer_Check(obj)); - - PyObject *arg = PySequence_GetItem(args,0); // new reference - if(!arg) return -1; - - int ret = 0; - - pySamplebuffer *self = (pySamplebuffer *)obj; - FLEXT_ASSERT(!self->sym && !self->buf); - - if(pySymbol_Check(arg)) - self->sym = pySymbol_AS_SYMBOL(arg); - else if(PyString_Check(arg)) - self->sym = flext::MakeSymbol(PyString_AS_STRING(arg)); - else - ret = -1; - Py_DECREF(arg); - - if(self->sym) { - flext::buffer *b = new flext::buffer(self->sym); - if(b->Ok() && b->Valid()) - self->lock = (self->buf = b)->Lock(); - else - delete b; - } - - return ret; -} - -static PyObject *buffer_repr(PyObject *self) -{ - FLEXT_ASSERT(pySamplebuffer_Check(self)); - return (PyObject *)PyString_FromFormat("",pySamplebuffer_AS_STRING(self)); -} - -static long buffer_hash(PyObject *self) -{ - FLEXT_ASSERT(pySamplebuffer_Check(self)); - return (long)(((pySamplebuffer *)self)->buf); -} - -static PyObject *buffer_getsymbol(pySamplebuffer* self,void *closure) -{ - if(self->sym) - return pySymbol_FromSymbol(self->sym); - else { - Py_INCREF(Py_None); - return Py_None; - } -} - -static PyGetSetDef buffer_getseters[] = { - {"symbol",(getter)buffer_getsymbol, NULL, NULL}, - {NULL} /* Sentinel */ -}; - -static PyObject *buffer_dirty(PyObject *obj) -{ - ((pySamplebuffer *)obj)->dirty = true; - Py_INCREF(Py_None); - return Py_None; -} - -static PyObject *buffer_resize(PyObject *obj,PyObject *args,PyObject *kwds) -{ - flext::buffer *b = ((pySamplebuffer *)obj)->buf; - if(b) { - int frames,keep = 1,zero = 1; - static char *kwlist[] = {"frames", "keep", "zero", NULL}; - if(!PyArg_ParseTupleAndKeywords(args, kwds, "i|ii", kwlist, &frames, &keep, &zero)) - return NULL; - - b->Frames(frames,keep != 0,zero != 0); - - Py_INCREF(obj); - return obj; - } - else { - PyErr_SetString(PyExc_RuntimeError,"Invalid buffer"); - return NULL; - } -} - -static PyMethodDef buffer_methods[] = { - {"dirty", (PyCFunction)buffer_dirty,METH_NOARGS,"Mark buffer as dirty"}, - {"resize", (PyCFunction)buffer_resize,METH_VARARGS|METH_KEYWORDS,"Resize buffer"}, - {NULL} /* Sentinel */ -}; - - - -// support the buffer protocol - -static Py_ssize_t buffer_readbuffer(PyObject *obj, Py_ssize_t segment, void **ptrptr) -{ - flext::buffer *b = ((pySamplebuffer *)obj)->buf; - ptrptr[0] = b->Data(); - return b->Channels()*b->Frames()*sizeof(t_sample); -} - -static Py_ssize_t buffer_writebuffer(PyObject *obj, Py_ssize_t segment, void **ptrptr) -{ - flext::buffer *b = ((pySamplebuffer *)obj)->buf; - ptrptr[0] = b->Data(); - return b->Channels()*b->Frames()*sizeof(t_sample); -} - -static Py_ssize_t buffer_segcount(PyObject *obj, Py_ssize_t *lenp) -{ - flext::buffer *b = ((pySamplebuffer *)obj)->buf; - if(lenp) lenp[0] = b->Channels()*b->Frames()*sizeof(t_sample); - return 1; -} - -static Py_ssize_t buffer_charbuffer(PyObject *obj, Py_ssize_t segment, -#if PY_VERSION_HEX < 0x02050000 - const -#endif - char **ptrptr) -{ - flext::buffer *b = ((pySamplebuffer *)obj)->buf; - ptrptr[0] = (char *)b->Data(); - return b->Channels()*b->Frames()*sizeof(t_sample); -} - -static PyBufferProcs buffer_as_buffer = { - buffer_readbuffer, - buffer_writebuffer, - buffer_segcount, - buffer_charbuffer -}; - -static Py_ssize_t buffer_length(PyObject *s) -{ - pySamplebuffer *self = reinterpret_cast(s); - return self->buf?self->buf->Frames():0; -} - -static PyObject *buffer_item(PyObject *s,Py_ssize_t i) -{ - pySamplebuffer *self = reinterpret_cast(s); - PyObject *ret; - if(self->buf) { - if (i < 0 || i >= self->buf->Frames()) { - PyErr_SetString(PyExc_IndexError,"Index out of range"); - ret = NULL; - } - else { - if(self->buf->Channels() == 1) - ret = PyFloat_FromDouble(self->buf->Data()[i]); - else { - PyErr_SetString(PyExc_NotImplementedError,"Multiple channels not implemented yet"); - ret = NULL; - } - } - } - else { - Py_INCREF(Py_None); - ret = Py_None; - } - return ret; -} - -PyObject *arrayfrombuffer(PyObject *buf,int c,int n) -{ -#ifdef PY_ARRAYS - if(arrsupport()) { - PyObject *arr; - int shape[2]; - shape[0] = n; - shape[1] = c; -#ifdef PY_NUMARRAY - arr = (PyObject *)NA_NewAllFromBuffer(c == 1?1:2,shape,numtype,buf,0,0,NA_ByteOrder(),1,1); -#else - void *data; - Py_ssize_t len; - int err = PyObject_AsWriteBuffer(buf,&data,&len); - if(!err) { - FLEXT_ASSERT(len <= n*c*sizeof(t_sample)); - Py_INCREF(buf); - // \todo change to new API! - arr = PyArray_FromDimsAndData(c == 1?1:2,shape,numtype,(char *)data); - } - else { - // exception string is already set - arr = NULL; - } -#endif - return arr; - } - else -#endif - return NULL; -} - -static PyObject *buffer_slice(PyObject *s,Py_ssize_t ilow = 0,Py_ssize_t ihigh = 1<<(sizeof(int)*8-2)) -{ - pySamplebuffer *self = reinterpret_cast(s); - PyObject *ret; -#ifdef PY_ARRAYS - if(arrsupport()) { - if(self->buf) { - const int n = self->buf->Frames(); - const int c = self->buf->Channels(); - if(ilow < 0) ilow += n; - if(ilow >= n) ilow = n-1; - if(ihigh < 0) ihigh += n; - if(ihigh > n) ihigh = n; - - PyObject *nobj = arrayfrombuffer((PyObject *)self,c,n); - if(ilow != 0 || ihigh != n) { - ret = PySequence_GetSlice(nobj,ilow,ihigh); - Py_DECREF(nobj); - } - else - ret = nobj; - } - else { - Py_INCREF(Py_None); - ret = Py_None; - } - } - else -#endif - { - PyErr_SetString(PyExc_RuntimeError,"No numarray support"); - ret = NULL; - } - return ret; -} - -static int buffer_ass_item(PyObject *s,Py_ssize_t i,PyObject *v) -{ - pySamplebuffer *self = reinterpret_cast(s); - int ret; - if(self->buf) { - if (i < 0 || i >= self->buf->Frames()) { - PyErr_Format(PyExc_IndexError,"Index out of range"); - ret = -1; - } - else { - if(self->buf->Channels() == 1) { - self->buf->Data()[i] = (t_sample)PyFloat_AsDouble(v); - if(PyErr_Occurred()) { - // cast to double failed - PyErr_SetString(PyExc_TypeError,"Value must be a numarray"); - ret = -1; - } - else { - self->dirty = true; - ret = 0; - } - } - else { - PyErr_SetString(PyExc_NotImplementedError,"Multiple channels not implemented yet"); - ret = -1; - } - } - } - else - ret = -1; - return ret; -} - -static int buffer_ass_slice(PyObject *s,Py_ssize_t ilow,Py_ssize_t ihigh,PyObject *value) -{ - pySamplebuffer *self = reinterpret_cast(s); - int ret; -#ifdef PY_ARRAYS - if(arrsupport()) { - if(!value) { - PyErr_SetString(PyExc_TypeError,"Object doesn't support item deletion"); - ret = -1; - } - else if(self->buf) { - const int n = self->buf->Frames(); - const int c = self->buf->Channels(); - if(ilow < 0) ilow += n; - if(ilow >= n) ilow = n-1; - if(ihigh < 0) ihigh += n; - if(ihigh > n) ihigh = n; - -#ifdef PY_NUMARRAY - PyArrayObject *out = NA_InputArray(value,numtype,NUM_C_ARRAY); -#else - PyArrayObject *out = (PyArrayObject *)PyArray_ContiguousFromObject(value,numtype,0,0); -#endif - if(!out) { - PyErr_SetString(PyExc_TypeError,"Assigned object must be a numarray"); - ret = -1; - } - else if(out->nd != 1) { - PyErr_SetString(PyExc_NotImplementedError,"Multiple dimensions not supported yet"); - ret = -1; - } - else { - int dlen = ihigh-ilow; - int slen = out->dimensions[0]; -#ifdef PY_NUMARRAY - flext::CopySamples(self->buf->Data()+ilow,(t_sample *)NA_OFFSETDATA(out),slen < dlen?slen:dlen); -#else - flext::CopySamples(self->buf->Data()+ilow,(t_sample *)out->data,slen < dlen?slen:dlen); -#endif - self->dirty = true; - ret = 0; - } - - Py_XDECREF(out); - } - else { - PyErr_SetString(PyExc_ValueError,"Buffer is not assigned"); - ret = -1; - } - } - else -#endif - { - PyErr_SetString(PyExc_RuntimeError,"No numarray support"); - ret = -1; - } - return ret; -} - -static PyObject *buffer_concat(PyObject *s,PyObject *op) -{ - pySamplebuffer *self = reinterpret_cast(s); - PyObject *nobj = buffer_slice(s); - if(nobj) { - PyObject *ret = PySequence_Concat(nobj,op); - if(ret == nobj) self->dirty = true; - Py_DECREF(nobj); - return ret; - } - else - return NULL; -} - -static PyObject *buffer_repeat(PyObject *s,Py_ssize_t rep) -{ - pySamplebuffer *self = reinterpret_cast(s); - PyObject *nobj = buffer_slice(s); - if(nobj) { - PyObject *ret = PySequence_Repeat(nobj,rep); - if(ret == nobj) self->dirty = true; - Py_DECREF(nobj); - return ret; - } - else - return NULL; -} - - -static PySequenceMethods buffer_as_seq = { - buffer_length, /* inquiry sq_length; __len__ */ - buffer_concat, /* __add__ */ - buffer_repeat, /* __mul__ */ - buffer_item, /* intargfunc sq_item; __getitem__ */ - buffer_slice, /* intintargfunc sq_slice; __getslice__ */ - buffer_ass_item, /* intobjargproc sq_ass_item; __setitem__ */ - buffer_ass_slice, /* intintobjargproc sq_ass_slice; __setslice__ */ -}; - -static PyObject *buffer_iter(PyObject *s) -{ - pySamplebuffer *self = reinterpret_cast(s); - PyObject *nobj = buffer_slice(s); - if(nobj) { - PyObject *it = PyObject_GetIter(nobj); - Py_DECREF(nobj); - return it; - } - else - return NULL; -} - - -static PyObject *buffer_add(PyObject *s,PyObject *op) -{ - pySamplebuffer *self = reinterpret_cast(s); - PyObject *nobj = buffer_slice(s); - if(nobj) { - PyObject *ret = PyNumber_Add(nobj,op); - if(ret == nobj) self->dirty = true; - Py_DECREF(nobj); - return ret; - } - else - return NULL; -} - -static PyObject *buffer_subtract(PyObject *s,PyObject *op) -{ - pySamplebuffer *self = reinterpret_cast(s); - PyObject *nobj = buffer_slice(s); - if(nobj) { - PyObject *ret = PyNumber_Subtract(nobj,op); - if(ret == nobj) self->dirty = true; - Py_DECREF(nobj); - return ret; - } - else - return NULL; -} - -static PyObject *buffer_multiply(PyObject *s,PyObject *op) -{ - pySamplebuffer *self = reinterpret_cast(s); - PyObject *nobj = buffer_slice(s); - if(nobj) { - PyObject *ret = PyNumber_Multiply(nobj,op); - if(ret == nobj) self->dirty = true; - Py_DECREF(nobj); - return ret; - } - else - return NULL; -} - -static PyObject *buffer_divide(PyObject *s,PyObject *op) -{ - pySamplebuffer *self = reinterpret_cast(s); - PyObject *nobj = buffer_slice(s); - if(nobj) { - PyObject *ret = PyNumber_Divide(nobj,op); - if(ret == nobj) self->dirty = true; - Py_DECREF(nobj); - return ret; - } - else - return NULL; -} - -static PyObject *buffer_remainder(PyObject *s,PyObject *op) -{ - pySamplebuffer *self = reinterpret_cast(s); - PyObject *nobj = buffer_slice(s); - if(nobj) { - PyObject *ret = PyNumber_Remainder(nobj,op); - if(ret == nobj) self->dirty = true; - Py_DECREF(nobj); - return ret; - } - else - return NULL; -} - -static PyObject *buffer_divmod(PyObject *s,PyObject *op) -{ - pySamplebuffer *self = reinterpret_cast(s); - PyObject *nobj = buffer_slice(s); - if(nobj) { - PyObject *ret = PyNumber_Divmod(nobj,op); - if(ret == nobj) self->dirty = true; - Py_DECREF(nobj); - return ret; - } - else - return NULL; -} - -static PyObject *buffer_power(PyObject *s,PyObject *op1,PyObject *op2) -{ - pySamplebuffer *self = reinterpret_cast(s); - PyObject *nobj = buffer_slice(s); - if(nobj) { - PyObject *ret = PyNumber_Power(nobj,op1,op2); - if(ret == nobj) self->dirty = true; - Py_DECREF(nobj); - return ret; - } - else - return NULL; -} - -static PyObject *buffer_negative(PyObject *s) -{ - pySamplebuffer *self = reinterpret_cast(s); - PyObject *nobj = buffer_slice(s); - if(nobj) { - PyObject *ret = PyNumber_Negative(nobj); - if(ret == nobj) self->dirty = true; - Py_DECREF(nobj); - return ret; - } - else - return NULL; -} - -static PyObject *buffer_pos(PyObject *s) -{ - pySamplebuffer *self = reinterpret_cast(s); - PyObject *nobj = buffer_slice(s); - if(nobj) { - PyObject *ret = PyNumber_Positive(nobj); - Py_DECREF(nobj); - return ret; - } - else - return NULL; -} - -static PyObject *buffer_absolute(PyObject *s) -{ - pySamplebuffer *self = reinterpret_cast(s); - PyObject *nobj = buffer_slice(s); - if(nobj) { - PyObject *ret = PyNumber_Absolute(nobj); - if(ret == nobj) self->dirty = true; - Py_DECREF(nobj); - return ret; - } - else - return NULL; -} - -static int buffer_coerce(PyObject **pm, PyObject **pw) -{ - if(pySamplebuffer_Check(*pw)) { - Py_INCREF(*pm); - Py_INCREF(*pw); - return 0; - } - else - return 1; -} - -static PyObject *buffer_inplace_add(PyObject *s,PyObject *op) -{ - pySamplebuffer *self = reinterpret_cast(s); - PyObject *nobj = buffer_slice(s); - if(nobj) { - PyObject *ret = PyNumber_InPlaceAdd(nobj,op); - if(ret == nobj) self->dirty = true; - Py_DECREF(nobj); - return ret; - } - else - return NULL; -} - -static PyObject *buffer_inplace_subtract(PyObject *s,PyObject *op) -{ - pySamplebuffer *self = reinterpret_cast(s); - PyObject *nobj = buffer_slice(s); - if(nobj) { - PyObject *ret = PyNumber_InPlaceSubtract(nobj,op); - if(ret == nobj) self->dirty = true; - Py_DECREF(nobj); - return ret; - } - else - return NULL; -} - -static PyObject *buffer_inplace_multiply(PyObject *s,PyObject *op) -{ - pySamplebuffer *self = reinterpret_cast(s); - PyObject *nobj = buffer_slice(s); - if(nobj) { - PyObject *ret = PyNumber_InPlaceMultiply(nobj,op); - if(ret == nobj) self->dirty = true; - Py_DECREF(nobj); - return ret; - } - else - return NULL; -} - -static PyObject *buffer_inplace_divide(PyObject *s,PyObject *op) -{ - pySamplebuffer *self = reinterpret_cast(s); - PyObject *nobj = buffer_slice(s); - if(nobj) { - PyObject *ret = PyNumber_InPlaceDivide(nobj,op); - if(ret == nobj) self->dirty = true; - Py_DECREF(nobj); - return ret; - } - else - return NULL; -} - -static PyObject *buffer_inplace_remainder(PyObject *s,PyObject *op) -{ - pySamplebuffer *self = reinterpret_cast(s); - PyObject *nobj = buffer_slice(s); - if(nobj) { - PyObject *ret = PyNumber_InPlaceRemainder(nobj,op); - if(ret == nobj) self->dirty = true; - Py_DECREF(nobj); - return ret; - } - else - return NULL; -} - -static PyObject *buffer_inplace_power(PyObject *s,PyObject *op1,PyObject *op2) -{ - pySamplebuffer *self = reinterpret_cast(s); - PyObject *nobj = buffer_slice(s); - if(nobj) { - PyObject *ret = PyNumber_InPlacePower(nobj,op1,op2); - if(ret == nobj) self->dirty = true; - Py_DECREF(nobj); - return ret; - } - else - return NULL; -} - - - -static PyNumberMethods buffer_as_number = { - (binaryfunc)buffer_add, /*nb_add*/ - (binaryfunc)buffer_subtract, /*nb_subtract*/ - (binaryfunc)buffer_multiply, /*nb_multiply*/ - (binaryfunc)buffer_divide, /*nb_divide*/ - (binaryfunc)buffer_remainder, /*nb_remainder*/ - (binaryfunc)buffer_divmod, /*nb_divmod*/ - (ternaryfunc)buffer_power, /*nb_power*/ - (unaryfunc)buffer_negative, - (unaryfunc)buffer_pos, /*nb_pos*/ - (unaryfunc)buffer_absolute, /* (unaryfunc)buffer_abs, */ - 0, //(inquiry)buffer_nonzero, /*nb_nonzero*/ - 0, /*nb_invert*/ - 0, /*nb_lshift*/ - 0, /*nb_rshift*/ - 0, /*nb_and*/ - 0, /*nb_xor*/ - 0, /*nb_or*/ - (coercion)buffer_coerce, /*nb_coerce*/ - 0, /*nb_int*/ - 0, /*nb_long*/ - 0, /*nb_float*/ - 0, /*nb_oct*/ - 0, /*nb_hex*/ - (binaryfunc)buffer_inplace_add, /* nb_inplace_add */ - (binaryfunc)buffer_inplace_subtract, /* nb_inplace_subtract */ - (binaryfunc)buffer_inplace_multiply, /* nb_inplace_multiply */ - (binaryfunc)buffer_inplace_divide, /* nb_inplace_divide */ - (binaryfunc)buffer_inplace_remainder, /* nb_inplace_remainder */ - (ternaryfunc)buffer_inplace_power, /* nb_inplace_power */ - 0, /* nb_inplace_lshift */ - 0, /* nb_inplace_rshift */ - 0, /* nb_inplace_and */ - 0, /* nb_inplace_xor */ - 0, /* nb_inplace_or */ -// buffer_floor_div, /* nb_floor_divide */ -// buffer_div, /* nb_true_divide */ -// buffer_inplace_floor_div, /* nb_inplace_floor_divide */ -// buffer_inplace_div, /* nb_inplace_true_divide */ -}; - -PyTypeObject pySamplebuffer_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "Buffer", /*tp_name*/ - sizeof(pySamplebuffer), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - buffer_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - buffer_repr, /*tp_repr*/ - &buffer_as_number, /*tp_as_number*/ - &buffer_as_seq, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - buffer_hash, /*tp_hash */ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - &buffer_as_buffer, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT /*| Py_TPFLAGS_BASETYPE*/, /*tp_flags*/ - "Samplebuffer objects", /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0 /*buffer_richcompare*/, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - buffer_iter, /* tp_iter */ - 0, /* tp_iternext */ - buffer_methods, /* tp_methods */ - 0, /* tp_members */ - buffer_getseters, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - buffer_init, /* tp_init */ - 0, /* tp_alloc */ - buffer_new, /* tp_new */ -}; - -// Must have this as a function because the import_array macro in numpy version 1.01 strangely has a return statement included. -// Furthermore the import error printout from this macro is ugly, but we accept that for more, waiting for later numpy updates to fix all of this. -static void __import_array__() -{ -#ifdef PY_NUMARRAY - import_libnumarray(); -#else - import_array(); -#endif -} - -void initsamplebuffer() -{ -#ifdef PY_ARRAYS - __import_array__(); - if(PyErr_Occurred()) - // catch import error - PyErr_Clear(); - else { - // numarray support ok -#ifdef PY_NUMARRAY - numtype = sizeof(t_sample) == 4?tFloat32:tFloat64; -#else - numtype = sizeof(t_sample) == 4?PyArray_FLOAT:PyArray_DOUBLE; -#endif - post(""); - post("Python array support enabled"); - } -#endif - - if(PyType_Ready(&pySamplebuffer_Type) < 0) - FLEXT_ASSERT(false); - else - Py_INCREF(&pySamplebuffer_Type); -} diff --git a/externals/grill/py/source/pybuffer.h b/externals/grill/py/source/pybuffer.h deleted file mode 100644 index fe6bbe63..00000000 --- a/externals/grill/py/source/pybuffer.h +++ /dev/null @@ -1,81 +0,0 @@ -/* -py/pyext - python script object for PD and Max/MSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#ifndef __PYBUFFER_H -#define __PYBUFFER_H - -#include - -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500) -#error You need at least flext version 0.5.0 -#endif - -#if FLEXT_OS == FLEXT_OS_MAC -#include -#else -#include -#endif - - -#ifdef _MSC_VER - #ifdef PY_EXPORTS - #define PY_EXPORT __declspec(dllexport) - #else - #define PY_EXPORT __declspec(dllimport) - #endif -#else - #define PY_EXPORT -#endif - -typedef struct { - PyObject_HEAD - /* Type-specific fields go here. */ - const t_symbol *sym; - flext::buffer *buf; - flext::buffer::lock_t lock; - bool dirty; -} pySamplebuffer; - -PY_EXPORT extern PyTypeObject pySamplebuffer_Type; - -#define pySamplebuffer_Check(op) PyObject_TypeCheck(op, &pySamplebuffer_Type) -#define pySamplebuffer_CheckExact(op) ((op)->ob_type == &pySamplebuffer_Type) - - -PY_EXPORT PyObject *pySamplebuffer_FromSymbol(const t_symbol *sym); - -inline PyObject *pySamplebuffer_FromString(const char *str) -{ - return pySamplebuffer_FromSymbol(flext::MakeSymbol(str)); -} - -inline PyObject *pySamplebuffer_FromString(PyObject *str) -{ - return pySamplebuffer_FromString(PyString_AsString(str)); -} - -inline const t_symbol *pySamplebuffer_AS_SYMBOL(PyObject *op) -{ - return ((pySamplebuffer *)op)->sym; -} - -inline const t_symbol *pySamplebuffer_AsSymbol(PyObject *op) -{ - return pySamplebuffer_Check(op)?pySamplebuffer_AS_SYMBOL(op):NULL; -} - -inline const char *pySamplebuffer_AS_STRING(PyObject *op) -{ - return flext::GetString(pySamplebuffer_AS_SYMBOL(op)); -} - -#endif diff --git a/externals/grill/py/source/pybundle.cpp b/externals/grill/py/source/pybundle.cpp deleted file mode 100644 index cb7e927a..00000000 --- a/externals/grill/py/source/pybundle.cpp +++ /dev/null @@ -1,234 +0,0 @@ -/* -py/pyext - python script object for PD and Max/MSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#include "pyprefix.h" -#include "pybundle.h" -#include "pyext.h" - -static PyObject *bundle_new(PyTypeObject *type, PyObject *args, PyObject *kwds) -{ - pyBundle *self = (pyBundle *)pyBundle_Type.tp_alloc(&pyBundle_Type, 0); - if(self) self->bundle = flext::MsgNew(); - return (PyObject *)self; -} - -static int bundle_init(PyObject *self, PyObject *args, PyObject *kwds) -{ - FLEXT_ASSERT(pyBundle_Check(self)); - - int len = PySequence_Length(args); - if(len) { - PyErr_SetString(PyExc_TypeError,"no arguments expected"); - return -1; - } - - return 0; -} - -static void bundle_dealloc(PyObject *obj) -{ - pyBundle *self = (pyBundle *)obj; - if(self->bundle) flext::MsgFree(self->bundle); - obj->ob_type->tp_free(obj); -} - -static PyObject *bundle_send(PyObject *obj) -{ - pyBundle *self = (pyBundle *)obj; - if(self->bundle) { - flext::ToOutMsg(self->bundle); - self->bundle = NULL; - - Py_INCREF(obj); - return obj; - } - else { - PyErr_SetString(PyExc_RuntimeError,"already sent"); - return NULL; - } -} - -static PyObject *bundle_repr(PyObject *self) -{ - FLEXT_ASSERT(pyBundle_Check(self)); - return (PyObject *)PyString_FromFormat("",pyBundle_AS_BUNDLE(self)); -} - -static PyObject *bundle_str(PyObject *self) -{ - return bundle_repr(self); -} - -static PyObject *bundle_richcompare(PyObject *a,PyObject *b,int cmp) -{ - if(pyBundle_Check(a) && pyBundle_Check(b)) { - const flext::MsgBundle *abnd = pyBundle_AS_BUNDLE(a); - const flext::MsgBundle *bbnd = pyBundle_AS_BUNDLE(b); - bool ret; - switch(cmp) { - case Py_LT: ret = abnd < bbnd; break; - case Py_LE: ret = abnd <= bbnd; break; - case Py_EQ: ret = abnd == bbnd; break; - case Py_NE: ret = abnd != bbnd; break; - case Py_GT: ret = abnd > bbnd; break; - case Py_GE: ret = abnd >= bbnd; break; - } - return PyBool_FromLong(ret); - } - Py_INCREF(Py_NotImplemented); - return Py_NotImplemented; -} - -static long bundle_hash(PyObject *self) -{ - FLEXT_ASSERT(pyBundle_Check(self)); - return (long)pyBundle_AS_BUNDLE(self); -} - - -static PyObject *bundle_append(PyObject *self,PyObject *args) -{ - flext::MsgBundle *b = pyBundle_AS_BUNDLE(self); - if(b) { - int sz = PyTuple_GET_SIZE(args),offs = 0; - PyObject *tg,*outl; - pyext *ext = NULL; - const t_symbol *recv; - int o; - - if(sz > 2 && - (tg = PyTuple_GET_ITEM(args,0)) != NULL && PyInstance_Check(tg) && - (outl = PyTuple_GET_ITEM(args,1)) != NULL && PyInt_Check(outl) - ) { - // Sending to outlet - ext = pyext::GetThis(tg); - o = PyInt_AS_LONG(outl); - - if(o < 1 || o > ext->Outlets()) { - PyErr_SetString(PyExc_ValueError,"Outlet index out of range"); - return NULL; - } - - offs += 2; - } - else if(sz > 1 && - (tg = PyTuple_GET_ITEM(args,0)) != NULL && (recv = pyObject_AsSymbol(tg)) != NULL - ) { - // Sending to receiver - offs++; - } - else { - // not recognized - PyErr_SetString(PyExc_SyntaxError,"Unrecognized arguments"); - return NULL; - } - - PyObject *val; - if(sz-offs == 1) { - val = PyTuple_GET_ITEM(args,offs); // borrow reference - Py_INCREF(val); - } - else - val = PyTuple_GetSlice(args,offs,sz); // new ref - - flext::AtomListStatic<16> lst; - const t_symbol *sym = pybase::GetPyArgs(lst,val); - Py_DECREF(val); - - if(sym) { - if(ext) { - FLEXT_ASSERT(outl); - ext->MsgAddAnything(b,o-1,sym,lst.Count(),lst.Atoms()); - } - else { - FLEXT_ASSERT(sym); - if(!flext::MsgForward(b,recv,sym,lst.Count(),lst.Atoms())) { - PyErr_SetString(PyExc_ValueError,"Receiver not found"); - return NULL; - } - } - - Py_INCREF(Py_None); - return Py_None; - } - else { - FLEXT_ASSERT(PyErr_Occurred()); - return NULL; - } - - Py_INCREF(self); - return self; - } - else { - PyErr_SetString(PyExc_RuntimeError,"Invalid bundle"); - return NULL; - } -} - -static PyMethodDef bundle_methods[] = { - {"append", (PyCFunction)bundle_append,METH_VARARGS,"Append message to bundle"}, - {"send", (PyCFunction)bundle_send,METH_NOARGS,"Send bundle"}, - {NULL} /* Sentinel */ -}; - - - -PyTypeObject pyBundle_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "Bundle", /*tp_name*/ - sizeof(pyBundle), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - bundle_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - bundle_repr, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - bundle_hash, /*tp_hash */ - 0, /*tp_call*/ - bundle_str, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT /*| Py_TPFLAGS_BASETYPE*/, /*tp_flags*/ - "Bundle objects", /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - bundle_richcompare, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - bundle_methods, /* tp_methods */ - 0, /* tp_members */ - 0, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - bundle_init, /* tp_init */ - 0, /* tp_alloc */ - bundle_new, /* tp_new */ -}; - - -void initbundle() -{ - if(PyType_Ready(&pyBundle_Type) < 0) - FLEXT_ASSERT(false); - else - Py_INCREF(&pyBundle_Type); -} diff --git a/externals/grill/py/source/pybundle.h b/externals/grill/py/source/pybundle.h deleted file mode 100644 index f525f219..00000000 --- a/externals/grill/py/source/pybundle.h +++ /dev/null @@ -1,62 +0,0 @@ -/* -py/pyext - python script object for PD and Max/MSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#ifndef __PYBUNDLE_H -#define __PYBUNDLE_H - -#include - -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500) -#error You need at least flext version 0.5.0 -#endif - -#if FLEXT_OS == FLEXT_OS_MAC -#include -#else -#include -#endif - - -#ifdef _MSC_VER - #ifdef PY_EXPORTS - #define PY_EXPORT __declspec(dllexport) - #else - #define PY_EXPORT __declspec(dllimport) - #endif -#else - #define PY_EXPORT -#endif - -typedef struct { - PyObject_HEAD - /* Type-specific fields go here. */ - flext::MsgBundle *bundle; -} pyBundle; - -PY_EXPORT extern PyTypeObject pyBundle_Type; - -#define pyBundle_Check(op) PyObject_TypeCheck(op, &pyBundle_Type) -#define pyBundle_CheckExact(op) ((op)->ob_type == &pyBundle_Type) - - -inline flext::MsgBundle *pyBundle_AS_BUNDLE(PyObject *op) -{ - return ((pyBundle *)op)->bundle; -} - -inline flext::MsgBundle *pyBundle_AsBundle(PyObject *op) -{ - return pyBundle_Check(op)?pyBundle_AS_BUNDLE(op):NULL; -} - - -#endif diff --git a/externals/grill/py/source/pydsp.cpp b/externals/grill/py/source/pydsp.cpp deleted file mode 100644 index 38edb6cd..00000000 --- a/externals/grill/py/source/pydsp.cpp +++ /dev/null @@ -1,192 +0,0 @@ -/* -py/pyext - python script object for PD and Max/MSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#ifndef PY_NODSP - -#include "pyext.h" - -class pydsp - : public pyext -{ - FLEXT_HEADER(pydsp,pyext) -public: - pydsp(int argc,const t_atom *argv); - -protected: - virtual bool CbDsp(); - virtual void CbSignal(); - - virtual bool DoInit(); - virtual void DoExit(); - - virtual PyObject *GetSig(int ix,bool in); - - void NewBuffers(); - void FreeBuffers(); - - PyObject *dspfun,*sigfun; - PyObject **buffers; -}; - -FLEXT_LIB_DSP_V("pyext~ pyext.~ pyx~ pyx.~",pydsp) - -pydsp::pydsp(int argc,const t_atom *argv) - : pyext(argc,argv,true) - , dspfun(NULL),sigfun(NULL) -{} - -bool pydsp::DoInit() -{ - if(!pyext::DoInit()) return false; - - if(pyobj) - { - dspfun = PyObject_GetAttrString(pyobj,"_dsp"); // get ref - if(!dspfun) - PyErr_Clear(); - else if(!PyMethod_Check(dspfun)) { - Py_DECREF(dspfun); - dspfun = NULL; - } - } - return true; -} - -void pydsp::DoExit() -{ - if(dspfun) { Py_DECREF(dspfun); dspfun = NULL; } - if(sigfun) { Py_DECREF(sigfun); sigfun = NULL; } - - FreeBuffers(); -} - -PyObject *arrayfrombuffer(PyObject *buf,int c,int n); - -void pydsp::NewBuffers() -{ - int i,n = Blocksize(); - const int ins = CntInSig(),outs = CntOutSig(); - t_sample *const *insigs = InSig(); - t_sample *const *outsigs = OutSig(); - - // inlet/outlet count can't change so we don't have to deallocate - if(!buffers) { - int cnt = ins+outs; - buffers = new PyObject *[cnt]; - memset(buffers,0,cnt*sizeof(*buffers)); - } - - for(i = 0; i < ins; ++i) { - Py_XDECREF(buffers[i]); - PyObject *b = PyBuffer_FromReadWriteMemory(insigs[i],n*sizeof(t_sample)); - buffers[i] = arrayfrombuffer(b,1,n); - Py_DECREF(b); - } - for(i = 0; i < outs; ++i) { - Py_XDECREF(buffers[ins+i]); - if(i < ins && outsigs[i] == insigs[i]) { - // same vectors - share the objects! - buffers[ins+i] = buffers[i]; - Py_XINCREF(buffers[i]); - } - else { - PyObject *b = PyBuffer_FromReadWriteMemory(outsigs[i],n*sizeof(t_sample)); - buffers[ins+i] = arrayfrombuffer(b,1,n); - Py_DECREF(b); - } - } -} - -void pydsp::FreeBuffers() -{ - if(buffers) { - int cnt = CntInSig()+CntOutSig(); - for(int i = 0; i < cnt; ++i) Py_XDECREF(buffers[i]); - delete[] buffers; - buffers = NULL; - } -} - -bool pydsp::CbDsp() -{ - if(pyobj && (CntInSig() || CntOutSig())) - { - ThrState state = PyLockSys(); - - NewBuffers(); - - bool dodsp = true; - if(dspfun) { - PyObject *ret = PyObject_CallObject(dspfun,NULL); - if(ret) { - dodsp = PyObject_IsTrue(ret) != 0; - Py_DECREF(ret); - } - else { -#ifdef FLEXT_DEBUG - PyErr_Print(); -#else - PyErr_Clear(); -#endif - } - } - - // do that here instead of where dspfun is initialized, so that - // _signal can be assigned in _dsp - // optimizations may be done there to assign the right _signal version - Py_XDECREF(sigfun); - - if(dodsp) { - sigfun = PyObject_GetAttrString(pyobj,"_signal"); // get ref - if(!sigfun) - PyErr_Clear(); - else if(!PyMethod_Check(sigfun)) { - Py_DECREF(sigfun); - sigfun = NULL; - } - } - else - sigfun = NULL; - - PyUnlock(state); - return sigfun != NULL; - } - else - // switch on dsp only if there are signal inlets or outlets - return false; -} - -void pydsp::CbSignal() -{ - ThrState state = PyLockSys(); - PyObject *ret = PyObject_CallObject(sigfun,NULL); - - if(ret) - Py_DECREF(ret); - else { -#ifdef FLEXT_DEBUG - PyErr_Print(); -#else - PyErr_Clear(); -#endif - } - PyUnlock(state); -} - -PyObject *pydsp::GetSig(int ix,bool in) -{ - PyObject *r = buffers[in?ix:CntInSig()+ix]; - Py_XINCREF(r); - return r; -} - -#endif diff --git a/externals/grill/py/source/pyext.cpp b/externals/grill/py/source/pyext.cpp deleted file mode 100644 index b2b7baca..00000000 --- a/externals/grill/py/source/pyext.cpp +++ /dev/null @@ -1,662 +0,0 @@ -/* -py/pyext - python script object for PD and Max/MSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#include "pyext.h" -#include - - -FLEXT_LIB_V("pyext pyext. pyx pyx.",pyext) - - -static const t_symbol *sym_get; - -void pyext::Setup(t_classid c) -{ - sym_get = flext::MakeSymbol("get"); - - FLEXT_CADDMETHOD_(c,0,"doc",m_doc); - FLEXT_CADDMETHOD_(c,0,"dir",m_dir); -#ifdef FLEXT_THREADS - FLEXT_CADDATTR_VAR1(c,"detach",detach); - FLEXT_CADDMETHOD_(c,0,"stop",m_stop); -#endif - - FLEXT_CADDMETHOD_(c,0,"help",m_help); - - FLEXT_CADDMETHOD_(c,0,"reload",m_reload_); - FLEXT_CADDMETHOD_(c,0,"reload.",m_reload); - FLEXT_CADDMETHOD_(c,0,"doc+",m_doc_); - FLEXT_CADDMETHOD_(c,0,"dir+",m_dir_); - FLEXT_CADDATTR_GET(c,"dir+",mg_dir_); - - FLEXT_CADDATTR_VAR(c,"args",initargs,ms_initargs); - - FLEXT_CADDMETHOD_(c,0,"get",m_get); - FLEXT_CADDMETHOD_(c,0,"set",m_set); - - FLEXT_CADDMETHOD_(c,0,"edit",CbClick); - - FLEXT_CADDATTR_VAR1(c,"py",pymsg); - FLEXT_CADDATTR_VAR1(c,"respond",respond); - - // ---------------------------------------------------- - - // register/initialize pyext base class along with module - class_dict = PyDict_New(); - PyObject *className = PyString_FromString(PYEXT_CLASS); - PyMethodDef *def; - - // add setattr/getattr to class - for(def = attr_tbl; def->ml_name; def++) { - PyObject *func = PyCFunction_New(def, NULL); - PyDict_SetItemString(class_dict, def->ml_name, func); - Py_DECREF(func); - } - - class_obj = PyClass_New(NULL, class_dict, className); - Py_DECREF(className); - - // add methods to class - for (def = meth_tbl; def->ml_name != NULL; def++) { - PyObject *func = PyCFunction_New(def, NULL); - PyObject *method = PyMethod_New(func, NULL, class_obj); // increases class_obj ref count by 1 - PyDict_SetItemString(class_dict, def->ml_name, method); - Py_DECREF(func); - Py_DECREF(method); - } - -#if PY_VERSION_HEX >= 0x02020000 - // not absolutely necessary, existent in python 2.2 upwards - // make pyext functions available in class scope - PyDict_Merge(class_dict,module_dict,0); -#endif - // after merge so that it's not in class_dict as well... - PyDict_SetItemString(module_dict, PYEXT_CLASS,class_obj); // increases class_obj ref count by 1 - - PyDict_SetItemString(class_dict,"__doc__",PyString_FromString(pyext_doc)); -} - -pyext *pyext::GetThis(PyObject *self) -{ - PyObject *th = PyObject_GetAttrString(self,"_this"); - if(th) { - pyext *ret = static_cast(PyLong_AsVoidPtr(th)); - Py_DECREF(th); - return ret; - } - else { - PyErr_Clear(); - return NULL; - } -} - -void pyext::SetThis() -{ - // remember the this pointer - PyObject *th = PyLong_FromVoidPtr(this); - PyObject_SetAttrString(pyobj,"_this",th); // ref is taken -} - -void pyext::ClearThis() -{ - int ret = PyObject_DelAttrString(pyobj,"_this"); - FLEXT_ASSERT(ret != -1); -} - -PyObject *pyext::class_obj = NULL; -PyObject *pyext::class_dict = NULL; - -pyext::pyext(int argc,const t_atom *argv,bool sig): - methname(NULL), - pyobj(NULL), - inlets(-1),outlets(-1), - siginlets(0),sigoutlets(0) -#ifndef PY_USE_GIL - ,pythr(NULL) -#endif -{ -#ifdef FLEXT_THREADS - FLEXT_ADDTIMER(stoptmr,tick); -#endif - - if(argc >= 2 && CanbeInt(argv[0]) && CanbeInt(argv[1])) { - inlets = GetAInt(argv[0]); - outlets = GetAInt(argv[1]); - argv += 2,argc -= 2; - } - - if(sig && argc >= 2 && CanbeInt(argv[0]) && CanbeInt(argv[1])) { - siginlets = GetAInt(argv[0]); - sigoutlets = GetAInt(argv[1]); - argv += 2,argc -= 2; - } - - const t_symbol *clname = NULL; - - // check if the object name is pyext. , pyx. or similar - bool dotted = strrchr(thisName(),'.') != NULL; - - ThrState state = PyLockSys(); - - // init script module - if(argc) { - AddCurrentPath(this); - - const t_symbol *scr = GetASymbol(*argv); - argv++,argc--; - - if(scr) { - char modnm[64]; - strcpy(modnm,GetString(scr)); - - if(!dotted) { - char *pt = strrchr(modnm,'.'); // search for last dot - if(pt && *pt) { - clname = MakeSymbol(pt+1); - *pt = 0; - } - } - - ImportModule(modnm); - } - else - PyErr_SetString(PyExc_ValueError,"Invalid module name"); - - // check for alias creation names - if(dotted) clname = scr; - } - - Register(GetRegistry(REGNAME)); - - if(argc || clname) { - if(!clname) { - clname = GetASymbol(*argv); - argv++,argc--; - } - - if(clname) - methname = clname; - else - PyErr_SetString(PyExc_ValueError,"Invalid class name"); - } - - if(argc) initargs(argc,argv); - - Report(); - - PyUnlock(state); -} - -bool pyext::Init() -{ - ThrState state = PyLockSys(); - - if(methname) { - MakeInstance(); - if(pyobj) InitInOut(inlets,outlets); - } - else - inlets = outlets = 0; - - if(inlets < 0) inlets = 0; - if(outlets < 0) outlets = 0; - - AddInSignal(siginlets); - AddInAnything((siginlets?0:1)+inlets); - AddOutSignal(sigoutlets); - AddOutAnything(outlets); - - Report(); - PyUnlock(state); - - return pyobj && flext_dsp::Init(); -} - -bool pyext::Finalize() -{ - bool ok = true; - ThrState state = PyLockSys(); - - PyObject *init = PyObject_GetAttrString(pyobj,"_init"); // get ref - if(init) { - if(PyMethod_Check(init)) { - PyObject *res = PyObject_CallObject(init,NULL); - if(!res) { - // exception is set - ok = false; - // we want to know why __init__ failed... - PyErr_Print(); - } - else - Py_DECREF(res); - } - Py_DECREF(init); - } - else - // __init__ has not been found - don't care - PyErr_Clear(); - - PyUnlock(state); - return ok && flext_dsp::Finalize(); -} - -void pyext::Exit() -{ - pybase::Exit(); // exit threads - - ThrState state = PyLockSys(); - DoExit(); - - Unregister(GetRegistry(REGNAME)); - UnimportModule(); - - Report(); - PyUnlock(state); - - flext_dsp::Exit(); -} - -bool pyext::DoInit() -{ - // call init now, after _this has been set, which is - // important for eventual callbacks from __init__ to c - PyObject *pargs = MakePyArgs(NULL,initargs.Count(),initargs.Atoms()); - if(pargs) { - bool ok = true; - - SetThis(); - - PyObject *init = PyObject_GetAttrString(pyobj,"__init__"); // get ref - if(init) { - if(PyMethod_Check(init)) { - PyObject *res = PyObject_CallObject(init,pargs); - if(!res) { - // exception is set - ok = false; - // we want to know why __init__ failed... - PyErr_Print(); - } - else - Py_DECREF(res); - } - Py_DECREF(init); - } - else - // __init__ has not been found - don't care - PyErr_Clear(); - - Py_DECREF(pargs); - return ok; - } - else - return false; -} - -void pyext::DoExit() -{ - ClearBinding(); - - bool gcrun = false; - if(pyobj) { - // try to run del to clean up the class instance - PyObject *objdel = PyObject_GetAttrString(pyobj,"_del"); - if(objdel) { - PyObject *ret = PyObject_CallObject(objdel,NULL); - if(ret) - Py_DECREF(ret); - else - PyErr_Print(); - Py_DECREF(objdel); - } - else - // _del has not been found - don't care - PyErr_Clear(); - - ClearThis(); - - gcrun = pyobj->ob_refcnt > 1; - Py_DECREF(pyobj); // opposite of SetClssMeth - } - - if(gcrun && !collect()) { - post("%s - Unloading: Object is still referenced",thisName()); - } -} - -bool pyext::InitInOut(int &inl,int &outl) -{ - if(inl >= 0) { - // set number of inlets - int ret = PyObject_SetAttrString(pyobj,"_inlets",PyInt_FromLong(inl)); - FLEXT_ASSERT(!ret); - } - if(outl >= 0) { - // set number of outlets - int ret = PyObject_SetAttrString(pyobj,"_outlets",PyInt_FromLong(outl)); - FLEXT_ASSERT(!ret); - } - - // __init__ can override the number of inlets and outlets - if(!DoInit()) // call __init__ constructor - return false; - - if(inl < 0) { - // get number of inlets - inl = inlets; - PyObject *res = PyObject_GetAttrString(pyobj,"_inlets"); // get ref - if(res) { - if(PyCallable_Check(res)) { - PyObject *fres = PyEval_CallObject(res,NULL); - Py_DECREF(res); - res = fres; - } - if(PyInt_Check(res)) - inl = PyInt_AS_LONG(res); - Py_DECREF(res); - } - else - PyErr_Clear(); - } - if(outl < 0) { - // get number of outlets - outl = outlets; - PyObject *res = PyObject_GetAttrString(pyobj,"_outlets"); // get ref - if(res) { - if(PyCallable_Check(res)) { - PyObject *fres = PyEval_CallObject(res,NULL); - Py_DECREF(res); - res = fres; - } - if(PyInt_Check(res)) - outl = PyInt_AS_LONG(res); - Py_DECREF(res); - } - else - PyErr_Clear(); - } - - return true; -} - -bool pyext::MakeInstance() -{ - // pyobj should already have been decref'd / cleared before getting here!! - - if(module && methname) { - PyObject *pref = PyObject_GetAttrString(module,const_cast(GetString(methname))); - if(!pref) - PyErr_Print(); - else { - if(PyClass_Check(pref)) { - // make instance, but don't call __init__ - pyobj = PyInstance_NewRaw(pref,NULL); - - if(!pyobj) PyErr_Print(); - } - else - post("%s - Type of \"%s\" is unhandled!",thisName(),GetString(methname)); - - Py_DECREF(pref); - } - return true; - } - else - return false; -} - -void pyext::LoadModule() -{ -} - -void pyext::UnloadModule() -{ -} - -void pyext::Load() -{ - FLEXT_ASSERT(!pyobj); - - bool ok = MakeInstance(); - - if(ok) { - int inl = -1,outl = -1; - ok = InitInOut(inl,outl); - - if((inl >= 0 && inl != inlets) || (outl >= 0 && outl != outlets)) - post("%s - Inlet and outlet count can't be changed by reload",thisName()); - } - -// return ok; -} - -void pyext::Unload() -{ - DoExit(); - pyobj = NULL; -} - -void pyext::m_get(const t_symbol *s) -{ - ThrState state = PyLockSys(); - - PyObject *pvar = PyObject_GetAttrString(pyobj,const_cast(GetString(s))); /* fetch bound method */ - if(pvar) { - flext::AtomListStatic<16> lst; - const t_symbol *sym = GetPyArgs(lst,pvar,1); - if(sym) { - FLEXT_ASSERT(!IsAnything(sym)); - // dump value to attribute outlet - SetSymbol(lst[0],s); - ToOutAnything(GetOutAttr(),sym_get,lst.Count(),lst.Atoms()); - } - - Py_DECREF(pvar); - } - - Report(); - - PyUnlock(state); -} - -void pyext::m_set(int argc,const t_atom *argv) -{ - ThrState state = PyLockSys(); - - if(argc < 2 || !IsString(argv[0])) - post("%s - Syntax: set varname arguments...",thisName()); - else if(*GetString(argv[0]) == '_') - post("%s - set: variables with leading _ are reserved and can't be set",thisName()); - else { - char *ch = const_cast(GetString(argv[0])); - if(PyObject_HasAttrString(pyobj,ch)) { - PyObject *pval = MakePyArgs(NULL,argc-1,argv+1); - if(pval) { - if(PySequence_Size(pval) == 1) { - // reduce lists of one element to element itself - - PyObject *val1 = PySequence_GetItem(pval,0); // new reference - Py_DECREF(pval); - pval = val1; - } - - PyObject_SetAttrString(pyobj,ch,pval); - Py_DECREF(pval); - } - } - } - - Report(); - - PyUnlock(state); -} - - -bool pyext::CbMethodResort(int n,const t_symbol *s,int argc,const t_atom *argv) -{ - if(!n) - return flext_dsp::CbMethodResort(n,s,argc,argv); - - return pyobj && work(n,s,argc,argv); -} - - -void pyext::m_help() -{ - post(""); - post("%s %s - python class object, (C)2002-2008 Thomas Grill",thisName(),PY__VERSION); -#ifdef FLEXT_DEBUG - post("DEBUG VERSION, compiled on " __DATE__ " " __TIME__); -#endif - - post("Arguments: %s {inlets outlets} [script name] [class name] {args...}",thisName()); - - post("Inlet 1: messages to control the pyext object"); - post(" 2...: python inlets"); - post("Outlets: python outlets"); - post("Methods:"); - post("\thelp: shows this help"); - post("\treload {args...}: reload python script"); - post("\treload. : reload with former arguments"); - post("\tdoc: display module doc string"); - post("\tdoc+: display class doc string"); - post("\tdir: dump module dictionary"); - post("\tdir+: dump class dictionary"); -#ifdef FLEXT_THREADS - post("\tdetach 0/1: detach threads"); - post("\tstop {wait time (ms)}: stop threads"); -#endif - post(""); -} - -void pyext::callpy(PyObject *fun,PyObject *args) -{ - PyObject *ret = PyObject_CallObject(fun,args); - if(ret) { - // function worked fine - if(!PyObject_Not(ret)) post("pyext - returned value is ignored"); - Py_DECREF(ret); - } -} - - -bool pyext::call(const char *meth,int inlet,const t_symbol *s,int argc,const t_atom *argv) -{ - bool ret = false; - - PyObject *pmeth = PyObject_GetAttrString(pyobj,const_cast(meth)); /* fetch bound method */ - if(pmeth == NULL) { - PyErr_Clear(); // no method found - } - else { - PyObject *pargs = MakePyArgs(s,argc,argv,inlet?inlet:-1); //,true); - if(!pargs) { - PyErr_Print(); - Py_DECREF(pmeth); - } - else { - gencall(pmeth,pargs); - ret = true; - } - } - return ret; -} - -bool pyext::work(int n,const t_symbol *s,int argc,const t_atom *argv) -{ - bool ret = false; - - ThrState state = PyLock(); - - // should be enough... - char str[256]; - - // offset inlet index by signal inlets - // \note first one is shared with messages! - if(siginlets) n += siginlets-1; - - // try tag/inlet - if(!ret) { - sprintf(str,"%s_%i",GetString(s),n); - ret = call(str,0,NULL,argc,argv); - } - - if(!ret && argc == 1) { - if(s == sym_float) { - // try truncated float - t_atom at; SetInt(at,GetAInt(argv[0])); - sprintf(str,"int_%i",n); - ret = call(str,0,NULL,1,&at); - } - else if(s == sym_int) { - // try floating int - t_atom at; SetFloat(at,GetAFloat(argv[0])); - sprintf(str,"float_%i",n); - ret = call(str,0,NULL,1,&at); - } - } - - // try anything/inlet - if(!ret) { - sprintf(str,"_anything_%i",n); - ret = call(str,0,s,argc,argv); - } - - // try tag at any inlet - if(!ret) { - sprintf(str,"%s_",GetString(s)); - ret = call(str,n,NULL,argc,argv); - } - - if(!ret && argc == 1) { - if(s == sym_float) { - // try truncated float at any inlet - t_atom at; SetInt(at,GetAInt(argv[0])); - ret = call("int_",0,NULL,1,&at); - } - else if(s == sym_int) { - // try floating int at any inlet - t_atom at; SetFloat(at,GetAFloat(argv[0])); - ret = call("float_",0,NULL,1,&at); - } - } - - if(!ret) { - // try anything at any inlet - const char *str1 = "_anything_"; - if(s == sym_bang && !argc) { - t_atom argv; - SetSymbol(argv,sym__); - ret = call(str1,n,s,1,&argv); - } - else - ret = call(str1,n,s,argc,argv); - } - - if(!ret) - // no matching python method found - post("%s - no matching method found for '%s' into inlet %i",thisName(),GetString(s),n); - - PyUnlock(state); - - Respond(ret); - return ret; -} - -PyObject *pyext::GetSig(int ix,bool in) { return NULL; } - -void pyext::CbClick() { pybase::OpenEditor(); } -bool pyext::CbDsp() { return false; } - -void pyext::DumpOut(const t_symbol *sym,int argc,const t_atom *argv) -{ - ToOutAnything(GetOutAttr(),sym?sym:thisTag(),argc,argv); -} diff --git a/externals/grill/py/source/pyext.h b/externals/grill/py/source/pyext.h deleted file mode 100644 index acfef40d..00000000 --- a/externals/grill/py/source/pyext.h +++ /dev/null @@ -1,158 +0,0 @@ -/* -py/pyext - python external object for PD and MaxMSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#ifndef __PYEXT_H -#define __PYEXT_H - -#include "pybase.h" - -class pyext - : public pybase - , public flext_dsp -{ - FLEXT_HEADER_S(pyext,flext_dsp,Setup) - -public: - pyext(int argc,const t_atom *argv,bool sig = false); - - static PyObject *pyext__str__(PyObject *,PyObject *args); - - static PyObject *pyext_outlet(PyObject *,PyObject *args); -#if FLEXT_SYS == FLEXT_SYS_PD - static PyObject *pyext_tocanvas(PyObject *,PyObject *args); -#endif - - static PyObject *pyext_setattr(PyObject *,PyObject *args); - static PyObject *pyext_getattr(PyObject *,PyObject *args); - - static PyObject *pyext_detach(PyObject *,PyObject *args); - static PyObject *pyext_stop(PyObject *,PyObject *args); - static PyObject *pyext_isthreaded(PyObject *,PyObject *); - - static PyObject *pyext_inbuf(PyObject *,PyObject *args); - static PyObject *pyext_invec(PyObject *,PyObject *args); - static PyObject *pyext_outbuf(PyObject *,PyObject *args); - static PyObject *pyext_outvec(PyObject *,PyObject *args); - - int Inlets() const { return inlets; } - int Outlets() const { return outlets; } - - static pyext *GetThis(PyObject *self); - -protected: - - virtual bool Init(); - virtual bool Finalize(); - virtual void Exit(); - - virtual bool CbMethodResort(int n,const t_symbol *s,int argc,const t_atom *argv); - virtual void CbClick(); - virtual bool CbDsp(); - - virtual void DumpOut(const t_symbol *sym,int argc,const t_atom *argv); - - bool work(int n,const t_symbol *s,int argc,const t_atom *argv); - - void m_help(); - - void m_reload() { Reload(); } - void m_reload_(int argc,const t_atom *argv) { initargs(argc,argv); Reload(); } - void ms_initargs(const AtomList &a) { m_reload_(a.Count(),a.Atoms()); } - void m_dir_() { m__dir(pyobj); } - void mg_dir_(AtomList &lst) { GetDir(pyobj,lst); } - void m_doc_() { m__doc(((PyInstanceObject *)pyobj)->in_class->cl_dict); } - - void m_get(const t_symbol *s); - void m_set(int argc,const t_atom *argv); - - const t_symbol *methname; - PyObject *pyobj; - int inlets,outlets; - int siginlets,sigoutlets; - - flext::AtomList initargs; - - virtual void LoadModule(); - virtual void UnloadModule(); - - virtual void Load(); - virtual void Unload(); - - virtual bool DoInit(); - virtual void DoExit(); - - virtual PyObject *GetSig(int ix,bool in); - -private: - static void Setup(t_classid); - - void SetThis(); - void ClearThis(); - - void ClearBinding(); - bool MakeInstance(); - bool InitInOut(int &inlets,int &outlets); - - static PyObject *class_obj,*class_dict; - static PyMethodDef attr_tbl[],meth_tbl[]; - static const char *pyext_doc; - - // -------- bind stuff ------------------ - static PyObject *pyext_bind(PyObject *,PyObject *args); - static PyObject *pyext_unbind(PyObject *,PyObject *args); - - // --------------------------- - - bool call(const char *meth,int inlet,const t_symbol *s,int argc,const t_atom *argv); - - virtual void callpy(PyObject *fun,PyObject *args); - static bool stcallpy(PyObject *fun,PyObject *args); - -#ifndef PY_USE_GIL - ThrState pythr; -#endif - -private: - static bool boundmeth(flext_base *,t_symbol *sym,int argc,t_atom *argv,void *data); - - FLEXT_CALLBACK(m_help) - - FLEXT_CALLBACK(m_reload) - FLEXT_CALLBACK_V(m_reload_) - FLEXT_CALLBACK(m_dir_) - FLEXT_CALLGET_V(mg_dir_) - FLEXT_CALLBACK(m_doc_) - - FLEXT_ATTRGET_V(initargs) - FLEXT_CALLSET_V(ms_initargs) - - FLEXT_CALLBACK_S(m_get) - FLEXT_CALLBACK_V(m_set) - - // callbacks - FLEXT_ATTRVAR_I(detach) - FLEXT_ATTRVAR_B(pymsg) - FLEXT_ATTRVAR_B(respond) - - FLEXT_CALLBACK_V(m_stop) - FLEXT_CALLBACK(m_dir) - FLEXT_CALLGET_V(mg_dir) - FLEXT_CALLBACK(m_doc) - - FLEXT_CALLBACK(CbClick) - -#ifdef FLEXT_THREADS - FLEXT_CALLBACK_T(tick) -#endif -}; - -#endif diff --git a/externals/grill/py/source/pymeth.cpp b/externals/grill/py/source/pymeth.cpp deleted file mode 100644 index e696e89b..00000000 --- a/externals/grill/py/source/pymeth.cpp +++ /dev/null @@ -1,430 +0,0 @@ -/* -py/pyext - python script object for PD and Max/MSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#include "pybase.h" -#include - -struct xlt { const t_symbol *from,*to; }; - -static const xlt xtdefs[] = { - { flext::MakeSymbol("+"),flext::MakeSymbol("__add__") }, - { flext::MakeSymbol("+="),flext::MakeSymbol("__iadd__") }, - { flext::MakeSymbol("!+"),flext::MakeSymbol("__radd__") }, - { flext::MakeSymbol("-"),flext::MakeSymbol("__sub__") }, - { flext::MakeSymbol("-="),flext::MakeSymbol("__isub__") }, - { flext::MakeSymbol("!-"),flext::MakeSymbol("__rsub__") }, - { flext::MakeSymbol("*"),flext::MakeSymbol("__mul__") }, - { flext::MakeSymbol("*="),flext::MakeSymbol("__imul__") }, - { flext::MakeSymbol("!*"),flext::MakeSymbol("__rmul__") }, - { flext::MakeSymbol("/"),flext::MakeSymbol("__div__") }, - { flext::MakeSymbol("/="),flext::MakeSymbol("__idiv__") }, - { flext::MakeSymbol("!/"),flext::MakeSymbol("__rdiv__") }, - { flext::MakeSymbol("//"),flext::MakeSymbol("__floordiv__") }, - { flext::MakeSymbol("//="),flext::MakeSymbol("__ifloordiv__") }, - { flext::MakeSymbol("!//"),flext::MakeSymbol("__rfloordiv__") }, - { flext::MakeSymbol("%"),flext::MakeSymbol("__mod__") }, - { flext::MakeSymbol("%="),flext::MakeSymbol("__imod__") }, - { flext::MakeSymbol("!%"),flext::MakeSymbol("__rmod__") }, - { flext::MakeSymbol("**"),flext::MakeSymbol("__pow__") }, - { flext::MakeSymbol("**="),flext::MakeSymbol("__ipow__") }, - { flext::MakeSymbol("!**"),flext::MakeSymbol("__rpow__") }, - { flext::MakeSymbol("&"),flext::MakeSymbol("__and__") }, - { flext::MakeSymbol("&="),flext::MakeSymbol("__iand__") }, - { flext::MakeSymbol("!&"),flext::MakeSymbol("__rand__") }, - { flext::MakeSymbol("|"),flext::MakeSymbol("__or__") }, - { flext::MakeSymbol("|="),flext::MakeSymbol("__ior__") }, - { flext::MakeSymbol("!|"),flext::MakeSymbol("__ror__") }, - { flext::MakeSymbol("^"),flext::MakeSymbol("__xor__") }, - { flext::MakeSymbol("^="),flext::MakeSymbol("__ixor__") }, - { flext::MakeSymbol("!^"),flext::MakeSymbol("__rxor__") }, - { flext::MakeSymbol("<<"),flext::MakeSymbol("__lshift__") }, - { flext::MakeSymbol("<<="),flext::MakeSymbol("__ilshift__") }, - { flext::MakeSymbol("!<<"),flext::MakeSymbol("__rlshift__") }, - { flext::MakeSymbol(">>"),flext::MakeSymbol("__rshift__") }, - { flext::MakeSymbol(">>="),flext::MakeSymbol("__irshift__") }, - { flext::MakeSymbol("!>>"),flext::MakeSymbol("__rrshift__") }, - { flext::MakeSymbol("=="),flext::MakeSymbol("__eq__") }, - { flext::MakeSymbol("!="),flext::MakeSymbol("__ne__") }, - { flext::MakeSymbol("<"),flext::MakeSymbol("__lt__") }, - { flext::MakeSymbol(">"),flext::MakeSymbol("__gt__") }, - { flext::MakeSymbol("<="),flext::MakeSymbol("__le__") }, - { flext::MakeSymbol(">="),flext::MakeSymbol("__ge__") }, - { flext::MakeSymbol("!"),flext::MakeSymbol("__nonzero__") }, - { flext::MakeSymbol("~"),flext::MakeSymbol("__invert__") }, - { flext::MakeSymbol("[]"),flext::MakeSymbol("__getitem__") }, - { flext::MakeSymbol("[]="),flext::MakeSymbol("__setitem__") }, - { flext::MakeSymbol("[:]"),flext::MakeSymbol("__getslice__") }, - { flext::MakeSymbol("[:]="),flext::MakeSymbol("__setslice__") }, - - { flext::MakeSymbol(".abs"),flext::MakeSymbol("__abs__") }, - { flext::MakeSymbol(".neg"),flext::MakeSymbol("__neg__") }, - { flext::MakeSymbol(".pos"),flext::MakeSymbol("__pos__") }, - { flext::MakeSymbol(".divmod"),flext::MakeSymbol("__divmod__") }, - - { flext::MakeSymbol(".int"),flext::MakeSymbol("__int__") }, - { flext::MakeSymbol(".long"),flext::MakeSymbol("__long__") }, - { flext::MakeSymbol(".float"),flext::MakeSymbol("__float__") }, - { flext::MakeSymbol(".complex"),flext::MakeSymbol("__complex__") }, - { flext::MakeSymbol(".str"),flext::MakeSymbol("__str__") }, - { flext::MakeSymbol(".coerce"),flext::MakeSymbol("__coerce__") }, - - { flext::MakeSymbol(".doc"),flext::MakeSymbol("__doc__") }, - { flext::MakeSymbol(".repr"),flext::MakeSymbol("__repr__") }, - - { flext::MakeSymbol(".len"),flext::MakeSymbol("__len__") }, - { flext::MakeSymbol(".in"),flext::MakeSymbol("__contains") }, - - { NULL,NULL } // sentinel -}; - -typedef std::map XTable; -static XTable xtable; - - -class pymeth - : public pybase - , public flext_base -{ - FLEXT_HEADER_S(pymeth,flext_base,Setup) - -public: - pymeth(int argc,const t_atom *argv); - ~pymeth(); - -protected: - virtual void Exit(); - - virtual bool CbMethodResort(int n,const t_symbol *s,int argc,const t_atom *argv); - - void m_help(); - - void m_reload() { Reload(); } - void m_reload_(int argc,const t_atom *argv) { args(argc,argv); Reload(); } - void m_set(int argc,const t_atom *argv); - void m_dir_() { m__dir(function); } - void m_doc_() { m__doc(function); } - - const t_symbol *funname; - PyObject *function; - - virtual void LoadModule(); - virtual void UnloadModule(); - - virtual void Load(); - virtual void Unload(); - - void SetFunction(const t_symbol *func); - void ResetFunction(); - - virtual void DumpOut(const t_symbol *sym,int argc,const t_atom *argv); - - PyObject **objects; - -private: - - virtual void callpy(PyObject *fun,PyObject *args); - - static void Setup(t_classid c); - - FLEXT_CALLBACK(m_help) - FLEXT_CALLBACK(m_reload) - FLEXT_CALLBACK_V(m_reload_) - FLEXT_CALLBACK_V(m_set) - FLEXT_CALLBACK(m_dir_) - FLEXT_CALLBACK(m_doc_) - - // callbacks - FLEXT_ATTRVAR_I(detach) - FLEXT_ATTRVAR_B(pymsg) - FLEXT_ATTRVAR_B(respond) - - FLEXT_CALLBACK_V(m_stop) - FLEXT_CALLBACK(m_dir) - FLEXT_CALLGET_V(mg_dir) - FLEXT_CALLBACK(m_doc) - -#ifdef FLEXT_THREADS - FLEXT_CALLBACK_T(tick) -#endif -}; - -FLEXT_LIB_V("pym",pymeth) - - -void pymeth::Setup(t_classid c) -{ - FLEXT_CADDMETHOD_(c,0,"doc",m_doc); - FLEXT_CADDMETHOD_(c,0,"dir",m_dir); -#ifdef FLEXT_THREADS - FLEXT_CADDATTR_VAR1(c,"detach",detach); - FLEXT_CADDMETHOD_(c,0,"stop",m_stop); -#endif - - FLEXT_CADDMETHOD_(c,0,"help",m_help); - FLEXT_CADDMETHOD_(c,0,"reload",m_reload_); - FLEXT_CADDMETHOD_(c,0,"reload.",m_reload); - FLEXT_CADDMETHOD_(c,0,"doc+",m_doc_); - FLEXT_CADDMETHOD_(c,0,"dir+",m_dir_); - - FLEXT_CADDMETHOD_(c,0,"set",m_set); - - FLEXT_CADDATTR_VAR1(c,"py",pymsg); - FLEXT_CADDATTR_VAR1(c,"respond",respond); - - // init translation map - for(const xlt *xi = xtdefs; xi->from; ++xi) xtable[xi->from] = xi->to; -} - -pymeth::pymeth(int argc,const t_atom *argv) - : funname(NULL) - , function(NULL) - , objects(NULL) -{ -#ifdef FLEXT_THREADS - FLEXT_ADDTIMER(stoptmr,tick); -#endif - - ThrState state = PyLockSys(); - - int inlets; - if(argc && CanbeInt(*argv)) { - inlets = GetAInt(*argv); - if(inlets < 1) inlets = 1; - argv++,argc--; - } - else inlets = 1; - - objects = new PyObject *[inlets]; - for(int i = 0; i < inlets; ++i) { objects[i] = Py_None; Py_INCREF(Py_None); } - - if(inlets <= 0) InitProblem(); - - AddInAnything(1+(inlets < 0?1:inlets)); - AddOutAnything(); - - Register(GetRegistry(REGNAME)); - - if(argc) { - const t_symbol *funnm = GetASymbol(*argv); - argv++,argc--; - - if(funnm) - SetFunction(funnm); - else - PyErr_SetString(PyExc_ValueError,"Invalid function name"); - } - - if(argc) args(argc,argv); - - Report(); - - PyUnlock(state); -} - -pymeth::~pymeth() -{ - if(objects) { - for(int i = 0; i < CntIn()-1; ++i) Py_DECREF(objects[i]); - delete[] objects; - } - - ThrState state = PyLockSys(); - Unregister(GetRegistry(REGNAME)); - Report(); - PyUnlock(state); -} - -void pymeth::Exit() -{ - pybase::Exit(); - flext_base::Exit(); -} - -void pymeth::m_set(int argc,const t_atom *argv) -{ - ThrState state = PyLockSys(); - - // function name has precedence - if(argc >= 2) { - const char *sn = GetAString(*argv); - ++argv,--argc; - - if(sn) { - if(!module || !strcmp(sn,PyModule_GetName(module))) { - ImportModule(sn); - Register(GetRegistry(REGNAME)); - } - } - else - PyErr_SetString(PyExc_ValueError,"Invalid module name"); - } - - if(argc) { - const t_symbol *fn = GetASymbol(*argv); - if(fn) - SetFunction(fn); - else - PyErr_SetString(PyExc_ValueError,"Invalid function name"); - } - - Report(); - - PyUnlock(state); -} - -void pymeth::m_help() -{ - post(""); - post("%s %s - python method object, (C)2002-2008 Thomas Grill",thisName(),PY__VERSION); -#ifdef FLEXT_DEBUG - post("DEBUG VERSION, compiled on " __DATE__ " " __TIME__); -#endif - - post("Arguments: %s [method name] {args...}",thisName()); - - post("Inlet 1:messages to control the py object"); - post(" 2:call python function with message as argument(s)"); - post("Outlet: 1:return values from python function"); - post("Methods:"); - post("\thelp: shows this help"); - post("\tbang: call script without arguments"); - post("\tset [script name] [function name]: set (script and) function name"); - post("\treload {args...}: reload python script"); - post("\treload. : reload with former arguments"); - post("\tdoc: display module doc string"); - post("\tdoc+: display function doc string"); - post("\tdir: dump module dictionary"); - post("\tdir+: dump function dictionary"); -#ifdef FLEXT_THREADS - post("\tdetach 0/1/2: detach threads"); - post("\tstop {wait time (ms)}: stop threads"); -#endif - post(""); -} - -void pymeth::ResetFunction() -{ - Py_XDECREF(function); - function = NULL; - - if(funname && objects[0] != Py_None) { - function = PyObject_GetAttrString(objects[0],(char *)GetString(funname)); // new reference - if(!function) - PyErr_SetString(PyExc_AttributeError,"Method not found"); - } - - // exception could be set here -} - -void pymeth::SetFunction(const t_symbol *func) -{ - // look for method name in translation table - XTable::iterator it = xtable.find(func); - funname = it == xtable.end()?func:it->second; - - ResetFunction(); -} - - -void pymeth::LoadModule() -{ - SetFunction(funname); -} - -void pymeth::UnloadModule() -{ -} - -void pymeth::Load() -{ - ResetFunction(); -} - -void pymeth::Unload() -{ - SetFunction(NULL); -} - -void pymeth::callpy(PyObject *fun,PyObject *args) -{ - PyObject *ret = PyObject_CallObject(fun,args); - if(ret) { - OutObject(this,0,ret); // exception might be raised here - Py_DECREF(ret); - } -} - -bool pymeth::CbMethodResort(int n,const t_symbol *s,int argc,const t_atom *argv) -{ - if(n == 0 && s != sym_bang) - return flext_base::CbMethodResort(n,s,argc,argv); - - ThrState state = PyLockSys(); - - bool ret = false; - - if(n >= 1) { - // store args - PyObject *&obj = objects[n-1]; - Py_DECREF(obj); - obj = MakePyArg(s,argc,argv); // steal reference - - if(n > 1) ret = true; // just store, don't trigger - } - - if(!ret) { - if(function) { - PyObject *self = PyMethod_Self(function); - PyErr_Clear(); - if(!self || self->ob_type != objects[0]->ob_type) - // type has changed, search for new method - ResetFunction(); - else if(self != objects[0]) { - // type hasn't changed, but object has - PyObject *f = function; - function = PyMethod_New(PyMethod_GET_FUNCTION(f),objects[0],PyMethod_GET_CLASS(f)); - Py_DECREF(f); - } - } - else - ResetFunction(); - - if(function) { - Py_INCREF(function); - - int inlets = CntIn()-1; - PyObject *pargs = PyTuple_New(inlets-1); - for(int i = 1; i < inlets; ++i) { - Py_INCREF(objects[i]); - PyTuple_SET_ITEM(pargs,i-1,objects[i]); - } - - gencall(function,pargs); // references are stolen - ret = true; - } - else - PyErr_SetString(PyExc_RuntimeError,"No function set"); - - Report(); - } - - PyUnlock(state); - - Respond(ret); - - return ret; -} - -void pymeth::DumpOut(const t_symbol *sym,int argc,const t_atom *argv) -{ - ToOutAnything(GetOutAttr(),sym?sym:thisTag(),argc,argv); -} diff --git a/externals/grill/py/source/pyprefix.h b/externals/grill/py/source/pyprefix.h deleted file mode 100644 index 0614b3e0..00000000 --- a/externals/grill/py/source/pyprefix.h +++ /dev/null @@ -1,54 +0,0 @@ -/* -py/pyext - python script object for PD and MaxMSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-04 12:58:11 +0100 (Fri, 04 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#ifndef __PYPREFIX_H -#define __PYPREFIX_H - -#define FLEXT_ATTRIBUTES 1 -#include - -// hack: must include math.h before Python.h (at least on OSX) -// otherwise some functions don't get defined -#include - -#if FLEXT_OS == FLEXT_OS_MAC -#include -#else -#include -#endif - -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 501) -#error You need at least flext version 0.5.1 -#endif - -#if FLEXT_OS == FLEXT_LINUX || FLEXT_OS == FLEXT_IRIX -#include -#endif - -#if FLEXT_SYS == FLEXT_SYS_PD && (!defined (PD_MINOR_VERSION) || PD_MINOR_VERSION < 37) -#error PD version >= 0.37 required, please upgrade! -#endif - -#include -#include - -#if FLEXT_SYS == FLEXT_SYS_PD && defined(PY_USE_INOFFICIAL) -extern "C" { -#include -} -#endif - -#if PY_VERSION_HEX < 0x02050000 -typedef int Py_ssize_t; -#endif - -#endif diff --git a/externals/grill/py/source/pysymbol.cpp b/externals/grill/py/source/pysymbol.cpp deleted file mode 100644 index b812e134..00000000 --- a/externals/grill/py/source/pysymbol.cpp +++ /dev/null @@ -1,266 +0,0 @@ -/* -py/pyext - python script object for PD and Max/MSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 18:15:53 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#include "pyprefix.h" -#include "pysymbol.h" - -inline pySymbol *symbol_newsym(const t_symbol *sym) -{ - pySymbol *self = (pySymbol *)pySymbol_Type.tp_alloc(&pySymbol_Type, 0); - if(self) self->sym = sym; - return self; -} - -static PyObject *symbol_new(PyTypeObject *type, PyObject *args, PyObject *kwds) -{ - return (PyObject *)symbol_newsym(flext::sym__); -} - -static int symbol_init(PyObject *self, PyObject *args, PyObject *kwds) -{ - FLEXT_ASSERT(pySymbol_Check(self)); - - PyObject *arg = PySequence_GetItem(args,0); // new reference - if(!arg) return -1; - - int ret = 0; - - if(pySymbol_Check(arg)) - ((pySymbol *)self)->sym = pySymbol_AS_SYMBOL(arg); - else if(PyString_Check(arg)) - ((pySymbol *)self)->sym = flext::MakeSymbol(PyString_AS_STRING(arg)); - else { - PyErr_SetString(PyExc_TypeError,"string or symbol argument expected"); - ret = -1; - } - Py_DECREF(arg); - - return ret; -} - -static PyObject *symbol_str(PyObject *self) -{ - FLEXT_ASSERT(pySymbol_Check(self)); - return (PyObject *)PyString_FromString(pySymbol_AS_STRING(self)); -} - -static PyObject *symbol_repr(PyObject *self) -{ - FLEXT_ASSERT(pySymbol_Check(self)); - return (PyObject *)PyString_FromFormat("",pySymbol_AS_STRING(self)); -} - -static PyObject *symbol_richcompare(PyObject *a,PyObject *b,int cmp) -{ - if(pySymbol_Check(a) && pySymbol_Check(b)) { - const t_symbol *asym = pySymbol_AS_SYMBOL(a); - const t_symbol *bsym = pySymbol_AS_SYMBOL(b); - - int res = asym == bsym?0:strcmp(flext::GetString(asym),flext::GetString(bsym)); - - bool ret; - switch(cmp) { - case Py_LT: ret = res < 0; break; - case Py_LE: ret = res <= 0; break; - case Py_EQ: ret = res == 0; break; - case Py_NE: ret = res != 0; break; - case Py_GE: ret = res >= 0; break; - case Py_GT: ret = res > 0; break; - default: - FLEXT_ASSERT(false); - } - return PyBool_FromLong(ret); - } - Py_INCREF(Py_NotImplemented); - return Py_NotImplemented; -} - -static long symbol_hash(PyObject *self) -{ - FLEXT_ASSERT(pySymbol_Check(self)); - return (long)pySymbol_AS_SYMBOL(self); -} - - -static Py_ssize_t symbol_length(PyObject *s) -{ - pySymbol *self = reinterpret_cast(s); - return strlen(flext::GetString(self->sym)); -} - -static PyObject *symbol_item(PyObject *s,Py_ssize_t i) -{ - pySymbol *self = reinterpret_cast(s); - const char *str = flext::GetString(self->sym); - int len = strlen(str); - if(i < 0) i += len; - - if(i >= 0 && i < len) - return PyString_FromStringAndSize(str+i,1); - else { - Py_INCREF(Py_None); - return Py_None; - } -} - -static PyObject *symbol_slice(PyObject *s,Py_ssize_t ilow = 0,Py_ssize_t ihigh = 1<<(sizeof(int)*8-2)) -{ - pySymbol *self = reinterpret_cast(s); - const char *str = flext::GetString(self->sym); - int len = strlen(str); - if(ilow < 0) { - ilow += len; - if(ilow < 0) ilow = 0; - } - if(ihigh < 0) ihigh += len; - if(ihigh >= len) ihigh = len-1; - - return PyString_FromStringAndSize(str+ilow,ilow <= ihigh?ihigh-ilow+1:0); -} - -static PyObject *symbol_concat(PyObject *s,PyObject *op) -{ - pySymbol *self = reinterpret_cast(s); - PyObject *nobj = symbol_slice(s); // take all - if(nobj) { - PyObject *ret = PySequence_Concat(nobj,op); - Py_DECREF(nobj); - return ret; - } - else - return NULL; -} - -static PyObject *symbol_repeat(PyObject *s,Py_ssize_t rep) -{ - pySymbol *self = reinterpret_cast(s); - PyObject *nobj = symbol_slice(s); // take all - if(nobj) { - PyObject *ret = PySequence_Repeat(nobj,rep); - Py_DECREF(nobj); - return ret; - } - else - return NULL; -} - -static PySequenceMethods symbol_as_seq = { - symbol_length, /* inquiry sq_length; __len__ */ - symbol_concat, /* __add__ */ - symbol_repeat, /* __mul__ */ - symbol_item, /* intargfunc sq_item; __getitem__ */ - symbol_slice, /* intintargfunc sq_slice; __getslice__ */ - NULL, /* intobjargproc sq_ass_item; __setitem__ */ - NULL, /* intintobjargproc sq_ass_slice; __setslice__ */ -}; - -static PyObject *symbol_iter(PyObject *s) -{ - pySymbol *self = reinterpret_cast(s); - PyObject *nobj = symbol_slice(s); - if(nobj) { - PyObject *it = PyObject_GetIter(nobj); - Py_DECREF(nobj); - return it; - } - else - return NULL; -} - - - -PyTypeObject pySymbol_Type = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "Symbol", /*tp_name*/ - sizeof(pySymbol), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - 0, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - symbol_repr, /*tp_repr*/ - 0, /*tp_as_number*/ - &symbol_as_seq, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - symbol_hash, /*tp_hash */ - 0, /*tp_call*/ - symbol_str, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT /*| Py_TPFLAGS_BASETYPE*/, /*tp_flags*/ - "Symbol objects", /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - symbol_richcompare, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - symbol_iter, /* tp_iter */ - 0, /* tp_iternext */ - 0, /* tp_methods */ - 0, /* tp_members */ - 0, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - symbol_init, /* tp_init */ - 0, /* tp_alloc */ - symbol_new, /* tp_new */ -}; - -pySymbol *pySymbol__; -pySymbol *pySymbol_bang; -pySymbol *pySymbol_list; -pySymbol *pySymbol_symbol; -pySymbol *pySymbol_float; -pySymbol *pySymbol_int; - - -void initsymbol() -{ - if(PyType_Ready(&pySymbol_Type) < 0) - return; - - Py_INCREF(&pySymbol_Type); - - // initialize predefined objects - pySymbol__ = symbol_newsym(flext::sym__); - pySymbol_bang = symbol_newsym(flext::sym_bang); - pySymbol_list = symbol_newsym(flext::sym_list); - pySymbol_symbol = symbol_newsym(flext::sym_symbol); - pySymbol_float = symbol_newsym(flext::sym_float); - pySymbol_int = symbol_newsym(flext::sym_int); -} - - -PyObject *pySymbol_FromSymbol(const t_symbol *sym) -{ - pySymbol *op; - if(sym == flext::sym__) - Py_INCREF(op = pySymbol__); - else if(sym == flext::sym_bang) - Py_INCREF(op = pySymbol_bang); - else if(sym == flext::sym_list) - Py_INCREF(op = pySymbol_list); - else if(sym == flext::sym_symbol) - Py_INCREF(op = pySymbol_symbol); - else if(sym == flext::sym_float) - Py_INCREF(op = pySymbol_float); - else if(sym == flext::sym_int) - Py_INCREF(op = pySymbol_int); - else - op = symbol_newsym(sym); - return (PyObject *)op; -} diff --git a/externals/grill/py/source/pysymbol.h b/externals/grill/py/source/pysymbol.h deleted file mode 100644 index 6ab0aac9..00000000 --- a/externals/grill/py/source/pysymbol.h +++ /dev/null @@ -1,94 +0,0 @@ -/* -py/pyext - python script object for PD and Max/MSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#ifndef __PYSYMBOL_H -#define __PYSYMBOL_H - -#include - -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500) -#error You need at least flext version 0.5.0 -#endif - -#if FLEXT_OS == FLEXT_OS_MAC -#include -#else -#include -#endif - - -#ifdef _MSC_VER - #ifdef PY_EXPORTS - #define PY_EXPORT __declspec(dllexport) - #else - #define PY_EXPORT __declspec(dllimport) - #endif -#else - #define PY_EXPORT -#endif - -typedef struct { - PyObject_HEAD - /* Type-specific fields go here. */ - const t_symbol *sym; -} pySymbol; - -PY_EXPORT extern PyTypeObject pySymbol_Type; - -PY_EXPORT extern pySymbol *pySymbol__; -PY_EXPORT extern pySymbol *pySymbol_bang; -PY_EXPORT extern pySymbol *pySymbol_list; -PY_EXPORT extern pySymbol *pySymbol_symbol; -PY_EXPORT extern pySymbol *pySymbol_float; -PY_EXPORT extern pySymbol *pySymbol_int; - - -#define pySymbol_Check(op) PyObject_TypeCheck(op, &pySymbol_Type) -#define pySymbol_CheckExact(op) ((op)->ob_type == &pySymbol_Type) - - -PY_EXPORT PyObject *pySymbol_FromSymbol(const t_symbol *sym); - -inline PyObject *pySymbol_FromString(const char *str) -{ - return pySymbol_FromSymbol(flext::MakeSymbol(str)); -} - -inline PyObject *pySymbol_FromString(PyObject *str) -{ - return pySymbol_FromString(PyString_AsString(str)); -} - -inline const t_symbol *pySymbol_AS_SYMBOL(PyObject *op) -{ - return ((pySymbol *)op)->sym; -} - -inline const t_symbol *pySymbol_AsSymbol(PyObject *op) -{ - return pySymbol_Check(op)?pySymbol_AS_SYMBOL(op):NULL; -} - -inline const char *pySymbol_AS_STRING(PyObject *op) -{ - return flext::GetString(pySymbol_AS_SYMBOL(op)); -} - -inline const t_symbol *pyObject_AsSymbol(PyObject *op) -{ - if(PyString_Check(op)) - return flext::MakeSymbol(PyString_AS_STRING(op)); - else - return pySymbol_AsSymbol(op); -} - -#endif diff --git a/externals/grill/py/source/register.cpp b/externals/grill/py/source/register.cpp deleted file mode 100644 index 0f8684b6..00000000 --- a/externals/grill/py/source/register.cpp +++ /dev/null @@ -1,153 +0,0 @@ -/* -py/pyext - python external object for PD and MaxMSP - -Copyright (c)2002-2008 Thomas Grill (gr@grrrr.org) -For information on usage and redistribution, and for a DISCLAIMER OF ALL -WARRANTIES, see the file, "license.txt," in this distribution. - -$LastChangedRevision: 26 $ -$LastChangedDate: 2008-01-03 17:20:03 +0100 (Thu, 03 Jan 2008) $ -$LastChangedBy: thomas $ -*/ - -#include "pybase.h" - -#if 1 - -PyObject *pybase::GetRegistry(const char *regnm) -{ - if(module) { - FLEXT_ASSERT(dict); // module must have a valid dict - - // add this to module registry - PyObject *reg = PyDict_GetItemString(dict,(char *)regnm); // borrowed!!! - if(reg) - FLEXT_ASSERT(PyDict_Check(reg)); - else { - // make a new empty registry - reg = PyDict_New(); - PyDict_SetItemString(dict,(char *)regnm,reg); - } - return reg; - } - else - return NULL; -} - -void pybase::SetRegistry(const char *regnm,PyObject *reg) -{ - if(module) { - FLEXT_ASSERT(dict); // module must have a valid dict - FLEXT_ASSERT(reg && PyDict_Check(reg)); - PyDict_SetItemString(dict,(char *)regnm,reg); - } -} - -void pybase::Register(PyObject *reg) -{ - if(!module) return; - FLEXT_ASSERT(reg && PyDict_Check(reg)); - - // add this to module registry - Py_INCREF(Py_None); - PyObject *key = PyLong_FromUnsignedLong((size_t)this); - PyDict_SetItem(reg,key,Py_None); -} - -void pybase::Unregister(PyObject *reg) -{ - if(!module) return; - FLEXT_ASSERT(reg && PyDict_Check(reg)); - - // remove this from module registry - PyObject *key = PyLong_FromUnsignedLong((size_t)this); - PyObject *item = PyDict_GetItem(reg,key); - if(!item) - post("py/pyext - Internal error: object not found in registry"); - else - PyDict_DelItem(reg,key); -} - -/* -void pybase::RegLoad(PyObject *reg) -{ - -} - -void pybase::RegUnload(PyObject *reg) -{ -} -*/ - -#else - -void pybase::Register(const char *regnm) -{ - if(module) { - // add this to module registry - - PyObject *reg = PyDict_GetItemString(dict,(char *)regnm); // borrowed!!! - PyObject *add = Py_BuildValue("[i]",(long)this); - if(!reg || !PyList_Check(reg)) { - if(PyDict_SetItemString(dict,(char *)regnm,add)) { - post("py/pyext - Could not set registry"); - } - } - else { - PySequence_InPlaceConcat(reg,add); - } - } -} - -void pybase::Unregister(const char *regnm) -{ - if(module) { - // remove this from module registry - - PyObject *reg = PyDict_GetItemString(dict,(char *)regnm); // borrowed!!! - PyObject *add = Py_BuildValue("i",(int)this); - if(!reg || !PySequence_Check(reg)) - post("py/pyext - Internal error: Registry not found!?"); - else { - int ix = PySequence_Index(reg,add); - if(ix < 0) { - post("py/pyext - Internal error: object not found in registry?!"); - } - else { - PySequence_DelItem(reg,ix); - } - } - Py_DECREF(add); - } -} - -void pybase::Reregister(const char *regnm) -{ - if(module) { - // remove this from module registry - - PyObject *reg = PyDict_GetItemString(dict,(char *)regnm); // borrowed!!! - - if(!reg || !PySequence_Check(reg)) - post("py/pyext - Internal error: Registry not found!?"); - else { - int cnt = PySequence_Size(reg); - for(int i = 0; i < cnt; ++i) { - PyObject *it = PySequence_GetItem(reg,i); // new reference - if(!it || !PyInt_Check(it)) { - post("py/pyext - Internal error: Corrupt registry?!"); - } - else { - pybase *th = (pybase *)PyInt_AsLong(it); - th->module = module; - th->dict = dict; - th->Reload(); - } - - Py_XDECREF(it); - } - } - } -} - -#endif diff --git a/externals/grill/vasp/changes.txt b/externals/grill/vasp/changes.txt deleted file mode 100644 index 5248913c..00000000 --- a/externals/grill/vasp/changes.txt +++ /dev/null @@ -1,148 +0,0 @@ -Version history: - -0.1.4: -- FIX: resurrect help message-functionality and add some missing help texts -- FIX: break condition for some loop constructs (thanks to Patrick King) -- FIX: help file names / object names have been broken by flext changes - -0.1.3: -- CHANGE: exchanged #defines for templates in vector calculation loops -- FIX: bug for binary operations of complex vasps -- ADD: implemented (factor-4) loop unrolling for vector calculation loops -- CHANGE: completely restructured vector optimization and introduced multi-dimensional multi-layered functionality -- ADD: vasp.size variants: attribute "zero" (default: true) - whether new samples shall be zeroed -- ADD: vasp.sum? to get sum of sample values -- ADD: all objects: attribute "defer" to queue outgoing vasps - to avoid stack faults for message loops -- CHANGE: enable attributes "detach" and "prior" also for non-threaded builds to ensure patch compatibility -- FIX: vasp.size - flext bug for @keep=1 -- FIX: vasp.imm - bug with memory reservation length -- ADD: vasp.imm - attribute "zero" (default: true) - whether array should be cleared -- FIX: Max/MSP - freeing immediate buffers with overdrive is bogus -> using queued flext timer -- FIX: Bug in clearing vasp references -- CHANGE: changed behavior of vasp.spit on uneven vector counts - [vasp a b c( -> [vasp.spit 2] now outputs a(outlet 2), b(outlet 1), c(outlet 2), bang(outlet 3) -- REMOVE: eliminated [vasp.cconj] as an object as it can easily be replaced by an abstraction -- ADD: vasp.search (vasp.o=, vasp.f=) objects... @incl attribute (default false) to include current sample into search -- ADD: [vasp.channels?] reports number of channels in the first vasp vector (buffer/array) -- CHANGE: vasp.min?, vasp.max?, vasp.amin?, vasp.amax?, vasp.rmin?, vasp.rmax? no longer return the reference vasp / return a list of vector maxima/minima -- CHANGE: inherited several classes from the flext class, so that new and delete use the RT-system functions -- FIX: fixed memory leaks associated to VBuffer retrieval -- FIX: fixed bug on vasp.search for vectors with 0 channels - -0.1.2: -- FIX: bug in vasp.frames* ... wrong argument -- FIX: another bug in resize of immediate buffers -- CHANGE: immediates will be initialized to zero, also upon resize to a larger size (by default, later make this optional) -- ADD: attributes for all basic parameters: ref,to,arg, update,detach,prior (loglvl,argchk,unit later) -- ADD: vasp.channel,vasp.vector - attribute "index" -- ADD: vasp.frames,vasp.frames+,vasp.offset,vasp.offset+,vasp.size,vasp.size+,vasp.imm - attribute "frames" -- ADD: vasp.frames*,vasp.frames/,vasp.size*,vasp.size/ - attribute "factor" -- ADD: vasp.part - attribute "parts" -- ADD: vasp.peaks? - attribute "peaks" -- ADD: vasp.shift,vasp.xshift - attribute "fill" -- ADD: vasp.tilt,vasp.xtilt - attributes "fill","inter" -- ADD: vasp.offset=,vasp.frames= - attributes "dir","slope" -- CHANGE: update m_method_ virtual functions of same objects -- FIX: immediate vasp garbage collection is now done in separate thread -- ADD: vasp.size... objects: attribute "keep" determines whether buffer content should be preserved (default = 1) -- CHANGE: buffer reference checks upon all operations enforced (by new CVasp (checked vasp) class) -- FIX: immediate vasps can not have frames > size -- FIX: immediate garbage collection was not triggered in threaded build -- FIX: changed forgotten standard ASSERT to FLEXT_ASSERT (thanks to Frank Barknecht) - -0.1.1: -- FIX: bug in resize of immediate buffers -- CHANGE: check (at actual operation!) whether vector exceeds buffer size (GetRVecs, GetCVecs -> corrlen) - -0.1.0: -- NEW: vasp.a<, vasp.a>, vasp.a<=, vasp.a>= for absolute comparisons -- CHANGE: clear stored vasp of an object if a "set" message with an invalid vasp is received -- CHANGE: cleaned up the process loops (with thread yield) and fixed a corresponding bug in vasp.peaks/valleys -- CHANGE: warn - but don't stop - on large FFT prime factors -- FIX: vasp.radd and vasp.rpow had wrong argument initialization -- FIX: mixfft is not thread-safe... introduced thread mutex for it -- FIX: vasp.shift: shift argument was modulo frame count... why? - -0.0.8: -- CHANGE: vasp.radio got right outlet for non-radio messages -- ADD: thread yield for all simple vasp objects -- CHANGE: vasp.? and vasp.??: made explicit list outlets -- NEW: vasp.window, vasp.*window, vasp.!window, vasp.*!window, vasp.xwindow, vasp.*xwindow -- REMOVE: vasp.bevel, vasp.!bevel... obsolete due to new vasp.window objects -- REMOVE: vasp.noradio (vasp.!radio)... can easily be an abstraction of vasp.radio -- ADD: minimum length parameter for immediate vasps -- NEW: vasp.channel? (vasp.c?), vasp.channel (vasp.c) for set/query of buffer channel -- CHANGE: env - reversed time/value pairs to value/time pairs -- FIX: vasp.! with length arg outputs its reference on bang -- FIX: on set message check for invalid vasps -- FIX: reintroduce test for invalid buffer names (why was it commented out?) -- FIX: fixe several bugs in vasp.offset= and vasp.frames= -- CHANGE: allow size 0 (is default) for immediate vasps - -0.0.7: -- CHANGE: vasp.m is now called vasp.multi by default -- CHANGE: vasp.sync and vasp.multi now have a default argument = 2 -- FIX: vasp.phasor - period length now 1 instead of 2 PI -- FIX: bug in multi mode (more src, one arg vector) -- ADD: path specification for help symbols -- CHANGE: rewrote vasp.imm implementation (still very inefficient!!) -- ADD: prior message defines differential priority for detached operations -- ADD: full DFT implementation (radix-2/radix-n) - also support of "to" message -- ADD: full implementation of vasp.(x)tilt with several interpolation methods -- CHANGE: vasp.split and vasp.join now have default argument = 2 -- ADD: vasp.offset= (vasp.o=) and vasp.frames= (vasp.f=): search for sample values (eg. zero crossings) -- ADD: checks and log messages for out-of-range buffer offset and length - -0.0.6: -- reorganized file structure -- ADD: main names of vasp.n and vasp.n? are now vasp.vector and vasp.vectors?, respectively -- ADD: main names of vasp.? and vasp.?? are now vasp.list and vasp.nonzero, respectively -- NEW: vasp.size, vasp.size+, vasp.size? (vasp.s,vasp.s+,vasp.s?) for buffer size manipulation -- NEW: vasp.peaks? for extremum extraction -- ADD: shortcuts for vasp.frames,vasp.frames+,vasp.frames? -> vasp.f,vasp.f+,vasp.f? -- CHANGE: changed vasp.offs,vasp.offs+,vasp.offs? to vasp.offset,vasp.offset+,vasp.offset? -- ADD: shortcuts for vasp.offset,vasp.offset+,vasp.offset? -> vasp.o,vasp.o+,vasp.o? -- ADD: envelopes (env ...) as arguments to all operations where vasps are used -- FIX: default arguments for all binary/anytype operations -- ADD: vasp.frames* (vasp.f*), vasp.frames/ (vasp.f/), vasp.size* (vasp.s*), vasp.size/ (vasp.s/) -- ADD: detached operation: operations run as threads, according to detach flag/message -- CHANGE: vasp.sync has as many outputs as inputs and outputs all input vasps -- ADD: vasp.! : like vasp but stores the content temporarily (not just the reference) -- ADD: vasp.copy (vasp.->) and vasp.ccopy (vasp.c->) for instant vasp copying -- ADD: vasp.radio and vasp.noradio (vasp.!radio) ... filters for radio messages -- ADD: vasp.fix - bashes NANs to zero, normalizes denormal numbers -- ADD: double type consisting of 2 additive floats (e.g. "double 1. 1.e-13") for all numeric arguments -- ADD: vasp.(x)shift - "fill" method/flag defines how to fill shifted areas (0..zero (default),1..none,2..edge value) - -0.0.5: -- FIX: lacking sqrt in [vasp.rmin?],[vasp.rmax?] -- FIX: (offs >= frames) bug in [vasp.offs?] -- ADD: lacking setup of [vasp.!-] and [vasp.c!-] objects -- FIX: buggy [vasp.int] code -- FIX: recognition of integer arguments - -0.0.4: -- CHANGE: vasp.min/max functions so that a vasp length 0 results in 0 -- REMOVED: [vasp.inv], [vasp.cinv].... already replaced by [vasp.!/ 1] -- FIX: outlet bug in [vasp.?] -- ADD: right inlet to [vasp]... just like in [float] etc. - -0.0.3: -- restructured the code for future use of break-point lists (aka envelopes) as arguments -- changed some object's names -- new objects: vasp.min?, vasp.max? and the likes -- fixed Max problem with connecting vasp.min,vasp.max right outlet to number boxes -- fixed right inlet problem for generator and filter objects - -0.0.2: -- vasp.cmin,vasp.cmax - renamed to vasp.rmin,vasp.rmax -- reversed vasp channel and offset -- fixed bug with arguments to complex binary operations -- vasp.chk: included channel check -- fixed pointer bug in vasp.? -- fixed pointer increment bug in vasp.fhp -- changed VecBlock implementation - -0.0.1: -- defined the vasp -- quick and dirty setup of most functions (non-interruptible) diff --git a/externals/grill/vasp/gpl.txt b/externals/grill/vasp/gpl.txt deleted file mode 100644 index 5ea29a7d..00000000 --- a/externals/grill/vasp/gpl.txt +++ /dev/null @@ -1,346 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) 19yy - - 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 - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. - diff --git a/externals/grill/vasp/license.txt b/externals/grill/vasp/license.txt deleted file mode 100644 index 9f60de24..00000000 --- a/externals/grill/vasp/license.txt +++ /dev/null @@ -1,64 +0,0 @@ -VASP modular - vector assembling signal processor -Object library for Max/MSP and PD -Copyright (C) 2002-2005 Thomas Grill - -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. - -There is one exception though, concerning the usage of the -mixfft code by Jens Joergen Nielsen. See the file mixfft.txt -for the respective licensing details. - -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. - -In the official VASP distribution, the GNU General Public License is -in the file gpl.txt - - -Excluded from this license is the source code file of MixFFT. -See the mixfft.txt file of the VASP package for the respective license text. - ---------------------------------------------------------- - - OTHER COPYRIGHT NOTICES - ---------------------------------------------------------- - -The package is based on ideas originally conceived and -programmed in FORTRAN by Guenther Rabl. - -VASP modular uses some code - see the license texts below. - ---- flext ---------------------------------------------- -flext - C++ layer for Max/MSP and pd (pure data) externals -Copyright (C) 2001-2005 Thomas Grill - -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. - -In the official flext distribution, the GNU General Public License is -in the file gpl.txt - ---- mixfft ---------------------------------------------- -See the file mixfft.txt included with the VASP distribution. - diff --git a/externals/grill/vasp/max-ex/convolve b/externals/grill/vasp/max-ex/convolve deleted file mode 100755 index 2df42983..00000000 Binary files a/externals/grill/vasp/max-ex/convolve and /dev/null differ diff --git a/externals/grill/vasp/max-ex/freeze b/externals/grill/vasp/max-ex/freeze deleted file mode 100755 index be52f100..00000000 Binary files a/externals/grill/vasp/max-ex/freeze and /dev/null differ diff --git a/externals/grill/vasp/max-help/vasp.abs.help b/externals/grill/vasp/max-help/vasp.abs.help deleted file mode 100755 index 1292ea00..00000000 --- a/externals/grill/vasp/max-help/vasp.abs.help +++ /dev/null @@ -1,56 +0,0 @@ -max v2; -#N vpatcher 158 140 813 450; -#P origin 0 10; -#P message 435 237 61 196617 vasp bufabs; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 435 255 78 196617 p clear_buffers; -#P comment 146 190 107 196617 get the absolute values; -#P button 128 188 15 0; -#P newex 64 188 60 196617 prepend set; -#P newex 64 252 61 196617 vasp.update; -#P comment 133 136 99 196617 generate a sinewave; -#P message 64 135 61 196617 vasp bufabs; -#P newex 64 156 80 196617 vasp.osc 22050; -#P comment 59 63 137 196617 get absolute values of a vasp; -#P comment 59 40 89 196622 vasp.abs; -#P hidden message 310 114 54 196617 set bufabs; -#P hidden newex 310 94 45 196617 loadbang; -#P user waveform~ 310 133 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 521 255 101 196617 buffer~ bufabs 2000; -#P newex 64 213 45 196617 vasp.abs; -#P comment 59 79 402 196617 see also vasp.*.help for an example using vasp.abs to generate an envelope from a vasp; -#P connect 9 0 8 0; -#P connect 8 0 12 0; -#P connect 12 0 1 0; -#P fasten 13 0 1 0 133 208 69 208; -#P connect 1 0 11 0; -#P hidden connect 4 0 5 0; -#P hidden connect 5 0 3 0; -#P connect 16 0 15 0; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.add.help b/externals/grill/vasp/max-help/vasp.add.help deleted file mode 100755 index 0da7d475..00000000 --- a/externals/grill/vasp/max-help/vasp.add.help +++ /dev/null @@ -1,68 +0,0 @@ -max v2; -#N vpatcher 124 137 939 457; -#P origin 0 22; -#P message 580 242 52 196617 vasp buf+; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 580 263 73 196617 p clear_buffer; -#P comment 346 192 101 196617 shift all values - 0.5; -#P comment 112 191 131 196617 shift all values + 0.5; -#P comment 113 168 132 196617 half the amplitude; -#P comment 285 62 205 196617 optional argument/right inlet: right operand; -#P comment 285 45 195 196617 subtracts a value or a vasp from a vasp; -#P comment 285 21 89 196622 vasp.-; -#P message 288 112 52 196617 vasp buf+; -#P newex 288 212 61 196617 vasp.update; -#P newex 288 189 55 196617 vasp.- 0.5; -#P newex 288 144 80 196617 vasp.osc 44100; -#P newex 288 166 55 196617 vasp.* 0.5; -#P message 54 112 52 196617 vasp buf+; -#P newex 54 212 61 196617 vasp.update; -#P newex 54 189 55 196617 vasp.+ 0.5; -#P newex 54 144 80 196617 vasp.osc 44100; -#P hidden message 450 112 45 196617 set buf+; -#P hidden newex 450 91 45 196617 loadbang; -#P user waveform~ 450 132 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 671 263 92 196617 buffer~ buf+ 2000; -#P newex 54 166 55 196617 vasp.* 0.5; -#P comment 52 62 205 196617 optional argument/right inlet: right operand; -#P comment 52 45 168 196617 adds a value or a vasp to a vasp; -#P comment 52 21 89 196622 vasp.+; -#P comment 137 146 132 196617 generate a 1Hz sine wave; -#P connect 12 0 9 0; -#P connect 9 0 4 0; -#P connect 4 0 10 0; -#P connect 10 0 11 0; -#P connect 17 0 14 0; -#P connect 14 0 13 0; -#P connect 13 0 15 0; -#P connect 15 0 16 0; -#P hidden connect 7 0 8 0; -#P hidden connect 8 0 6 0; -#P connect 25 0 24 0; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.amaxq.help b/externals/grill/vasp/max-help/vasp.amaxq.help deleted file mode 100755 index 81e404e5..00000000 --- a/externals/grill/vasp/max-help/vasp.amaxq.help +++ /dev/null @@ -1,104 +0,0 @@ -max v2; -#N vpatcher 279 142 977 614; -#P message 477 385 75 196617 vasp bufamax?; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 477 405 73 196617 p clear_buffer; -#P hidden newex 554 368 48 196617 r 1148path; -#P user umenu 72 105 72 196647 1 64 121 1; -#X add bass.aif; -#X add beat.aif; -#X add fly.aif; -#X add plastic.aif; -#X add your_own...; -#N vpatcher 93 462 631 722; -#P message 59 102 28 196617 read; -#P newex 59 69 89 196617 route your_own...; -#N comlet popup comment in; -#P inlet 59 26 15 0; -#P newex 59 149 48 196617 s 1148path; -#P newex 138 102 79 196617 sprintf read %s; -#P user umenu 48 169 100 196647 1 64 185 1; -#X add drums.aif; -#X add voice.aif; -#X add test.aif; -#X add read a soundfile; -#P connect 3 0 4 0; -#P connect 4 0 5 0; -#P connect 5 0 2 0; -#P fasten 1 0 2 0 143 134 64 134; -#P connect 4 1 1 0; -#P pop; -#P hidden newobj 134 127 43 196617 p loader; -#P comment 46 107 26 196617 read; -#P flonum 80 229 68 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P comment 46 61 242 196617 maximum value of the absolute values of a vasp; -#P message 52 197 75 196617 vasp bufamax?; -#P newex 52 262 38 196617 vasp./; -#P newex 52 284 61 196617 vasp.update; -#P newex 52 383 45 196617 vasp.opt; -#P message 52 350 75 196617 vasp bufamax?; -#P newex 52 165 84 196617 vasp.amax?; -#P hidden message 357 142 69 196617 set bufamax?; -#P hidden newex 357 116 45 196617 loadbang; -#P user waveform~ 357 161 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P message 304 405 27 196617 stop; -#P message 237 405 65 196617 startwindow; -#P newex 357 383 30 196617 line~; -#P message 357 363 72 196617 0 \, 2000 2000; -#P newex 357 431 29 196617 dac~; -#P newex 357 405 80 196617 play~ bufamax?; -#P newex 52 405 61 196617 vasp.update; -#P message 52 144 75 196617 vasp bufamax?; -#P newex 554 405 115 196617 buffer~ bufamax? 2000; -#P comment 128 145 221 196617 find the absolute maximum of this soundfile; -#P comment 150 230 141 196617 -> current absolute maximum; -#P comment 93 264 153 196617 use it to optimize buffer content; -#P comment 46 333 179 196617 or use vasp.opt which does the same; -#P comment 46 37 91 196622 vasp.amax?; -#P comment 46 76 137 196617 right outlet: calculated value; -#P connect 7 0 18 0; -#P fasten 23 0 22 0 57 236 57 236; -#P connect 22 0 21 0; -#P connect 19 0 20 0; -#P connect 20 0 8 0; -#P fasten 18 1 25 0 131 224 85 224; -#P connect 25 0 22 1; -#P hidden connect 28 1 27 0; -#P hidden fasten 6 1 17 0 664 428 675 428 675 138 362 138; -#P hidden connect 16 0 17 0; -#P hidden connect 17 0 15 0; -#P connect 11 0 12 0; -#P connect 12 0 9 0; -#P fasten 13 0 10 0 242 426 362 426; -#P fasten 14 0 10 0 309 426 362 426; -#P connect 9 0 10 0; -#P connect 9 0 10 1; -#P connect 31 0 30 0; -#P hidden connect 29 0 6 0; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.aminq.help b/externals/grill/vasp/max-help/vasp.aminq.help deleted file mode 100755 index 07289028..00000000 --- a/externals/grill/vasp/max-help/vasp.aminq.help +++ /dev/null @@ -1,92 +0,0 @@ -max v2; -#N vpatcher 201 150 928 511; -#P origin 0 16; -#P message 501 272 73 196617 vasp bufamin?; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 501 292 73 196617 p clear_buffer; -#P hidden newex 583 267 48 196617 r 1038path; -#P user umenu 69 118 72 196647 1 64 134 1; -#X add bass.aif; -#X add beat.aif; -#X add fly.aif; -#X add plastic.aif; -#X add your_own...; -#N vpatcher 93 462 631 722; -#P message 59 102 28 196617 read; -#P newex 59 69 89 196617 route your_own...; -#N comlet popup comment in; -#P inlet 59 26 15 0; -#P newex 59 149 48 196617 s 1038path; -#P newex 138 102 79 196617 sprintf read %s; -#P user umenu 48 169 100 196647 1 64 185 1; -#X add drums.aif; -#X add voice.aif; -#X add test.aif; -#X add read a soundfile; -#P connect 3 0 4 0; -#P connect 4 0 5 0; -#P connect 5 0 2 0; -#P fasten 1 0 2 0 143 134 64 134; -#P connect 4 1 1 0; -#P pop; -#P hidden newobj 131 140 43 196617 p loader; -#P comment 43 120 26 196617 read; -#P flonum 105 223 68 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P comment 43 67 253 196617 minimum value of the absolute values of a vasp; -#P newex 56 183 59 196617 vasp.amin?; -#P hidden message 384 99 65 196617 set bufamin?; -#P hidden newex 384 74 45 196617 loadbang; -#P user waveform~ 384 124 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P message 331 292 27 196617 stop; -#P message 264 292 65 196617 startwindow; -#P newex 384 270 30 196617 line~; -#P message 384 250 72 196617 0 \, 2000 2000; -#P newex 384 318 29 196617 dac~; -#P newex 384 292 75 196617 play~ bufamin?; -#P message 56 157 73 196617 vasp bufamin?; -#P newex 583 292 113 196617 buffer~ bufamin? 2000; -#P comment 131 158 218 196617 find the absolute minimum of this soundfile; -#P comment 176 225 141 196617 -> current absolute minimum; -#P comment 43 44 91 196622 vasp.amin?; -#P comment 43 82 137 196617 right outlet: calculated value; -#P connect 5 0 15 0; -#P connect 15 1 17 0; -#P hidden connect 20 1 19 0; -#P hidden fasten 4 1 14 0 691 311 701 311 701 95 389 95; -#P hidden connect 13 0 14 0; -#P hidden connect 14 0 12 0; -#P connect 8 0 9 0; -#P connect 9 0 6 0; -#P fasten 10 0 7 0 269 312 389 312; -#P fasten 11 0 7 0 336 312 389 312; -#P connect 6 0 7 0; -#P connect 6 0 7 1; -#P connect 23 0 22 0; -#P hidden connect 21 0 4 0; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.beveldn.help b/externals/grill/vasp/max-help/vasp.beveldn.help deleted file mode 100755 index 87a58e65..00000000 --- a/externals/grill/vasp/max-help/vasp.beveldn.help +++ /dev/null @@ -1,92 +0,0 @@ -max v2; -#N vpatcher 89 186 867 430; -#P message 557 185 73 196617 vasp bufbevel!; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 557 205 73 196617 p clear_buffer; -#N vpatcher 40 55 418 371; -#P button 183 82 15 0; -#P newex 129 145 60 196617 prepend set; -#N comlet waveform~ mode messages; -#P inlet 129 121 15 0; -#P newex 259 64 27 196617 << 1; -#P newex 206 121 40 196617 change; -#P newex 206 145 107 196617 select 0 1 2; -#P newex 206 98 27 196617 |; -#P newex 47 121 40 196617 change; -#P outlet 129 252 15 0; -#P message 47 145 65 196617 constrain \$1; -#P newex 129 195 45 196617 loadbang; -#P newex 47 40 222 196617 pushkeys; -#P message 270 169 58 196617 mode move; -#P message 206 213 61 196617 mode select; -#P message 238 191 52 196617 mode loop; -#P connect 3 0 7 0; -#P connect 7 0 5 0; -#P connect 12 0 13 0; -#P fasten 2 0 6 0 275 243 134 243; -#P fasten 1 0 6 0 211 243 134 243; -#P fasten 0 0 6 0 243 243 134 243; -#P fasten 5 0 6 0 52 243 134 243; -#P connect 11 0 14 0; -#P connect 14 0 8 0; -#P connect 3 3 8 0; -#P connect 8 0 10 0; -#P connect 10 0 9 0; -#P connect 13 0 1 0; -#P connect 9 0 1 0; -#P connect 4 0 1 0; -#P connect 11 0 8 1; -#P connect 9 1 0 0; -#P connect 3 4 11 0; -#P connect 9 2 2 0; -#P pop; -#P hidden newobj 435 24 49 196617 p wfkeys; -#P comment 219 56 168 196617 generates a linear ramp from 1 to 0; -#P comment 219 34 89 196622 vasp.!bevel; -#P message 225 84 73 196617 vasp bufbevel!; -#P newex 225 112 59 196617 vasp.!bevel; -#P newex 225 138 61 196617 vasp.update; -#P newex 41 112 55 196617 vasp.bevel; -#P hidden message 435 65 65 196617 set bufbevel!; -#P hidden newex 435 46 45 196617 loadbang; -#P user waveform~ 435 83 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 41 138 61 196617 vasp.update; -#P message 41 84 73 196617 vasp bufbevel!; -#P newex 635 205 113 196617 buffer~ bufbevel! 2000; -#P comment 38 56 168 196617 generates a linear ramp from 0 to 1; -#P comment 38 34 89 196622 vasp.bevel; -#P connect 3 0 8 0; -#P connect 8 0 4 0; -#P connect 11 0 10 0; -#P connect 10 0 9 0; -#P hidden connect 6 0 7 0; -#P hidden connect 7 0 5 0; -#P hidden connect 14 0 5 0; -#P connect 16 0 15 0; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.bevelup.help b/externals/grill/vasp/max-help/vasp.bevelup.help deleted file mode 100755 index 61e5ab2e..00000000 --- a/externals/grill/vasp/max-help/vasp.bevelup.help +++ /dev/null @@ -1,92 +0,0 @@ -max v2; -#N vpatcher 141 224 919 475; -#P message 562 189 70 196617 vasp bufbevel; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 562 209 73 196617 p clear_buffer; -#N vpatcher 40 55 418 371; -#P button 183 82 15 0; -#P newex 129 145 60 196617 prepend set; -#N comlet waveform~ mode messages; -#P inlet 129 121 15 0; -#P newex 259 64 27 196617 << 1; -#P newex 206 121 40 196617 change; -#P newex 206 145 107 196617 select 0 1 2; -#P newex 206 98 27 196617 |; -#P newex 47 121 40 196617 change; -#P outlet 129 252 15 0; -#P message 47 145 65 196617 constrain \$1; -#P newex 129 195 45 196617 loadbang; -#P newex 47 40 222 196617 pushkeys; -#P message 270 169 58 196617 mode move; -#P message 206 213 61 196617 mode select; -#P message 238 191 52 196617 mode loop; -#P connect 3 0 7 0; -#P connect 7 0 5 0; -#P connect 12 0 13 0; -#P fasten 2 0 6 0 275 243 134 243; -#P fasten 1 0 6 0 211 243 134 243; -#P fasten 0 0 6 0 243 243 134 243; -#P fasten 5 0 6 0 52 243 134 243; -#P connect 11 0 14 0; -#P connect 14 0 8 0; -#P connect 3 3 8 0; -#P connect 8 0 10 0; -#P connect 10 0 9 0; -#P connect 13 0 1 0; -#P connect 9 0 1 0; -#P connect 4 0 1 0; -#P connect 11 0 8 1; -#P connect 9 1 0 0; -#P connect 3 4 11 0; -#P connect 9 2 2 0; -#P pop; -#P hidden newobj 438 29 49 196617 p wfkeys; -#P comment 222 59 168 196617 generates a linear ramp from 1 to 0; -#P comment 222 37 89 196622 vasp.!bevel; -#P message 228 87 70 196617 vasp bufbevel; -#P newex 228 115 59 196617 vasp.!bevel; -#P newex 228 141 61 196617 vasp.update; -#P newex 44 115 55 196617 vasp.bevel; -#P hidden message 438 69 63 196617 set bufbevel; -#P hidden newex 438 50 45 196617 loadbang; -#P user waveform~ 438 86 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 44 141 61 196617 vasp.update; -#P message 44 87 70 196617 vasp bufbevel; -#P newex 640 209 110 196617 buffer~ bufbevel 2000; -#P comment 41 59 168 196617 generates a linear ramp from 0 to 1; -#P comment 41 37 89 196622 vasp.bevel; -#P connect 3 0 8 0; -#P connect 8 0 4 0; -#P connect 11 0 10 0; -#P connect 10 0 9 0; -#P hidden connect 6 0 7 0; -#P hidden connect 7 0 5 0; -#P hidden connect 14 0 5 0; -#P connect 16 0 15 0; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.cdiv.help b/externals/grill/vasp/max-help/vasp.cdiv.help deleted file mode 100755 index 820a1d4f..00000000 --- a/externals/grill/vasp/max-help/vasp.cdiv.help +++ /dev/null @@ -1,12 +0,0 @@ -max v2; -#N vpatcher 227 188 626 430; -#P comment 43 141 118 196617 c \, d ... right operand; -#P comment 43 126 118 196617 a \, b ... left operand; -#P comment 43 111 102 196617 e \, f ... target buffers; -#P newex 229 79 43 196617 vasp.c/; -#P comment 43 184 300 196617 differences in lengths are adjusted to smaller vector of each pair; -#P comment 43 81 98 196617 e+if=(a+ib)/(c+id); -#P comment 43 42 89 196622 vasp.c/; -#P comment 43 168 302 196617 vasp.c/ needs 2 vectors per operand which are treated as pairs; -#P comment 43 65 109 196617 complex division; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.cfft.help b/externals/grill/vasp/max-help/vasp.cfft.help deleted file mode 100755 index d72d0030..00000000 --- a/externals/grill/vasp/max-help/vasp.cfft.help +++ /dev/null @@ -1,414 +0,0 @@ -max v2; -#N vpatcher 146 162 914 644; -#P origin 0 8; -#P message 546 392 84 196617 vasp bufre bufim; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 546 413 78 196617 p clear_buffers; -#P hidden newex 631 367 54 196617 r 1061path1; -#P user umenu 255 103 72 196647 1 64 119 1; -#X add bass.aif; -#X add beat.aif; -#X add fly.aif; -#X add plastic.aif; -#X add your_own...; -#N vpatcher 93 462 631 722; -#P message 59 102 28 196617 read; -#P newex 59 69 89 196617 route your_own...; -#N comlet popup comment in; -#P inlet 59 26 15 0; -#P newex 59 149 54 196617 s 1061path1; -#P newex 138 102 79 196617 sprintf read %s; -#P connect 2 0 3 0; -#P connect 3 0 4 0; -#P connect 4 0 1 0; -#P fasten 0 0 1 0 143 134 64 134; -#P connect 3 1 0 0; -#P pop; -#P hidden newobj 317 133 43 196617 p loader; -#P comment 229 105 26 196617 read; -#P comment 140 319 217 196617 inverse cfft to transform back to time domain; -#P newex 54 367 61 196617 vasp.update; -#P message 54 318 84 196617 vasp bufre bufim; -#P newex 54 346 52 196617 vasp.c!fft; -#N vpatcher 122 59 923 629; -#P origin 0 12; -#P comment 100 398 152 196617 set selected samples to 0; -#P user umenu 259 107 72 196647 1 64 123 1; -#X add bass.aif; -#X add beat.aif; -#X add fly.aif; -#X add plastic.aif; -#X add your_own...; -#N vpatcher 93 462 344 681; -#P message 59 102 28 196617 read; -#P newex 59 69 89 196617 route your_own...; -#N comlet popup comment in; -#P inlet 59 26 15 0; -#P newex 59 149 48 196617 s 1061path; -#P newex 138 102 79 196617 sprintf read %s; -#P connect 2 0 3 0; -#P connect 3 0 4 0; -#P connect 4 0 1 0; -#P fasten 0 0 1 0 143 134 64 134; -#P connect 3 1 0 0; -#P pop; -#P hidden newobj 321 137 43 196617 p loader; -#P message 566 469 95 196617 vasp bufre1 bufim1; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 566 489 78 196617 p clear_buffers; -#P hidden newex 662 447 48 196617 r 1061path; -#P comment 230 108 26 196617 read; -#P comment 148 206 53 196617 transform; -#P comment 311 323 21 196617 and; -#P comment 283 323 17 196617 Hz; -#P flonum 224 321 59 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P hidden newex 554 406 27 196617 - 0.; -#P hidden newex 554 385 27 196617 t b f; -#P newex 51 489 61 196617 vasp.update; -#P comment 150 448 54 196617 invers cfft; -#P message 51 447 95 196617 vasp bufre1 bufim1; -#P newex 51 467 52 196617 vasp.c!fft; -#P comment 115 269 207 196617 clear upper (mirrored frequencies); -#P newex 51 287 61 196617 vasp.update; -#P newex 51 267 45 196617 vasp.= 0; -#P button 334 321 15 0; -#P newex 51 417 61 196617 vasp.update; -#P newex 51 396 45 196617 vasp.= 0; -#P message 67 373 158 196617 set vasp \$1 bufre1 \$2 bufim1 \$2; -#N vpatcher 139 82 551 321; -#P origin 0 107; -#N comlet length and offset as a list; -#P outlet 99 199 15 0; -#P comment 161 182 194 196617 2nd element of the list offset of the vasp; -#N comlet loop startpoint; -#P inlet 69 24 15 0; -#N comlet loop endpoint; -#P inlet 99 24 15 0; -#P newex 99 94 27 196617 - 0.; -#P newex 99 73 27 196617 t b f; -#P comment 181 117 72 196617 msec to samps; -#P comment 136 93 118 196617 <<< end - start = length; -#P newex 255 135 87 196617 * 44.099998; -#P newex 99 114 71 196617 * 44.099998; -#P newex 99 162 50 196617 pack 0 0; -#P comment 162 165 194 196617 1st element of the list lenght of the vasp; -#P fasten 9 0 6 0 74 61 104 61; -#P fasten 8 0 7 0 104 52 89 52 89 92 104 92; -#P connect 6 0 7 0; -#P connect 7 0 2 0; -#P connect 2 0 1 0; -#P connect 1 0 11 0; -#P connect 6 1 7 1; -#P fasten 3 0 1 1 260 157 144 157; -#P fasten 9 0 3 0 74 61 260 61; -#P pop; -#P newobj 67 346 64 196617 p looptovasp; -#P comment 452 365 71 196617 selection from; -#P comment 668 365 17 196617 Hz; -#P comment 586 365 17 196617 to; -#P flonum 606 363 59 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P flonum 525 363 59 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P hidden newex 606 342 27 196617 / 4.; -#P hidden newex 525 342 27 196617 / 4.; -#P hidden newex 606 325 67 196617 * 44.099998; -#P hidden newex 525 324 66 196617 * 44.099998; -#P comment 737 318 42 196617 44.1kHz; -#P comment 451 319 35 196617 0 Hz; -#P newex 51 246 55 196617 vasp.upper; -#P comment 714 202 49 196617 imaginary; -#P message 51 205 95 196617 vasp bufre1 bufim1; -#P newex 51 226 49 196617 vasp.cfft; -#P hidden message 452 198 55 196617 set bufim1; -#P user waveform~ 452 216 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 662 489 102 196617 buffer~ bufim1 4000; -#N vpatcher 40 55 418 371; -#P button 183 82 15 0; -#P newex 129 145 60 196617 prepend set; -#N comlet waveform~ mode messages; -#P inlet 129 121 15 0; -#P newex 259 64 27 196617 << 1; -#P newex 206 121 40 196617 change; -#P newex 206 145 107 196617 select 0 1 2; -#P newex 206 98 27 196617 |; -#P newex 47 121 40 196617 change; -#P outlet 129 252 15 0; -#P message 47 145 65 196617 constrain \$1; -#P newex 129 195 45 196617 loadbang; -#P newex 47 40 222 196617 pushkeys; -#P message 270 169 58 196617 mode move; -#P message 206 213 61 196617 mode select; -#P message 238 191 52 196617 mode loop; -#P connect 3 0 7 0; -#P connect 7 0 5 0; -#P connect 12 0 13 0; -#P fasten 5 0 6 0 52 243 134 243; -#P fasten 0 0 6 0 243 243 134 243; -#P fasten 1 0 6 0 211 243 134 243; -#P fasten 2 0 6 0 275 243 134 243; -#P connect 11 0 14 0; -#P connect 3 3 8 0; -#P connect 14 0 8 0; -#P connect 8 0 10 0; -#P connect 10 0 9 0; -#P connect 4 0 1 0; -#P connect 9 0 1 0; -#P connect 13 0 1 0; -#P connect 11 0 8 1; -#P connect 9 1 0 0; -#P connect 3 4 11 0; -#P connect 9 2 2 0; -#P pop; -#P hidden newobj 452 33 49 196617 p wfkeys; -#P message 411 490 27 196617 stop; -#P message 343 490 65 196617 startwindow; -#P newex 452 516 29 196617 dac~; -#P newex 452 464 30 196617 line~; -#P message 452 441 72 196617 0 \, 4000 4000; -#P newex 452 489 65 196617 play~ bufre1; -#P hidden message 452 76 55 196617 set bufre1; -#P hidden newex 452 55 45 196617 loadbang; -#P user waveform~ 452 95 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 51 149 55 196617 vasp.* 0.5; -#P newex 51 171 61 196617 vasp.update; -#P message 51 107 62 196617 vasp bufre1; -#P newex 662 469 102 196617 buffer~ bufre1 4000; -#P newex 51 127 55 196617 vasp.noise; -#P comment 45 60 242 196617 clear a region in the frequency domain to get a filter; -#P comment 45 38 144 196622 filter_example; -#P comment 115 108 112 196617 generate white noise or; -#P comment 739 82 26 196617 real; -#P comment 115 289 207 196617 now time is frequency and frequency is time; -#P comment 594 317 35 196617 sr/2; -#P comment 132 348 286 196617 this patcher scales a wavedraw selection into the vasp format; -#P comment 67 323 152 196617 select a region ( frequency band); -#P connect 10 0 8 0; -#P connect 8 0 12 0; -#P connect 12 0 11 0; -#P connect 27 0 26 0; -#P connect 26 0 29 0; -#P connect 29 0 46 0; -#P connect 46 0 47 0; -#P connect 42 0 43 0; -#P fasten 45 0 43 0 339 342 56 342; -#P lcolor 15; -#P connect 43 0 44 0; -#P connect 50 0 49 0; -#P connect 49 0 52 0; -#P hidden fasten 24 2 41 0 577 318 72 318; -#P connect 41 0 42 0; -#P hidden fasten 24 3 41 1 637 318 126 318; -#P hidden fasten 54 0 55 0 559 425 426 425 426 318 229 318; -#P hidden connect 64 1 63 0; -#P hidden connect 14 0 15 0; -#P hidden fasten 9 1 15 0 759 486 774 486 774 75; -#P hidden connect 22 0 13 0; -#P hidden connect 15 0 13 0; -#P hidden fasten 14 0 25 0 457 198 457 198; -#P hidden connect 25 0 24 0; -#P hidden fasten 22 0 24 0 457 91 457 91; -#P connect 17 0 18 0; -#P connect 18 0 16 0; -#P fasten 21 0 19 0 416 509 457 509; -#P fasten 20 0 19 0 348 509 457 509; -#P connect 16 0 19 0; -#P connect 16 0 19 1; -#P hidden fasten 24 2 32 0 577 323 530 323; -#P hidden connect 32 0 34 0; -#P hidden connect 34 0 36 0; -#P hidden fasten 36 0 53 0 530 382 559 382; -#P hidden fasten 37 0 54 0 611 404 559 404; -#P hidden connect 53 0 54 0; -#P connect 62 0 61 0; -#P hidden connect 53 1 54 1; -#P hidden fasten 24 3 33 0 637 323 611 323; -#P hidden connect 33 0 35 0; -#P hidden connect 35 0 37 0; -#P hidden connect 60 0 9 0; -#P hidden fasten 24 5 13 4 757 346 757 346 757 73 757 73; -#P hidden connect 13 5 24 4; -#P pop; -#P newobj 54 411 83 196617 p filter_example; -#P comment 699 315 42 196617 44.1kHz; -#P comment 413 316 35 196617 0 Hz; -#P newex 54 272 61 196617 vasp.update; -#P comment 677 198 49 196617 imaginary; -#P message 54 223 84 196617 vasp bufre bufim; -#P newex 54 244 49 196617 vasp.cfft; -#P hidden message 414 195 50 196617 set bufim; -#P user waveform~ 414 213 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 631 412 95 196617 buffer~ bufim 4000; -#N vpatcher 40 55 418 371; -#P button 183 82 15 0; -#P newex 129 145 60 196617 prepend set; -#N comlet waveform~ mode messages; -#P inlet 129 121 15 0; -#P newex 259 64 27 196617 << 1; -#P newex 206 121 40 196617 change; -#P newex 206 145 107 196617 select 0 1 2; -#P newex 206 98 27 196617 |; -#P newex 47 121 40 196617 change; -#P outlet 129 252 15 0; -#P message 47 145 65 196617 constrain \$1; -#P newex 129 195 45 196617 loadbang; -#P newex 47 40 222 196617 pushkeys; -#P message 270 169 58 196617 mode move; -#P message 206 213 61 196617 mode select; -#P message 238 191 52 196617 mode loop; -#P connect 3 0 7 0; -#P connect 7 0 5 0; -#P connect 12 0 13 0; -#P fasten 2 0 6 0 275 243 134 243; -#P fasten 1 0 6 0 211 243 134 243; -#P fasten 0 0 6 0 243 243 134 243; -#P fasten 5 0 6 0 52 243 134 243; -#P connect 11 0 14 0; -#P connect 14 0 8 0; -#P connect 3 3 8 0; -#P connect 8 0 10 0; -#P connect 10 0 9 0; -#P connect 13 0 1 0; -#P connect 9 0 1 0; -#P connect 4 0 1 0; -#P connect 11 0 8 1; -#P connect 9 1 0 0; -#P connect 3 4 11 0; -#P connect 9 2 2 0; -#P pop; -#P hidden newobj 414 30 49 196617 p wfkeys; -#P message 373 413 27 196617 stop; -#P message 305 413 65 196617 startwindow; -#P newex 414 439 29 196617 dac~; -#P newex 414 387 30 196617 line~; -#P message 414 364 72 196617 0 \, 4000 4000; -#P newex 414 412 60 196617 play~ bufre; -#P hidden message 414 73 49 196617 set bufre; -#P hidden newex 414 52 45 196617 loadbang; -#P user waveform~ 414 92 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 55 158 55 196617 vasp.* 0.5; -#P newex 55 180 61 196617 vasp.update; -#P message 55 104 55 196617 vasp bufre; -#P newex 631 392 95 196617 buffer~ bufre 4000; -#P newex 55 136 55 196617 vasp.noise; -#P comment 53 58 182 196617 complex fourier transformation; -#P comment 53 35 89 196622 vasp.cfft; -#P comment 113 105 115 196617 generate white noise or; -#P comment 53 73 105 196617 cfft needs two buffers; -#P comment 703 78 26 196617 real; -#P comment 119 275 207 196617 now time is frequency and frequency is time; -#P comment 556 314 35 196617 sr/2; -#P connect 26 0 25 0; -#P connect 25 0 28 0; -#P connect 33 0 32 0; -#P connect 32 0 34 0; -#P connect 9 0 7 0; -#P connect 7 0 11 0; -#P connect 11 0 10 0; -#P hidden connect 38 1 37 0; -#P hidden connect 13 0 14 0; -#P hidden fasten 8 1 14 0 721 408 737 408 737 72; -#P hidden connect 21 0 12 0; -#P hidden connect 14 0 12 0; -#P hidden fasten 13 0 24 0 419 195 419 195; -#P hidden connect 24 0 23 0; -#P hidden fasten 21 0 23 0 419 88 419 88; -#P connect 16 0 17 0; -#P connect 17 0 15 0; -#P connect 15 0 18 0; -#P fasten 19 0 18 0 310 432 419 432; -#P fasten 20 0 18 0 378 432 419 432; -#P connect 15 0 18 1; -#P connect 41 0 40 0; -#P hidden connect 39 0 8 0; -#P hidden fasten 23 5 12 4 719 343 745 343 745 70 719 70; -#P hidden connect 12 5 23 4; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.chk.help b/externals/grill/vasp/max-help/vasp.chk.help deleted file mode 100755 index 37412227..00000000 --- a/externals/grill/vasp/max-help/vasp.chk.help +++ /dev/null @@ -1,20 +0,0 @@ -max v2; -#N vpatcher 215 115 767 458; -#P hidden message 411 138 22 196617 set; -#P hidden newex 411 104 45 196617 loadbang; -#P comment 237 127 150 196617 buffer length = 88200 samples; -#P comment 237 272 253 196617 corrected vasp with maximum length at offset 44100; -#P newex 70 246 60 196617 prepend set; -#P message 70 170 135 196617 vasp 88200 bufchk 44100 0; -#P newex 70 194 45 196617 vasp.chk; -#P newex 70 125 101 196617 buffer~ bufchk 2000; -#P comment 59 77 272 196617 checks the dimensions of a vasp and corrects them; -#P comment 59 55 89 196622 vasp.chk; -#P comment 237 171 150 196617 vasp with impossible dimensions; -#P message 70 271 165 196617; -#P connect 6 0 5 0; -#P connect 5 0 7 0; -#P connect 7 0 0 0; -#P hidden fasten 11 0 0 0 416 266 75 266; -#P hidden connect 10 0 11 0; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.cifft.help b/externals/grill/vasp/max-help/vasp.cifft.help deleted file mode 100755 index 0912ba43..00000000 --- a/externals/grill/vasp/max-help/vasp.cifft.help +++ /dev/null @@ -1,407 +0,0 @@ -max v2; -#N vpatcher 153 83 876 572; -#P origin 0 10; -#P user umenu 80 104 72 196647 1 64 120 1; -#X add bass.aif; -#X add beat.aif; -#X add fly.aif; -#X add plastic.aif; -#X add your_own...; -#N vpatcher 93 462 344 681; -#P message 59 102 28 196617 read; -#P newex 59 69 89 196617 route your_own...; -#N comlet popup comment in; -#P inlet 59 26 15 0; -#P newex 59 149 54 196617 s 1063path1; -#P newex 138 102 79 196617 sprintf read %s; -#P connect 2 0 3 0; -#P connect 3 0 4 0; -#P fasten 0 0 1 0 143 134 64 134; -#P connect 4 0 1 0; -#P connect 3 1 0 0; -#P pop; -#P hidden newobj 142 125 43 196617 p loader; -#P message 501 400 90 196617 vasp bufre! bufim!; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 501 420 78 196617 p clear_buffers; -#P hidden newex 593 370 54 196617 r 1063path1; -#P comment 53 106 26 196617 read; -#P comment 154 312 214 196617 inverse cfft to transform back to time domain; -#P newex 62 360 61 196617 vasp.update; -#P message 62 311 90 196617 vasp bufre! bufim!; -#P newex 62 339 52 196617 vasp.c!fft; -#N vpatcher 155 102 963 712; -#P origin 0 7; -#P user umenu 262 101 72 196647 1 64 117 1; -#X add bass.aif; -#X add beat.aif; -#X add fly.aif; -#X add plastic.aif; -#X add your_own...; -#N vpatcher 93 462 344 681; -#P message 59 102 28 196617 read; -#P newex 59 69 89 196617 route your_own...; -#N comlet popup comment in; -#P inlet 59 26 15 0; -#P newex 59 149 48 196617 s 1063path; -#P newex 138 102 79 196617 sprintf read %s; -#P connect 2 0 3 0; -#P connect 3 0 4 0; -#P connect 4 0 1 0; -#P fasten 0 0 1 0 143 134 64 134; -#P connect 3 1 0 0; -#P pop; -#P hidden newobj 324 123 43 196617 p loader; -#P message 558 519 102 196617 vasp bufre1! bufim1!; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 558 539 78 196617 p clear_buffers; -#P hidden newex 662 492 48 196617 r 1063path; -#P comment 235 103 26 196617 read; -#P flonum 367 323 33 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P comment 157 201 148 196617 transform to frequency domain; -#P comment 288 325 79 196617 Hz \, a gainfactor; -#P flonum 227 323 59 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P hidden newex 557 401 27 196617 - 0.; -#P hidden newex 557 380 27 196617 t b f; -#P newex 54 539 61 196617 vasp.update; -#P comment 159 498 177 196617 invers cfft to get back to time domain; -#P message 54 497 102 196617 vasp bufre1! bufim1!; -#P newex 54 517 52 196617 vasp.c!fft; -#P comment 105 264 167 196617 clear upper (mirrored frequencies); -#P newex 54 282 61 196617 vasp.update; -#P newex 54 262 45 196617 vasp.= 0; -#P button 97 342 15 0; -#P newex 54 467 61 196617 vasp.update; -#P newex 54 446 51 196617 vasp.* 1.; -#P message 64 399 164 196617 set vasp \$1 bufre1! \$2 bufim1! \$2; -#N vpatcher 139 82 551 321; -#P origin 0 107; -#N comlet length and offset as a list; -#P outlet 99 199 15 0; -#P comment 161 182 194 196617 2nd element of the list offset of the vasp; -#N comlet loop startpoint; -#P inlet 69 24 15 0; -#N comlet loop endpoint; -#P inlet 99 24 15 0; -#P newex 99 94 27 196617 - 0.; -#P newex 99 73 27 196617 t b f; -#P comment 181 117 72 196617 msec to samps; -#P comment 136 93 118 196617 <<< end - start = length; -#P newex 255 135 87 196617 * 44.099998; -#P newex 99 114 71 196617 * 44.099998; -#P newex 99 162 50 196617 pack 0 0; -#P comment 162 165 194 196617 1st element of the list lenght of the vasp; -#P fasten 9 0 6 0 74 61 104 61; -#P connect 6 0 7 0; -#P fasten 8 0 7 0 104 52 89 52 89 92 104 92; -#P connect 7 0 2 0; -#P connect 2 0 1 0; -#P connect 1 0 11 0; -#P connect 6 1 7 1; -#P fasten 3 0 1 1 260 157 144 157; -#P fasten 9 0 3 0 74 61 260 61; -#P pop; -#P newobj 64 371 64 196617 p looptovasp; -#P comment 455 360 71 196617 selection from; -#P comment 671 360 17 196617 Hz; -#P comment 589 360 17 196617 to; -#P flonum 609 358 59 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P flonum 528 358 59 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P hidden newex 609 337 27 196617 / 4.; -#P hidden newex 528 337 27 196617 / 4.; -#P hidden newex 609 320 67 196617 * 44.099998; -#P hidden newex 528 319 66 196617 * 44.099998; -#P comment 740 313 42 196617 44.1kHz; -#P comment 454 314 35 196617 0 Hz; -#P newex 54 241 55 196617 vasp.upper; -#P comment 717 197 49 196617 imaginary; -#P message 54 200 102 196617 vasp bufre1! bufim1!; -#P newex 54 221 49 196617 vasp.cfft; -#P hidden message 455 193 59 196617 set bufim1!; -#P user waveform~ 455 211 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 662 539 105 196617 buffer~ bufim1! 4000; -#N vpatcher 40 55 418 371; -#P button 183 82 15 0; -#P newex 129 145 60 196617 prepend set; -#N comlet waveform~ mode messages; -#P inlet 129 121 15 0; -#P newex 259 64 27 196617 << 1; -#P newex 206 121 40 196617 change; -#P newex 206 145 107 196617 select 0 1 2; -#P newex 206 98 27 196617 |; -#P newex 47 121 40 196617 change; -#P outlet 129 252 15 0; -#P message 47 145 65 196617 constrain \$1; -#P newex 129 195 45 196617 loadbang; -#P newex 47 40 222 196617 pushkeys; -#P message 270 169 58 196617 mode move; -#P message 206 213 61 196617 mode select; -#P message 238 191 52 196617 mode loop; -#P connect 3 0 7 0; -#P connect 7 0 5 0; -#P connect 12 0 13 0; -#P fasten 2 0 6 0 275 243 134 243; -#P fasten 1 0 6 0 211 243 134 243; -#P fasten 0 0 6 0 243 243 134 243; -#P fasten 5 0 6 0 52 243 134 243; -#P connect 11 0 14 0; -#P connect 14 0 8 0; -#P connect 3 3 8 0; -#P connect 8 0 10 0; -#P connect 10 0 9 0; -#P connect 13 0 1 0; -#P connect 9 0 1 0; -#P connect 4 0 1 0; -#P connect 11 0 8 1; -#P connect 9 1 0 0; -#P connect 3 4 11 0; -#P connect 9 2 2 0; -#P pop; -#P hidden newobj 455 28 49 196617 p wfkeys; -#P message 414 541 27 196617 stop; -#P message 346 541 65 196617 startwindow; -#P newex 455 567 29 196617 dac~; -#P newex 455 515 30 196617 line~; -#P message 455 492 72 196617 0 \, 4000 4000; -#P newex 455 539 69 196617 play~ bufre1!; -#P hidden message 455 71 58 196617 set bufre1!; -#P hidden newex 455 50 45 196617 loadbang; -#P user waveform~ 455 90 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 54 144 55 196617 vasp.* 0.5; -#P newex 54 166 61 196617 vasp.update; -#P message 54 102 65 196617 vasp bufre1!; -#P newex 662 519 105 196617 buffer~ bufre1! 4000; -#P newex 54 122 55 196617 vasp.noise; -#P comment 48 55 339 196617 change gain of a region in the frequency domain to filter a buffer content; -#P comment 48 33 144 196622 filter_example; -#P comment 120 103 114 196617 generate white noise or; -#P comment 744 77 26 196617 real; -#P comment 597 312 35 196617 sr/2; -#P comment 129 369 174 196617 this patcher scales a wavedraw selection into the vasp format; -#P comment 70 325 152 196617 select a region ( frequency band); -#P comment 70 343 25 196617 and; -#P connect 10 0 8 0; -#P connect 8 0 12 0; -#P connect 12 0 11 0; -#P connect 27 0 26 0; -#P connect 26 0 29 0; -#P connect 29 0 46 0; -#P connect 46 0 47 0; -#P fasten 42 0 43 0 69 430 59 430; -#P fasten 45 0 43 0 102 363 59 363; -#P connect 43 0 44 0; -#P connect 50 0 49 0; -#P connect 49 0 52 0; -#P hidden fasten 24 2 41 0 580 313 69 313; -#P connect 41 0 42 0; -#P fasten 58 0 43 1 372 428 100 428; -#P hidden fasten 24 3 41 1 640 313 123 313; -#P hidden fasten 54 0 55 0 562 420 429 420 429 313 232 313; -#P hidden connect 64 1 63 0; -#P hidden connect 14 0 15 0; -#P hidden fasten 9 1 15 0 762 537 774 537 774 70; -#P hidden connect 22 0 13 0; -#P hidden connect 15 0 13 0; -#P hidden fasten 14 0 25 0 460 193 460 193; -#P hidden fasten 22 0 24 0 460 86 460 86; -#P hidden connect 25 0 24 0; -#P connect 17 0 18 0; -#P connect 18 0 16 0; -#P connect 16 0 19 0; -#P fasten 20 0 19 0 351 561 460 561; -#P fasten 21 0 19 0 419 561 460 561; -#P connect 16 0 19 1; -#P hidden fasten 24 2 32 0 580 315 533 315; -#P hidden connect 32 0 34 0; -#P hidden connect 34 0 36 0; -#P hidden fasten 36 0 53 0 533 377 562 377; -#P hidden connect 53 0 54 0; -#P hidden fasten 37 0 54 0 614 399 562 399; -#P connect 62 0 61 0; -#P hidden connect 53 1 54 1; -#P hidden fasten 24 3 33 0 640 315 614 315; -#P hidden connect 33 0 35 0; -#P hidden connect 35 0 37 0; -#P hidden fasten 60 0 9 0 667 512 667 512; -#P hidden fasten 24 5 13 4 760 341 760 341 760 68 760 68; -#P hidden connect 13 5 24 4; -#P pop; -#P newobj 62 420 85 196617 p filter_example!; -#P comment 666 312 42 196617 44.1kHz; -#P comment 380 312 35 196617 0 Hz; -#P newex 62 192 61 196617 vasp.update; -#P comment 644 193 49 196617 imaginary; -#P message 62 143 90 196617 vasp bufre! bufim!; -#P newex 62 171 49 196617 vasp.cfft; -#P hidden message 381 190 53 196617 set bufim!; -#P user waveform~ 381 208 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 593 420 100 196617 buffer~ bufim! 4000; -#N vpatcher 40 55 418 371; -#P button 183 82 15 0; -#P newex 129 145 60 196617 prepend set; -#N comlet waveform~ mode messages; -#P inlet 129 121 15 0; -#P newex 259 64 27 196617 << 1; -#P newex 206 121 40 196617 change; -#P newex 206 145 107 196617 select 0 1 2; -#P newex 206 98 27 196617 |; -#P newex 47 121 40 196617 change; -#P outlet 129 252 15 0; -#P message 47 145 65 196617 constrain \$1; -#P newex 129 195 45 196617 loadbang; -#P newex 47 40 222 196617 pushkeys; -#P message 270 169 58 196617 mode move; -#P message 206 213 61 196617 mode select; -#P message 238 191 52 196617 mode loop; -#P connect 3 0 7 0; -#P connect 7 0 5 0; -#P connect 12 0 13 0; -#P fasten 5 0 6 0 52 243 134 243; -#P fasten 0 0 6 0 243 243 134 243; -#P fasten 1 0 6 0 211 243 134 243; -#P fasten 2 0 6 0 275 243 134 243; -#P connect 11 0 14 0; -#P connect 3 3 8 0; -#P connect 14 0 8 0; -#P connect 8 0 10 0; -#P connect 10 0 9 0; -#P connect 4 0 1 0; -#P connect 9 0 1 0; -#P connect 13 0 1 0; -#P connect 11 0 8 1; -#P connect 9 1 0 0; -#P connect 3 4 11 0; -#P connect 9 2 2 0; -#P pop; -#P hidden newobj 381 25 49 196617 p wfkeys; -#P message 340 421 27 196617 stop; -#P message 272 421 65 196617 startwindow; -#P newex 381 447 29 196617 dac~; -#P newex 381 395 30 196617 line~; -#P message 381 372 72 196617 0 \, 4000 4000; -#P newex 381 420 63 196617 play~ bufre!; -#P hidden message 381 68 52 196617 set bufre!; -#P hidden newex 381 47 45 196617 loadbang; -#P user waveform~ 381 87 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 593 400 100 196617 buffer~ bufre! 4000; -#P comment 49 58 218 196617 inverse complex fourier transformation; -#P comment 49 35 89 196622 vasp.c!fft; -#P comment 49 73 123 196617 c!fft needs two buffers; -#P comment 670 73 26 196617 real; -#P comment 127 195 207 196617 now time is frequency and frequency is time; -#P comment 524 312 35 196617 sr/2; -#P comment 62 243 249 196617 to get back to the source file in time domain either use 3 more times vasp.cfft or just vasp.c!fft !!; -#P comment 155 144 146 196617 transform to frequency domain; -#P connect 23 0 22 0; -#P connect 22 0 25 0; -#P connect 30 0 29 0; -#P connect 29 0 31 0; -#P hidden connect 38 1 37 0; -#P hidden connect 10 0 11 0; -#P hidden fasten 8 1 11 0 688 417 701 417 701 67; -#P hidden connect 18 0 9 0; -#P hidden connect 11 0 9 0; -#P hidden fasten 10 0 21 0 386 190 386 190; -#P hidden fasten 18 0 20 0 386 83 386 83; -#P hidden connect 21 0 20 0; -#P connect 13 0 14 0; -#P connect 14 0 12 0; -#P connect 12 0 15 0; -#P fasten 17 0 15 0 345 440 386 440; -#P fasten 16 0 15 0 277 440 386 440; -#P connect 12 0 15 1; -#P connect 36 0 35 0; -#P hidden connect 34 0 8 0; -#P hidden fasten 20 5 9 4 686 338 686 338 686 65 686 65; -#P hidden connect 9 5 20 4; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.cmul.help b/externals/grill/vasp/max-help/vasp.cmul.help deleted file mode 100755 index 25d92f2e..00000000 --- a/externals/grill/vasp/max-help/vasp.cmul.help +++ /dev/null @@ -1,12 +0,0 @@ -max v2; -#N vpatcher 258 153 655 401; -#P comment 45 142 118 196617 c \, d ... right operand; -#P comment 45 127 118 196617 a \, b ... left operand; -#P comment 45 112 102 196617 e \, f ... target buffers; -#P newex 239 97 44 196617 vasp.c*; -#P comment 45 187 300 196617 differences in lengths are adjusted to smaller vector of each pair; -#P comment 45 80 98 196617 e+if=(a+ib)*(c+id); -#P comment 45 41 89 196622 vasp.c*; -#P comment 45 171 302 196617 vasp.c* needs 2 vectors per operand which are treated as pairs; -#P comment 45 64 109 196617 complex multiplication; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.cnoise.help b/externals/grill/vasp/max-help/vasp.cnoise.help deleted file mode 100755 index 8cdf423a..00000000 --- a/externals/grill/vasp/max-help/vasp.cnoise.help +++ /dev/null @@ -1,116 +0,0 @@ -max v2; -#N vpatcher 130 121 812 507; -#P message 391 318 131 196617 vasp bufcnoise1 bufcnoise2; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 391 338 73 196617 p clear_buffer; -#N vpatcher 40 55 418 371; -#P button 183 82 15 0; -#P newex 129 145 60 196617 prepend set; -#N comlet waveform~ mode messages; -#P inlet 129 121 15 0; -#P newex 259 64 27 196617 << 1; -#P newex 206 121 40 196617 change; -#P newex 206 145 107 196617 select 0 1 2; -#P newex 206 98 27 196617 |; -#P newex 47 121 40 196617 change; -#P outlet 129 252 15 0; -#P message 47 145 65 196617 constrain \$1; -#P newex 129 195 45 196617 loadbang; -#P newex 47 40 222 196617 pushkeys; -#P message 270 169 58 196617 mode move; -#P message 206 213 61 196617 mode select; -#P message 238 191 52 196617 mode loop; -#P connect 3 0 7 0; -#P connect 7 0 5 0; -#P connect 12 0 13 0; -#P fasten 2 0 6 0 275 243 134 243; -#P fasten 1 0 6 0 211 243 134 243; -#P fasten 0 0 6 0 243 243 134 243; -#P fasten 5 0 6 0 52 243 134 243; -#P connect 11 0 14 0; -#P connect 14 0 8 0; -#P connect 3 3 8 0; -#P connect 8 0 10 0; -#P connect 10 0 9 0; -#P connect 13 0 1 0; -#P connect 9 0 1 0; -#P connect 4 0 1 0; -#P connect 11 0 8 1; -#P connect 9 1 0 0; -#P connect 3 4 11 0; -#P connect 9 2 2 0; -#P pop; -#P hidden newobj 332 25 49 196617 p wfkeys; -#P comment 527 196 117 196617 imaginary part of cnoise; -#P message 45 125 131 196617 vasp bufcnoise1 bufcnoise2; -#P hidden message 332 190 73 196617 set bufcnoise2; -#P user waveform~ 332 211 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 524 338 120 196617 buffer~ bufcnoise2 2000; -#P hidden message 332 64 73 196617 set bufcnoise1; -#P hidden newex 332 44 45 196617 loadbang; -#P user waveform~ 332 84 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 45 180 55 196617 vasp.* 0.5; -#P newex 45 205 61 196617 vasp.update; -#P newex 524 318 120 196617 buffer~ bufcnoise1 2000; -#P newex 45 156 60 196617 vasp.cnoise; -#P comment 45 63 168 196617 vasp complex noise generator; -#P comment 45 41 89 196622 vasp.cnoise; -#P comment 107 158 197 196617 generate a complex noise into two buffers; -#P comment 538 68 106 196617 real part of the cnoise; -#P comment 45 81 85 196617 needs 2 buffers; -#P connect 15 0 5 0; -#P connect 5 0 8 0; -#P connect 8 0 7 0; -#P hidden connect 10 0 11 0; -#P hidden connect 17 0 9 0; -#P hidden connect 11 0 9 0; -#P hidden fasten 10 0 14 0 337 54 337 54; -#P hidden fasten 14 0 13 0 337 206 337 206; -#P hidden connect 17 0 13 0; -#P connect 19 0 18 0; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.cnorm.help b/externals/grill/vasp/max-help/vasp.cnorm.help deleted file mode 100755 index 23d44f30..00000000 --- a/externals/grill/vasp/max-help/vasp.cnorm.help +++ /dev/null @@ -1,177 +0,0 @@ -max v2; -#N vpatcher 176 110 856 641; -#P origin 0 8; -#P message 434 416 131 196617 vasp bufcnorm1 bufcnorm2; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 434 483 78 196617 p clear_buffers; -#P hidden newex 519 440 54 196617 r #01path; -#P user umenu 89 115 72 196647 1 64 131 1; -#X add bass.aif; -#X add beat.aif; -#X add fly.aif; -#X add plastic.aif; -#X add your_own...; -#N vpatcher 93 462 631 722; -#P message 59 102 28 196617 read; -#P newex 59 69 89 196617 route your_own...; -#N comlet popup comment in; -#P inlet 59 26 15 0; -#P newex 59 149 54 196617 s #01path; -#P newex 138 102 79 196617 sprintf read %s; -#P user umenu 48 169 100 196647 1 64 185 1; -#X add drums.aif; -#X add voice.aif; -#X add test.aif; -#X add read a soundfile; -#P connect 3 0 4 0; -#P connect 4 0 5 0; -#P connect 5 0 2 0; -#P fasten 1 0 2 0 143 134 64 134; -#P connect 4 1 1 0; -#P pop; -#P hidden newobj 151 140 43 196617 p loader; -#P newex 62 368 63 196617 vasp.* 0.05; -#P comment 195 240 101 196617 set all samples to 1; -#P newex 62 288 61 196617 vasp.update; -#P message 62 239 131 196617 vasp bufcnorm1 bufcnorm2; -#P newex 62 263 60 196617 vasp.cnorm; -#P comment 194 324 72 196617 inverse cfft; -#P newex 62 392 61 196617 vasp.update; -#P message 62 323 131 196617 vasp bufcnorm1 bufcnorm2; -#P newex 62 344 52 196617 vasp.c!fft; -#P comment 612 327 42 196617 44.1kHz; -#P comment 326 328 35 196617 0 Hz; -#P newex 62 207 61 196617 vasp.update; -#P comment 590 210 49 196617 imaginary; -#P message 62 158 131 196617 vasp bufcnorm1 bufcnorm2; -#P newex 62 179 49 196617 vasp.cfft; -#P hidden message 327 207 73 196617 set bufcnorm2; -#P user waveform~ 327 225 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 519 483 120 196617 buffer~ bufcnorm2 4000; -#N vpatcher 40 55 418 371; -#P button 183 82 15 0; -#P newex 129 145 60 196617 prepend set; -#N comlet waveform~ mode messages; -#P inlet 129 121 15 0; -#P newex 259 64 27 196617 << 1; -#P newex 206 121 40 196617 change; -#P newex 206 145 107 196617 select 0 1 2; -#P newex 206 98 27 196617 |; -#P newex 47 121 40 196617 change; -#P outlet 129 252 15 0; -#P message 47 145 65 196617 constrain \$1; -#P newex 129 195 45 196617 loadbang; -#P newex 47 40 222 196617 pushkeys; -#P message 270 169 58 196617 mode move; -#P message 206 213 61 196617 mode select; -#P message 238 191 52 196617 mode loop; -#P connect 3 0 7 0; -#P connect 7 0 5 0; -#P connect 12 0 13 0; -#P fasten 2 0 6 0 275 243 134 243; -#P fasten 1 0 6 0 211 243 134 243; -#P fasten 0 0 6 0 243 243 134 243; -#P fasten 5 0 6 0 52 243 134 243; -#P connect 11 0 14 0; -#P connect 14 0 8 0; -#P connect 3 3 8 0; -#P connect 8 0 10 0; -#P connect 10 0 9 0; -#P connect 13 0 1 0; -#P connect 9 0 1 0; -#P connect 4 0 1 0; -#P connect 11 0 8 1; -#P connect 9 1 0 0; -#P connect 3 4 11 0; -#P connect 9 2 2 0; -#P pop; -#P hidden newobj 327 42 49 196617 p wfkeys; -#P message 286 465 27 196617 stop; -#P message 218 465 65 196617 startwindow; -#P newex 327 484 29 196617 dac~; -#P newex 327 439 30 196617 line~; -#P message 327 416 72 196617 0 \, 4000 4000; -#P newex 327 465 84 196617 play~ bufcnorm1; -#P hidden message 327 85 73 196617 set bufcnorm1; -#P hidden newex 327 64 45 196617 loadbang; -#P user waveform~ 327 104 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 519 464 120 196617 buffer~ bufcnorm1 4000; -#P comment 58 69 218 196617 sets complex radius of samples to unity; -#P comment 58 47 89 196622 vasp.cnorm; -#P comment 58 84 105 196617 needs two buffers; -#P comment 616 90 26 196617 real; -#P comment 194 159 26 196617 cfft; -#P comment 469 326 35 196617 sr/2; -#P comment 127 370 172 196617 reduce gain (safe your loudspeakers); -#P comment 64 117 25 196617 read; -#P connect 23 0 22 0; -#P connect 22 0 25 0; -#P connect 33 0 32 0; -#P connect 32 0 34 0; -#P connect 29 0 28 0; -#P connect 28 0 36 0; -#P connect 36 0 30 0; -#P hidden connect 38 1 37 0; -#P hidden connect 10 0 11 0; -#P hidden fasten 8 1 11 0 634 481 655 481 655 84; -#P hidden connect 18 0 9 0; -#P hidden connect 11 0 9 0; -#P hidden fasten 10 0 21 0 332 207 332 207; -#P hidden fasten 18 0 20 0 332 100 332 100; -#P hidden connect 21 0 20 0; -#P connect 13 0 14 0; -#P connect 14 0 12 0; -#P connect 12 0 15 0; -#P fasten 16 0 15 0 223 484 332 484; -#P fasten 17 0 15 0 291 484 332 484; -#P connect 12 0 15 1; -#P connect 41 0 40 0; -#P hidden connect 39 0 8 0; -#P hidden fasten 20 5 9 4 632 327 650 327 650 101 632 101; -#P hidden connect 9 5 20 4; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.cosc.help b/externals/grill/vasp/max-help/vasp.cosc.help deleted file mode 100755 index 6432d8f1..00000000 --- a/externals/grill/vasp/max-help/vasp.cosc.help +++ /dev/null @@ -1,139 +0,0 @@ -max v2; -#N vpatcher 162 250 877 640; -#P message 451 318 115 196617 vasp bufcosc1 bufcosc2; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 451 338 78 196617 p clear_buffers; -#N vpatcher 169 125 534 375; -#P flonum 70 179 61 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P newex 70 125 27 196617 t b f; -#P message 309 151 27 196617 stop; -#P message 243 151 65 196617 startwindow; -#P newex 243 173 29 196617 dac~; -#P comment 141 175 83 196617 period length in samples (float); -#P flonum 88 97 43 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P newex 70 147 27 196617 / 1.; -#P flonum 68 73 54 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P newex 54 49 53 196617 dspstate~; -#P comment 133 98 100 196617 frequency in Hz; -#P connect 1 1 2 0; -#P fasten 4 0 9 0 93 118 75 118; -#P connect 9 0 3 0; -#P fasten 2 0 3 0 73 115 54 115 54 145 75 145; -#P connect 3 0 10 0; -#P connect 9 1 3 1; -#P connect 7 0 6 0; -#P fasten 8 0 6 0 314 169 248 169; -#P pop; -#P newobj 46 338 109 196617 p Hz_to_period_length; -#N vpatcher 40 55 418 371; -#P button 183 82 15 0; -#P newex 129 145 60 196617 prepend set; -#N comlet waveform~ mode messages; -#P inlet 129 121 15 0; -#P newex 259 64 27 196617 << 1; -#P newex 206 121 40 196617 change; -#P newex 206 145 107 196617 select 0 1 2; -#P newex 206 98 27 196617 |; -#P newex 47 121 40 196617 change; -#P outlet 129 252 15 0; -#P message 47 145 65 196617 constrain \$1; -#P newex 129 195 45 196617 loadbang; -#P newex 47 40 222 196617 pushkeys; -#P message 270 169 58 196617 mode move; -#P message 206 213 61 196617 mode select; -#P message 238 191 52 196617 mode loop; -#P connect 3 0 7 0; -#P connect 7 0 5 0; -#P connect 12 0 13 0; -#P fasten 5 0 6 0 52 243 134 243; -#P fasten 0 0 6 0 243 243 134 243; -#P fasten 1 0 6 0 211 243 134 243; -#P fasten 2 0 6 0 275 243 134 243; -#P connect 11 0 14 0; -#P connect 3 3 8 0; -#P connect 14 0 8 0; -#P connect 8 0 10 0; -#P connect 10 0 9 0; -#P connect 4 0 1 0; -#P connect 9 0 1 0; -#P connect 13 0 1 0; -#P connect 11 0 8 1; -#P connect 9 1 0 0; -#P connect 3 4 11 0; -#P connect 9 2 2 0; -#P pop; -#P hidden newobj 375 30 49 196617 p wfkeys; -#P comment 579 197 108 196617 imaginary part of cosc; -#P message 46 156 115 196617 vasp bufcosc1 bufcosc2; -#P hidden message 375 191 65 196617 set bufcosc2; -#P user waveform~ 375 212 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 575 338 112 196617 buffer~ bufcosc2 2000; -#P hidden message 375 69 65 196617 set bufcosc1; -#P hidden newex 375 50 45 196617 loadbang; -#P user waveform~ 375 87 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 46 214 55 196617 vasp.* 0.5; -#P newex 46 239 61 196617 vasp.update; -#P newex 575 318 112 196617 buffer~ bufcosc1 2000; -#P comment 45 79 312 196617 optional argument/right inlet: frequency in period length in samples; -#P newex 46 189 85 196617 vasp.cosc 44100; -#P comment 45 64 168 196617 vasp complex sine wave generator; -#P comment 45 41 89 196622 vasp.cosc; -#P comment 172 156 136 196617 generate a complex sinewave at 1Hz into two buffers; -#P comment 588 72 100 196617 real part of the cosc; -#P comment 45 94 78 196617 needs 2 buffers; -#P connect 16 0 5 0; -#P connect 5 0 9 0; -#P connect 9 0 8 0; -#P hidden connect 11 0 12 0; -#P hidden connect 18 0 10 0; -#P hidden connect 12 0 10 0; -#P hidden fasten 11 0 15 0 380 50 380 50; -#P hidden connect 18 0 14 0; -#P hidden connect 15 0 14 0; -#P connect 21 0 20 0; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.cplus.help b/externals/grill/vasp/max-help/vasp.cplus.help deleted file mode 100755 index 7f4e999d..00000000 --- a/externals/grill/vasp/max-help/vasp.cplus.help +++ /dev/null @@ -1,12 +0,0 @@ -max v2; -#N vpatcher 258 153 663 403; -#P comment 49 142 118 196617 c \, d ... right operand; -#P comment 49 127 118 196617 a \, b ... left operand; -#P comment 49 112 102 196617 e \, f ... target buffers; -#P newex 238 88 43 196617 vasp.c+; -#P comment 49 190 300 196617 differences in lengths are adjusted to smaller vector of each pair; -#P comment 49 81 98 196617 e+if=(a+ib)+(c+id); -#P comment 49 42 89 196622 vasp.c+; -#P comment 49 174 302 196617 vasp.c+ needs 2 vectors per operand which are treated as pairs; -#P comment 49 65 100 196617 complex addition; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.cpowi.help b/externals/grill/vasp/max-help/vasp.cpowi.help deleted file mode 100755 index d008f65c..00000000 --- a/externals/grill/vasp/max-help/vasp.cpowi.help +++ /dev/null @@ -1,166 +0,0 @@ -max v2; -#N vpatcher 218 95 852 551; -#P hidden newex 507 347 48 196617 r 1141path; -#P user umenu 63 136 72 196647 1 64 152 1; -#X add bass.aif; -#X add beat.aif; -#X add fly.aif; -#X add plastic.aif; -#X add your_own...; -#N vpatcher 93 462 631 722; -#P message 59 102 28 196617 read; -#P newex 59 69 89 196617 route your_own...; -#N comlet popup comment in; -#P inlet 59 26 15 0; -#P newex 59 149 48 196617 s 1141path; -#P newex 138 102 79 196617 sprintf read %s; -#P user umenu 48 169 100 196647 1 64 185 1; -#X add drums.aif; -#X add voice.aif; -#X add test.aif; -#X add read a soundfile; -#P connect 3 0 4 0; -#P connect 4 0 5 0; -#P fasten 1 0 2 0 143 134 64 134; -#P connect 5 0 2 0; -#P connect 4 1 1 0; -#P pop; -#P hidden newobj 125 158 43 196617 p loader; -#P message 353 344 125 196617 vasp bufcpowi1 bufcpowi2; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 353 392 73 196617 p clear_buffer; -#P comment 38 61 151 196617 complex integer power function; -#P comment 38 113 132 196617 argument: exponent (int); -#P newex 44 392 61 196617 vasp.update; -#P message 44 253 125 196617 vasp bufcpowi1 bufcpowi2; -#P message 228 392 27 196617 stop; -#P message 160 392 65 196617 startwindow; -#P newex 269 419 29 196617 dac~; -#P newex 269 367 30 196617 line~; -#P message 269 344 72 196617 0 \, 8000 8000; -#P newex 269 392 82 196617 play~ bufcpowi1; -#P hidden message 269 198 71 196617 set bufcpowi2; -#P user waveform~ 269 216 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 466 392 118 196617 buffer~ bufcpowi2 8000; -#P newex 44 370 45 196617 vasp.opt; -#P message 44 325 125 196617 vasp bufcpowi1 bufcpowi2; -#P newex 44 346 52 196617 vasp.c!fft; -#P comment 38 77 93 196617 complex sample^n; -#P newex 44 273 65 196617 vasp.cpowi 2; -#N vpatcher 40 55 418 371; -#P button 183 82 15 0; -#P newex 129 145 60 196617 prepend set; -#N comlet waveform~ mode messages; -#P inlet 129 121 15 0; -#P newex 259 64 27 196617 << 1; -#P newex 206 121 40 196617 change; -#P newex 206 145 107 196617 select 0 1 2; -#P newex 206 98 27 196617 |; -#P newex 47 121 40 196617 change; -#P outlet 129 252 15 0; -#P message 47 145 65 196617 constrain \$1; -#P newex 129 195 45 196617 loadbang; -#P newex 47 40 222 196617 pushkeys; -#P message 270 169 58 196617 mode move; -#P message 206 213 61 196617 mode select; -#P message 238 191 52 196617 mode loop; -#P connect 3 0 7 0; -#P connect 7 0 5 0; -#P connect 12 0 13 0; -#P fasten 5 0 6 0 52 243 134 243; -#P fasten 0 0 6 0 243 243 134 243; -#P fasten 1 0 6 0 211 243 134 243; -#P fasten 2 0 6 0 275 243 134 243; -#P connect 11 0 14 0; -#P connect 3 3 8 0; -#P connect 14 0 8 0; -#P connect 8 0 10 0; -#P connect 10 0 9 0; -#P connect 4 0 1 0; -#P connect 9 0 1 0; -#P connect 13 0 1 0; -#P connect 11 0 8 1; -#P connect 9 1 0 0; -#P connect 3 4 11 0; -#P connect 9 2 2 0; -#P pop; -#P hidden newobj 269 31 49 196617 p wfkeys; -#P hidden message 269 76 71 196617 set bufcpowi1; -#P hidden newex 269 50 45 196617 loadbang; -#P user waveform~ 269 97 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 44 223 61 196617 vasp.update; -#P newex 44 295 61 196617 vasp.update; -#P message 44 177 125 196617 vasp bufcpowi1 bufcpowi2; -#P newex 466 371 118 196617 buffer~ bufcpowi1 8000; -#P newex 44 199 49 196617 vasp.cfft; -#P comment 38 34 89 196622 vasp.cpowi; -#P comment 38 95 100 196617 needs two vectors; -#P comment 38 137 33 196617 read; -#P connect 5 0 3 0; -#P connect 3 0 7 0; -#P connect 26 0 12 0; -#P connect 12 0 6 0; -#P connect 15 0 14 0; -#P connect 14 0 16 0; -#P connect 16 0 27 0; -#P hidden connect 33 1 32 0; -#P hidden connect 9 0 10 0; -#P hidden fasten 4 1 10 0 579 390 597 390 597 72 274 72; -#P hidden connect 11 0 8 0; -#P hidden connect 10 0 8 0; -#P hidden connect 9 0 19 0; -#P hidden connect 19 0 18 0; -#P connect 21 0 22 0; -#P connect 22 0 20 0; -#P fasten 25 0 23 0 233 412 274 412; -#P fasten 24 0 23 0 165 412 274 412; -#P connect 20 0 23 0; -#P connect 20 0 23 1; -#P connect 31 0 30 0; -#P hidden connect 34 0 4 0; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.crsub.help b/externals/grill/vasp/max-help/vasp.crsub.help deleted file mode 100755 index a0fbf9ba..00000000 --- a/externals/grill/vasp/max-help/vasp.crsub.help +++ /dev/null @@ -1,12 +0,0 @@ -max v2; -#N vpatcher 258 153 663 391; -#P newex 238 90 45 196617 vasp.c!-; -#P comment 49 188 300 196617 differences in lengths are adjusted to smaller vector of each pair; -#P comment 49 142 118 196617 c \, d ... right operand; -#P comment 49 127 118 196617 a \, b ... left operand; -#P comment 49 83 98 196617 e+if=(c+id)-(a+ib); -#P comment 49 112 102 196617 e \, f ... target buffers; -#P comment 49 44 89 196622 vasp.c!-; -#P comment 49 172 302 196617 vasp.c- needs 2 vectors per operand which are treated as pairs; -#P comment 49 67 147 196617 complex inverse substraction; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.cset.help b/externals/grill/vasp/max-help/vasp.cset.help deleted file mode 100755 index d898e914..00000000 --- a/externals/grill/vasp/max-help/vasp.cset.help +++ /dev/null @@ -1,11 +0,0 @@ -max v2; -#N vpatcher 228 183 631 425; -#P newex 234 82 43 196617 vasp.c/; -#P comment 48 169 300 196617 differences in lengths are adjusted to smaller vector of each pair; -#P comment 48 124 118 196617 c \, d is the target; -#P comment 48 109 118 196617 a \, b is the source; -#P comment 48 84 98 196617 (a+ib)=(c+id); -#P comment 48 45 89 196622 vasp.c=; -#P comment 48 153 302 196617 vasp.c= needs 2 vectors per operand which are treated as pairs; -#P comment 48 68 59 196617 complex =; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.csqr.help b/externals/grill/vasp/max-help/vasp.csqr.help deleted file mode 100755 index 6724d738..00000000 --- a/externals/grill/vasp/max-help/vasp.csqr.help +++ /dev/null @@ -1,164 +0,0 @@ -max v2; -#N vpatcher 188 93 824 584; -#P user umenu 80 109 72 196647 1 64 125 1; -#X add bass.aif; -#X add beat.aif; -#X add fly.aif; -#X add plastic.aif; -#X add your_own...; -#N vpatcher 93 462 631 722; -#P message 59 102 28 196617 read; -#P newex 59 69 89 196617 route your_own...; -#N comlet popup comment in; -#P inlet 59 26 15 0; -#P newex 59 149 48 196617 s 1143path; -#P newex 138 102 79 196617 sprintf read %s; -#P user umenu 48 169 100 196647 1 64 185 1; -#X add drums.aif; -#X add voice.aif; -#X add test.aif; -#X add read a soundfile; -#P connect 3 0 4 0; -#P connect 4 0 5 0; -#P fasten 1 0 2 0 143 134 64 134; -#P connect 5 0 2 0; -#P connect 4 1 1 0; -#P pop; -#P hidden newobj 142 131 43 196617 p loader; -#P message 365 388 115 196617 vasp bufcsqr1 bufcsqr2; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 365 409 78 196617 p clear_buffers; -#P hidden newex 481 367 48 196617 r 1143path; -#P comment 53 110 26 196617 read; -#P newex 64 362 61 196617 vasp.update; -#P message 64 223 115 196617 vasp bufcsqr1 bufcsqr2; -#P message 243 410 27 196617 stop; -#P message 175 410 65 196617 startwindow; -#P newex 284 436 29 196617 dac~; -#P newex 284 384 30 196617 line~; -#P message 284 361 72 196617 0 \, 8000 8000; -#P newex 284 409 75 196617 play~ bufcsqr1; -#P hidden message 284 215 65 196617 set bufcsqr2; -#P user waveform~ 284 233 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 481 409 112 196617 buffer~ bufcsqr2 8000; -#P newex 64 340 45 196617 vasp.opt; -#P message 64 295 115 196617 vasp bufcsqr1 bufcsqr2; -#P newex 64 316 52 196617 vasp.c!fft; -#P comment 53 60 93 196617 complex sample^2; -#P newex 64 243 52 196617 vasp.csqr; -#N vpatcher 40 55 418 371; -#P button 183 82 15 0; -#P newex 129 145 60 196617 prepend set; -#N comlet waveform~ mode messages; -#P inlet 129 121 15 0; -#P newex 259 64 27 196617 << 1; -#P newex 206 121 40 196617 change; -#P newex 206 145 107 196617 select 0 1 2; -#P newex 206 98 27 196617 |; -#P newex 47 121 40 196617 change; -#P outlet 129 252 15 0; -#P message 47 145 65 196617 constrain \$1; -#P newex 129 195 45 196617 loadbang; -#P newex 47 40 222 196617 pushkeys; -#P message 270 169 58 196617 mode move; -#P message 206 213 61 196617 mode select; -#P message 238 191 52 196617 mode loop; -#P connect 3 0 7 0; -#P connect 7 0 5 0; -#P connect 12 0 13 0; -#P fasten 2 0 6 0 275 243 134 243; -#P fasten 1 0 6 0 211 243 134 243; -#P fasten 0 0 6 0 243 243 134 243; -#P fasten 5 0 6 0 52 243 134 243; -#P connect 11 0 14 0; -#P connect 14 0 8 0; -#P connect 3 3 8 0; -#P connect 8 0 10 0; -#P connect 10 0 9 0; -#P connect 13 0 1 0; -#P connect 9 0 1 0; -#P connect 4 0 1 0; -#P connect 11 0 8 1; -#P connect 9 1 0 0; -#P connect 3 4 11 0; -#P connect 9 2 2 0; -#P pop; -#P hidden newobj 284 48 49 196617 p wfkeys; -#P hidden message 284 93 65 196617 set bufcsqr1; -#P hidden newex 284 67 45 196617 loadbang; -#P user waveform~ 284 114 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 64 193 61 196617 vasp.update; -#P newex 64 265 61 196617 vasp.update; -#P message 64 147 115 196617 vasp bufcsqr1 bufcsqr2; -#P newex 481 388 112 196617 buffer~ bufcsqr1 8000; -#P newex 64 169 49 196617 vasp.cfft; -#P comment 53 36 89 196622 vasp.csqr; -#P comment 53 75 100 196617 needs two vectors; -#P connect 4 0 2 0; -#P connect 2 0 6 0; -#P connect 25 0 11 0; -#P connect 11 0 5 0; -#P connect 14 0 13 0; -#P connect 13 0 15 0; -#P connect 15 0 26 0; -#P hidden connect 32 1 31 0; -#P hidden connect 8 0 9 0; -#P hidden fasten 3 1 9 0 588 407 612 407 612 89 289 89; -#P hidden connect 9 0 7 0; -#P hidden connect 10 0 7 0; -#P hidden connect 8 0 18 0; -#P hidden connect 18 0 17 0; -#P connect 20 0 21 0; -#P connect 21 0 19 0; -#P fasten 23 0 22 0 180 429 289 429; -#P fasten 24 0 22 0 248 429 289 429; -#P connect 19 0 22 0; -#P connect 19 0 22 1; -#P connect 30 0 29 0; -#P hidden connect 28 0 3 0; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.csub.help b/externals/grill/vasp/max-help/vasp.csub.help deleted file mode 100755 index 2ee0998f..00000000 --- a/externals/grill/vasp/max-help/vasp.csub.help +++ /dev/null @@ -1,12 +0,0 @@ -max v2; -#N vpatcher 258 153 659 407; -#P comment 52 147 118 196617 c \, d ... right operand; -#P comment 52 132 118 196617 a \, b ... left operand; -#P comment 52 117 102 196617 e \, f ... target buffers; -#P newex 241 94 42 196617 vasp.c-; -#P comment 52 192 300 196617 differences in lengths are adjusted to smaller vector of each pair; -#P comment 52 87 98 196617 e+if=(a+ib)-(c+id); -#P comment 52 48 89 196622 vasp.c-; -#P comment 52 176 302 196617 vasp.c- needs 2 vectors per operand which are treated as pairs; -#P comment 52 71 100 196617 complex subtraction; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.dif.help b/externals/grill/vasp/max-help/vasp.dif.help deleted file mode 100755 index c6b68ea1..00000000 --- a/externals/grill/vasp/max-help/vasp.dif.help +++ /dev/null @@ -1,7 +0,0 @@ -max v2; -#N vpatcher 256 153 557 315; -#P comment 44 79 225 196617 argument/right inlet: repetition count(default 1); -#P comment 44 38 89 196622 vasp.dif; -#P newex 116 103 44 196617 vasp.dif; -#P comment 44 62 124 196617 vasp differential function; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.div.help b/externals/grill/vasp/max-help/vasp.div.help deleted file mode 100755 index 60ec8c13..00000000 --- a/externals/grill/vasp/max-help/vasp.div.help +++ /dev/null @@ -1,52 +0,0 @@ -max v2; -#N vpatcher 147 233 787 552; -#P message 426 243 52 196617 vasp buf/; -#N vpatcher 40 55 241 186; -#P newex 19 84 61 196617 vasp.update; -#P newex 19 60 50 196617 vasp.= 0.; -#N comlet vasp to clear in; -#P inlet 19 31 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 426 263 73 196617 p clear_buffer; -#P comment 110 135 147 196617 generate a sine wave at 1Hz; -#P newex 52 263 61 196617 vasp.update; -#P message 52 134 52 196617 vasp buf/; -#P newex 52 169 80 196617 vasp.osc 44100; -#P comment 45 74 189 196617 optional argument/right inlet: divisor; -#P flonum 87 202 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P comment 45 59 168 196617 vasp division; -#P comment 45 36 89 196622 vasp./; -#P newex 501 263 92 196617 buffer~ buf/ 2000; -#P hidden message 284 106 45 196617 set buf/; -#P hidden newex 284 80 45 196617 loadbang; -#P user waveform~ 284 130 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 52 223 45 196617 vasp./ 2; -#P connect 10 0 9 0; -#P connect 9 0 0 0; -#P connect 0 0 11 0; -#P connect 7 0 0 1; -#P hidden connect 2 0 3 0; -#P hidden connect 3 0 1 0; -#P connect 14 0 13 0; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.equ.help b/externals/grill/vasp/max-help/vasp.equ.help deleted file mode 100755 index 0c2a0178..00000000 --- a/externals/grill/vasp/max-help/vasp.equ.help +++ /dev/null @@ -1,145 +0,0 @@ -max v2; -#N vpatcher 82 103 798 578; -#P message 482 408 99 196617 vasp buf==1 buf==2; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 482 428 73 196617 p clear_buffer; -#P newex 71 393 61 196617 vasp.== -1.; -#P comment 332 310 43 196617 false/0; -#P message 71 123 64 196617 vasp buf==1; -#P newex 155 247 55 196617 vasp.= -1.; -#P newex 92 247 55 196617 vasp.= 0.3; -#P newex 218 214 55 196617 vasp.upper; -#P newex 155 214 58 196617 vasp.lower; -#P newex 218 247 59 196617 vasp.!bevel; -#P newex 92 214 55 196617 vasp.upper; -#P newex 31 214 58 196617 vasp.lower; -#P newex 121 302 61 196617 vasp.update; -#P newex 31 247 55 196617 vasp.bevel; -#P newex 182 187 55 196617 vasp.upper; -#P newex 71 187 58 196617 vasp.lower; -#P newex 71 154 121 196617 vasp.m 2; -#P newex 71 368 73 196617 vasp.= buf==1; -#P message 71 338 64 196617 vasp buf==2; -#N vpatcher 40 55 418 371; -#P button 183 82 15 0; -#P newex 129 145 60 196617 prepend set; -#N comlet waveform~ mode messages; -#P inlet 129 121 15 0; -#P newex 259 64 27 196617 << 1; -#P newex 206 121 40 196617 change; -#P newex 206 145 107 196617 select 0 1 2; -#P newex 206 98 27 196617 |; -#P newex 47 121 40 196617 change; -#P outlet 129 252 15 0; -#P message 47 145 65 196617 constrain \$1; -#P newex 129 195 45 196617 loadbang; -#P newex 47 40 222 196617 pushkeys; -#P message 270 169 58 196617 mode move; -#P message 206 213 61 196617 mode select; -#P message 238 191 52 196617 mode loop; -#P connect 3 0 7 0; -#P connect 7 0 5 0; -#P connect 12 0 13 0; -#P fasten 5 0 6 0 52 243 134 243; -#P fasten 0 0 6 0 243 243 134 243; -#P fasten 1 0 6 0 211 243 134 243; -#P fasten 2 0 6 0 275 243 134 243; -#P connect 11 0 14 0; -#P connect 3 3 8 0; -#P connect 14 0 8 0; -#P connect 8 0 10 0; -#P connect 10 0 9 0; -#P connect 4 0 1 0; -#P connect 9 0 1 0; -#P connect 13 0 1 0; -#P connect 11 0 8 1; -#P connect 9 1 0 0; -#P connect 3 4 11 0; -#P connect 9 2 2 0; -#P pop; -#P hidden newobj 375 80 49 196617 p wfkeys; -#P hidden message 375 241 55 196617 set buf==2; -#P user waveform~ 375 262 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 583 428 104 196617 buffer~ buf==2 2000; -#P hidden message 375 119 55 196617 set buf==1; -#P hidden newex 375 100 45 196617 loadbang; -#P user waveform~ 375 137 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 71 428 61 196617 vasp.update; -#P newex 583 408 104 196617 buffer~ buf==1 2000; -#P comment 45 80 147 196617 argument/right inlet: value; -#P comment 45 65 45 196617 equal; -#P comment 45 41 71 196622 vasp.==; -#P comment 176 125 92 196617 generate a function; -#P comment 334 267 40 196617 true/1; -#P comment 148 396 216 196617 test if a part of the function is equal to -1.; -#P fasten 18 0 22 0 76 209 36 209; -#P connect 22 0 20 0; -#P connect 29 0 17 0; -#P connect 17 0 18 0; -#P connect 15 0 16 0; -#P connect 16 0 31 0; -#P connect 31 0 7 0; -#P fasten 18 0 23 0 76 209 97 209; -#P connect 23 0 27 0; -#P fasten 24 0 21 0 223 283 126 283; -#P fasten 20 0 21 0 36 283 126 283; -#P fasten 27 0 21 0 97 283 126 283; -#P fasten 28 0 21 0 160 283 126 283; -#P fasten 19 0 25 0 187 209 160 209; -#P connect 25 0 28 0; -#P connect 17 1 19 0; -#P fasten 19 0 26 0 187 209 223 209; -#P connect 26 0 24 0; -#P hidden connect 9 0 10 0; -#P hidden connect 14 0 8 0; -#P hidden connect 10 0 8 0; -#P hidden fasten 9 0 13 0 380 100 380 100; -#P hidden connect 13 0 12 0; -#P hidden connect 14 0 12 0; -#P connect 33 0 32 0; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.exp.help b/externals/grill/vasp/max-help/vasp.exp.help deleted file mode 100755 index fa00c09d..00000000 --- a/externals/grill/vasp/max-help/vasp.exp.help +++ /dev/null @@ -1,96 +0,0 @@ -max v2; -#N vpatcher 248 135 854 471; -#P message 400 259 62 196617 vasp bufexp; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 400 282 73 196617 p clear_buffer; -#P newex 41 282 61 196617 vasp.update; -#P newex 41 164 55 196617 vasp.* 0.5; -#P newex 41 185 61 196617 vasp.update; -#P comment 38 58 85 196617 e^sample; -#P message 41 210 62 196617 vasp bufexp; -#P newex 41 233 48 196617 vasp.exp; -#N vpatcher 40 55 418 371; -#P button 183 82 15 0; -#P newex 129 145 60 196617 prepend set; -#N comlet waveform~ mode messages; -#P inlet 129 121 15 0; -#P newex 259 64 27 196617 << 1; -#P newex 206 121 40 196617 change; -#P newex 206 145 107 196617 select 0 1 2; -#P newex 206 98 27 196617 |; -#P newex 47 121 40 196617 change; -#P outlet 129 252 15 0; -#P message 47 145 65 196617 constrain \$1; -#P newex 129 195 45 196617 loadbang; -#P newex 47 40 222 196617 pushkeys; -#P message 270 169 58 196617 mode move; -#P message 206 213 61 196617 mode select; -#P message 238 191 52 196617 mode loop; -#P connect 3 0 7 0; -#P connect 7 0 5 0; -#P connect 12 0 13 0; -#P fasten 2 0 6 0 275 243 134 243; -#P fasten 1 0 6 0 211 243 134 243; -#P fasten 0 0 6 0 243 243 134 243; -#P fasten 5 0 6 0 52 243 134 243; -#P connect 11 0 14 0; -#P connect 14 0 8 0; -#P connect 3 3 8 0; -#P connect 8 0 10 0; -#P connect 10 0 9 0; -#P connect 13 0 1 0; -#P connect 9 0 1 0; -#P connect 4 0 1 0; -#P connect 11 0 8 1; -#P connect 9 1 0 0; -#P connect 3 4 11 0; -#P connect 9 2 2 0; -#P pop; -#P hidden newobj 268 54 49 196617 p wfkeys; -#P hidden message 268 100 55 196617 set bufexp; -#P hidden newex 268 76 45 196617 loadbang; -#P user waveform~ 268 126 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 41 259 45 196617 vasp.opt; -#P message 41 116 62 196617 vasp bufexp; -#P newex 477 282 102 196617 buffer~ bufexp 2000; -#P newex 41 143 80 196617 vasp.osc 22050; -#P comment 38 34 89 196622 vasp.exp; -#P comment 106 117 123 196617 generate a 1hz sine wave; -#P comment 38 73 100 196617 exponential function; -#P connect 5 0 3 0; -#P connect 3 0 15 0; -#P connect 15 0 14 0; -#P connect 12 0 11 0; -#P connect 11 0 6 0; -#P connect 6 0 16 0; -#P hidden connect 8 0 9 0; -#P hidden connect 9 0 7 0; -#P hidden connect 10 0 7 0; -#P connect 18 0 17 0; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.fhp.help b/externals/grill/vasp/max-help/vasp.fhp.help deleted file mode 100755 index 2f76a6cc..00000000 --- a/externals/grill/vasp/max-help/vasp.fhp.help +++ /dev/null @@ -1,138 +0,0 @@ -max v2; -#N vpatcher 228 129 899 595; -#P message 466 372 55 196617 vasp bufhp; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 466 392 73 196617 p clear_buffer; -#P comment 196 241 44 196617 q-faktor; -#N vpatcher 169 125 534 375; -#P flonum 70 179 61 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P newex 70 125 27 196617 t b f; -#P message 309 151 27 196617 stop; -#P message 243 151 65 196617 startwindow; -#P newex 243 173 29 196617 dac~; -#P comment 141 175 83 196617 period length in samples (float); -#P flonum 88 97 43 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P newex 70 147 27 196617 / 1.; -#P flonum 68 73 54 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P newex 54 49 53 196617 dspstate~; -#P comment 133 98 100 196617 frequency in Hz; -#P connect 1 1 2 0; -#P fasten 4 0 9 0 93 118 75 118; -#P fasten 2 0 3 0 73 115 54 115 54 145 75 145; -#P connect 9 0 3 0; -#P connect 3 0 10 0; -#P connect 9 1 3 1; -#P fasten 8 0 6 0 314 169 248 169; -#P connect 7 0 6 0; -#P pop; -#P newobj 45 391 109 196617 p Hz_to_period_length; -#P number 195 255 35 9 1 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P flonum 137 255 45 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P newex 137 276 68 196617 pack 0 0; -#P comment 38 88 266 196617 second argument: q-factor from 1 - ° (integer) default 1; -#P newex 45 322 61 196617 vasp.update; -#P message 45 255 55 196617 vasp bufhp; -#P newex 45 301 65 196617 vasp.fhp 220; -#N vpatcher 40 55 418 371; -#P button 183 82 15 0; -#P newex 129 145 60 196617 prepend set; -#N comlet waveform~ mode messages; -#P inlet 129 121 15 0; -#P newex 259 64 27 196617 << 1; -#P newex 206 121 40 196617 change; -#P newex 206 145 107 196617 select 0 1 2; -#P newex 206 98 27 196617 |; -#P newex 47 121 40 196617 change; -#P outlet 129 252 15 0; -#P message 47 145 65 196617 constrain \$1; -#P newex 129 195 45 196617 loadbang; -#P newex 47 40 222 196617 pushkeys; -#P message 270 169 58 196617 mode move; -#P message 206 213 61 196617 mode select; -#P message 238 191 52 196617 mode loop; -#P connect 3 0 7 0; -#P connect 7 0 5 0; -#P connect 12 0 13 0; -#P fasten 5 0 6 0 52 243 134 243; -#P fasten 0 0 6 0 243 243 134 243; -#P fasten 1 0 6 0 211 243 134 243; -#P fasten 2 0 6 0 275 243 134 243; -#P connect 11 0 14 0; -#P connect 3 3 8 0; -#P connect 14 0 8 0; -#P connect 8 0 10 0; -#P connect 10 0 9 0; -#P connect 4 0 1 0; -#P connect 9 0 1 0; -#P connect 13 0 1 0; -#P connect 11 0 8 1; -#P connect 9 1 0 0; -#P connect 3 4 11 0; -#P connect 9 2 2 0; -#P pop; -#P hidden newobj 328 100 49 196617 p wfkeys; -#P message 287 392 27 196617 stop; -#P message 219 392 65 196617 startwindow; -#P newex 328 418 29 196617 dac~; -#P newex 328 366 30 196617 line~; -#P message 328 343 72 196617 0 \, 2000 2000; -#P newex 328 391 60 196617 play~ bufhp; -#P hidden message 328 142 49 196617 set bufhp; -#P hidden newex 328 122 45 196617 loadbang; -#P user waveform~ 328 162 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 45 194 55 196617 vasp.* 0.5; -#P newex 45 216 61 196617 vasp.update; -#P message 45 151 55 196617 vasp bufhp; -#P newex 544 391 95 196617 buffer~ bufhp 2000; -#P newex 45 172 55 196617 vasp.noise; -#P comment 38 58 136 196617 vasp high pass filter (FIR); -#P comment 38 34 89 196622 vasp.fhp; -#P comment 109 152 99 196617 generate white noise; -#P comment 38 73 224 196617 first argument: cutoff frequency in period length; -#P comment 137 241 36 196617 cutoff; -#P comment 38 103 185 196617 right inlet: cutoff and q-factor (list); -#P connect 8 0 6 0; -#P connect 6 0 10 0; -#P connect 10 0 9 0; -#P connect 22 0 21 0; -#P connect 21 0 23 0; -#P fasten 25 0 21 1 142 297 105 297; -#P connect 26 0 25 0; -#P connect 27 0 25 1; -#P hidden connect 12 0 13 0; -#P hidden connect 20 0 11 0; -#P hidden connect 13 0 11 0; -#P connect 15 0 16 0; -#P connect 16 0 14 0; -#P connect 14 0 17 0; -#P fasten 19 0 17 0 292 410 333 410; -#P fasten 18 0 17 0 224 410 333 410; -#P connect 14 0 17 1; -#P connect 31 0 30 0; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.flp.help b/externals/grill/vasp/max-help/vasp.flp.help deleted file mode 100755 index 89a88590..00000000 --- a/externals/grill/vasp/max-help/vasp.flp.help +++ /dev/null @@ -1,138 +0,0 @@ -max v2; -#N vpatcher 176 195 828 655; -#P message 458 375 54 196617 vasp buflp; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 458 394 73 196617 p clear_buffer; -#P comment 214 247 44 196617 q-faktor; -#N vpatcher 169 125 534 375; -#P flonum 70 179 61 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P newex 70 125 27 196617 t b f; -#P message 309 151 27 196617 stop; -#P message 243 151 65 196617 startwindow; -#P newex 243 173 29 196617 dac~; -#P comment 141 175 83 196617 period length in samples (float); -#P flonum 88 97 43 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P newex 70 147 27 196617 / 1.; -#P flonum 68 73 54 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P newex 54 49 53 196617 dspstate~; -#P comment 133 98 100 196617 frequency in Hz; -#P connect 1 1 2 0; -#P fasten 4 0 9 0 93 118 75 118; -#P fasten 2 0 3 0 73 115 54 115 54 145 75 145; -#P connect 9 0 3 0; -#P connect 3 0 10 0; -#P connect 9 1 3 1; -#P fasten 8 0 6 0 314 169 248 169; -#P connect 7 0 6 0; -#P pop; -#P newobj 51 394 109 196617 p Hz_to_period_length; -#P number 213 261 35 9 1 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P flonum 155 261 52 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P newex 155 280 68 196617 pack 0. 0; -#P comment 46 90 266 196617 second argument: q-factor from 1 - ° (integer) default 1; -#P newex 54 329 61 196617 vasp.update; -#P message 54 261 54 196617 vasp buflp; -#P newex 54 307 65 196617 vasp.flp 220; -#N vpatcher 40 55 418 371; -#P button 183 82 15 0; -#P newex 129 145 60 196617 prepend set; -#N comlet waveform~ mode messages; -#P inlet 129 121 15 0; -#P newex 259 64 27 196617 << 1; -#P newex 206 121 40 196617 change; -#P newex 206 145 107 196617 select 0 1 2; -#P newex 206 98 27 196617 |; -#P newex 47 121 40 196617 change; -#P outlet 129 252 15 0; -#P message 47 145 65 196617 constrain \$1; -#P newex 129 195 45 196617 loadbang; -#P newex 47 40 222 196617 pushkeys; -#P message 270 169 58 196617 mode move; -#P message 206 213 61 196617 mode select; -#P message 238 191 52 196617 mode loop; -#P connect 3 0 7 0; -#P connect 7 0 5 0; -#P connect 12 0 13 0; -#P fasten 5 0 6 0 52 243 134 243; -#P fasten 0 0 6 0 243 243 134 243; -#P fasten 1 0 6 0 211 243 134 243; -#P fasten 2 0 6 0 275 243 134 243; -#P connect 11 0 14 0; -#P connect 3 3 8 0; -#P connect 14 0 8 0; -#P connect 8 0 10 0; -#P connect 10 0 9 0; -#P connect 4 0 1 0; -#P connect 9 0 1 0; -#P connect 13 0 1 0; -#P connect 11 0 8 1; -#P connect 9 1 0 0; -#P connect 3 4 11 0; -#P connect 9 2 2 0; -#P pop; -#P hidden newobj 318 95 49 196617 p wfkeys; -#P message 277 396 27 196617 stop; -#P message 209 396 65 196617 startwindow; -#P newex 318 421 29 196617 dac~; -#P newex 318 369 30 196617 line~; -#P message 318 346 72 196617 0 \, 2000 2000; -#P newex 318 394 58 196617 play~ buflp; -#P hidden message 318 137 45 196617 set buflp; -#P hidden newex 318 117 45 196617 loadbang; -#P user waveform~ 318 157 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 54 197 55 196617 vasp.* 0.5; -#P newex 54 219 61 196617 vasp.update; -#P message 54 154 54 196617 vasp buflp; -#P newex 536 394 94 196617 buffer~ buflp 2000; -#P newex 54 175 55 196617 vasp.noise; -#P comment 46 60 136 196617 vasp low pass filter (FIR); -#P comment 46 36 89 196622 vasp.flp; -#P comment 114 155 99 196617 generate white noise; -#P comment 46 75 225 196617 first argument: cutoff frequency in period length; -#P comment 155 247 36 196617 cutoff; -#P comment 46 105 185 196617 right inlet: cutoff and q-factor (list); -#P connect 8 0 6 0; -#P connect 6 0 10 0; -#P connect 10 0 9 0; -#P connect 22 0 21 0; -#P connect 21 0 23 0; -#P fasten 25 0 21 1 160 303 114 303; -#P connect 26 0 25 0; -#P connect 27 0 25 1; -#P hidden connect 12 0 13 0; -#P hidden connect 20 0 11 0; -#P hidden connect 13 0 11 0; -#P connect 15 0 16 0; -#P connect 16 0 14 0; -#P connect 14 0 17 0; -#P fasten 19 0 17 0 282 416 323 416; -#P fasten 18 0 17 0 214 416 323 416; -#P connect 14 0 17 1; -#P connect 31 0 30 0; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.frames.help b/externals/grill/vasp/max-help/vasp.frames.help deleted file mode 100755 index c0820a2a..00000000 --- a/externals/grill/vasp/max-help/vasp.frames.help +++ /dev/null @@ -1,134 +0,0 @@ -max v2; -#N vpatcher 130 118 966 571; -#P message 575 384 119 196617 vasp buffram1 buffram2; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 575 404 78 196617 p clear_buffers; -#P hidden message 447 180 22 196617 set; -#P hidden message 500 229 65 196617 set buffram2; -#P newex 251 332 61 196617 vasp.update; -#P newex 251 310 80 196617 vasp.osc 22050; -#P user waveform~ 500 248 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#N vpatcher 40 55 418 371; -#P button 183 82 15 0; -#P newex 129 145 60 196617 prepend set; -#N comlet waveform~ mode messages; -#P inlet 129 121 15 0; -#P newex 259 64 27 196617 << 1; -#P newex 206 121 40 196617 change; -#P newex 206 145 107 196617 select 0 1 2; -#P newex 206 98 27 196617 |; -#P newex 47 121 40 196617 change; -#P outlet 129 252 15 0; -#P message 47 145 65 196617 constrain \$1; -#P newex 129 195 45 196617 loadbang; -#P newex 47 40 222 196617 pushkeys; -#P message 270 169 58 196617 mode move; -#P message 206 213 61 196617 mode select; -#P message 238 191 52 196617 mode loop; -#P connect 3 0 7 0; -#P connect 7 0 5 0; -#P connect 12 0 13 0; -#P fasten 2 0 6 0 275 243 134 243; -#P fasten 1 0 6 0 211 243 134 243; -#P fasten 0 0 6 0 243 243 134 243; -#P fasten 5 0 6 0 52 243 134 243; -#P connect 11 0 14 0; -#P connect 14 0 8 0; -#P connect 3 3 8 0; -#P connect 8 0 10 0; -#P connect 10 0 9 0; -#P connect 13 0 1 0; -#P connect 9 0 1 0; -#P connect 4 0 1 0; -#P connect 11 0 8 1; -#P connect 9 1 0 0; -#P connect 3 4 11 0; -#P connect 9 2 2 0; -#P pop; -#P hidden newobj 500 69 49 196617 p wfkeys; -#P hidden message 500 110 65 196617 set buffram1; -#P hidden newex 500 89 45 196617 loadbang; -#P user waveform~ 500 127 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 64 332 61 196617 vasp.update; -#P newex 64 310 80 196617 vasp.osc 22050; -#P number 336 197 47 9 0 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P newex 698 404 114 196617 buffer~ buffram2 2000; -#P newex 698 384 114 196617 buffer~ buffram1 2000; -#P message 262 275 222 196617; -#P newex 262 243 60 196617 prepend set; -#P message 251 170 152 196617 vasp buffram1 buffram2 11050; -#P newex 251 218 95 196617 vasp.frames 22050; -#P message 75 275 137 196617; -#P newex 75 243 60 196617 prepend set; -#P message 64 170 74 196617 vasp buffram1; -#P newex 64 218 95 196617 vasp.frames 30000; -#P comment 59 90 182 196617 argument/right inlet: value in samples; -#P comment 59 75 178 196617 set the number of frames to a vasp; -#P comment 59 50 116 196622 vasp.frames; -#P comment 59 105 265 196617 !!!all vectors of a vasp have the same framesize/length!!!; -#P connect 5 0 4 0; -#P connect 4 0 15 0; -#P connect 15 0 16 0; -#P fasten 4 0 6 0 69 239 80 239; -#P hidden fasten 25 0 7 0 452 263 80 263; -#P connect 6 0 7 0; -#P connect 9 0 8 0; -#P connect 8 0 22 0; -#P connect 22 0 23 0; -#P fasten 8 0 10 0 256 239 267 239; -#P hidden fasten 25 0 11 0 452 264 267 264; -#P connect 10 0 11 0; -#P connect 14 0 8 1; -#P hidden fasten 18 0 25 0 505 132 452 132; -#P hidden connect 18 0 19 0; -#P hidden connect 19 0 17 0; -#P hidden connect 20 0 17 0; -#P hidden connect 18 0 24 0; -#P hidden connect 24 0 21 0; -#P connect 27 0 26 0; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.framesd.help b/externals/grill/vasp/max-help/vasp.framesd.help deleted file mode 100755 index ac6bf358..00000000 --- a/externals/grill/vasp/max-help/vasp.framesd.help +++ /dev/null @@ -1,134 +0,0 @@ -max v2; -#N vpatcher 82 104 939 544; -#P message 593 369 113 196617 vasp buffram buffram+; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 593 389 78 196617 p clear_buffers; -#P hidden message 449 191 22 196617 set; -#P hidden message 514 223 65 196617 set buffram+; -#P newex 253 325 61 196617 vasp.update; -#P newex 253 304 80 196617 vasp.osc 22050; -#P user waveform~ 514 241 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#N vpatcher 40 55 418 371; -#P button 183 82 15 0; -#P newex 129 145 60 196617 prepend set; -#N comlet waveform~ mode messages; -#P inlet 129 121 15 0; -#P newex 259 64 27 196617 << 1; -#P newex 206 121 40 196617 change; -#P newex 206 145 107 196617 select 0 1 2; -#P newex 206 98 27 196617 |; -#P newex 47 121 40 196617 change; -#P outlet 129 252 15 0; -#P message 47 145 65 196617 constrain \$1; -#P newex 129 195 45 196617 loadbang; -#P newex 47 40 222 196617 pushkeys; -#P message 270 169 58 196617 mode move; -#P message 206 213 61 196617 mode select; -#P message 238 191 52 196617 mode loop; -#P connect 3 0 7 0; -#P connect 7 0 5 0; -#P connect 12 0 13 0; -#P fasten 5 0 6 0 52 243 134 243; -#P fasten 0 0 6 0 243 243 134 243; -#P fasten 1 0 6 0 211 243 134 243; -#P fasten 2 0 6 0 275 243 134 243; -#P connect 11 0 14 0; -#P connect 3 3 8 0; -#P connect 14 0 8 0; -#P connect 8 0 10 0; -#P connect 10 0 9 0; -#P connect 4 0 1 0; -#P connect 9 0 1 0; -#P connect 13 0 1 0; -#P connect 11 0 8 1; -#P connect 9 1 0 0; -#P connect 3 4 11 0; -#P connect 9 2 2 0; -#P pop; -#P hidden newobj 514 60 49 196617 p wfkeys; -#P hidden message 514 104 61 196617 set buffram; -#P hidden newex 514 82 45 196617 loadbang; -#P user waveform~ 514 122 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 66 325 61 196617 vasp.update; -#P newex 66 304 80 196617 vasp.osc 22050; -#P number 346 191 47 9 0 0 1 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P newex 711 389 114 196617 buffer~ buffram+ 2000; -#P newex 711 369 114 196617 buffer~ buffram 2000; -#P message 264 269 222 196617; -#P newex 264 237 60 196617 prepend set; -#P message 253 164 179 196617 vasp 20000 buffram buffram+ 44100; -#P newex 253 212 103 196617 vasp.frames+ 22050; -#P message 77 269 137 196617; -#P newex 77 237 60 196617 prepend set; -#P message 66 164 101 196617 vasp 20000 buffram; -#P newex 66 212 103 196617 vasp.frames+ 30000; -#P comment 59 89 182 196617 argument/right inlet: value in samples; -#P comment 59 75 255 196617 change the number of frames of a vasp (incrementally); -#P comment 59 50 111 196622 vasp.frames+; -#P comment 59 104 265 196617 !!!all vectors of a vasp have the same framesize/length!!!; -#P connect 5 0 4 0; -#P connect 4 0 15 0; -#P connect 15 0 16 0; -#P fasten 4 0 6 0 71 233 82 233; -#P hidden fasten 25 0 7 0 454 260 82 260; -#P connect 6 0 7 0; -#P connect 9 0 8 0; -#P connect 8 0 22 0; -#P connect 22 0 23 0; -#P fasten 8 0 10 0 258 233 269 233; -#P hidden fasten 25 0 11 0 454 259 269 259; -#P connect 10 0 11 0; -#P connect 14 0 8 1; -#P hidden fasten 18 0 25 0 519 120 454 120; -#P hidden connect 18 0 19 0; -#P hidden connect 20 0 17 0; -#P hidden connect 19 0 17 0; -#P hidden connect 18 0 24 0; -#P hidden connect 24 0 21 0; -#P connect 27 0 26 0; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.framesq.help b/externals/grill/vasp/max-help/vasp.framesq.help deleted file mode 100755 index a546e86d..00000000 --- a/externals/grill/vasp/max-help/vasp.framesq.help +++ /dev/null @@ -1,25 +0,0 @@ -max v2; -#N vpatcher 203 190 781 540; -#P comment 45 129 101 196617 get the vasps length; -#P comment 334 129 206 196617 get the maximum vasp length of both buffers; -#P message 334 154 125 196617 vasp buffram? buffram?1; -#P number 334 210 42 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P newex 334 180 70 196617 vasp.frames?; -#P newex 418 296 120 196617 buffer~ buffram?1 1000; -#P number 192 210 42 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P number 45 210 42 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P newex 418 273 120 196617 buffer~ buffram? 2000; -#P message 192 154 74 196617 vasp buffram?; -#P newex 192 180 70 196617 vasp.frames?; -#P message 45 154 115 196617 vasp 400 buffram? 300; -#P newex 45 180 70 196617 vasp.frames?; -#P comment 42 75 216 196617 get a vasp«s frame count (length) in samples; -#P comment 42 51 130 196622 vasp.frames?; -#P comment 192 129 101 196617 get the buffer length; -#P connect 4 0 3 0; -#P connect 3 0 8 0; -#P connect 6 0 5 0; -#P connect 5 0 9 0; -#P connect 13 0 11 0; -#P connect 11 0 12 0; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.gate.help b/externals/grill/vasp/max-help/vasp.gate.help deleted file mode 100755 index 0ab025a2..00000000 --- a/externals/grill/vasp/max-help/vasp.gate.help +++ /dev/null @@ -1,166 +0,0 @@ -max v2; -#N vpatcher 181 114 885 642; -#P message 429 422 113 196617 vasp bufgate1 bufgate2; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 429 442 78 196617 p clear_buffers; -#P hidden newex 549 391 48 196617 r 1159path; -#P user umenu 80 139 72 196647 1 64 155 1; -#X add bass.aif; -#X add beat.aif; -#X add fly.aif; -#X add plastic.aif; -#X add your_own...; -#N vpatcher 93 462 631 722; -#P message 59 102 28 196617 read; -#P newex 59 69 89 196617 route your_own...; -#N comlet popup comment in; -#P inlet 59 26 15 0; -#P newex 59 149 48 196617 s 1159path; -#P newex 138 102 79 196617 sprintf read %s; -#P user umenu 48 169 100 196647 1 64 185 1; -#X add drums.aif; -#X add voice.aif; -#X add test.aif; -#X add read a soundfile; -#P connect 3 0 4 0; -#P connect 4 0 5 0; -#P connect 5 0 2 0; -#P fasten 1 0 2 0 143 134 64 134; -#P connect 4 1 1 0; -#P pop; -#P hidden newobj 142 161 43 196617 p loader; -#P comment 52 141 26 196617 read; -#P comment 163 349 32 196617 value; -#P comment 139 321 112 196617 gate the buffer content; -#P newex 66 225 61 196617 vasp.update; -#P newex 66 404 61 196617 vasp.update; -#P flonum 125 348 35 9 0. 1. 3 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P message 66 320 71 196617 vasp bufgate2; -#P newex 66 375 69 196617 vasp.gate 0.2; -#P message 308 443 27 196617 stop; -#P message 240 443 65 196617 startwindow; -#P newex 349 467 29 196617 dac~; -#P newex 349 422 30 196617 line~; -#P message 349 387 72 196617 0 \, 2000 2000; -#P newex 349 442 75 196617 play~ bufgate2; -#P message 66 181 71 196617 vasp bufgate2; -#P newex 66 202 104 196617 vasp.= vasp bufgate1; -#N vpatcher 40 55 418 371; -#P button 183 82 15 0; -#P newex 129 145 60 196617 prepend set; -#N comlet waveform~ mode messages; -#P inlet 129 121 15 0; -#P newex 259 64 27 196617 << 1; -#P newex 206 121 40 196617 change; -#P newex 206 145 107 196617 select 0 1 2; -#P newex 206 98 27 196617 |; -#P newex 47 121 40 196617 change; -#P outlet 129 252 15 0; -#P message 47 145 65 196617 constrain \$1; -#P newex 129 195 45 196617 loadbang; -#P newex 47 40 222 196617 pushkeys; -#P message 270 169 58 196617 mode move; -#P message 206 213 61 196617 mode select; -#P message 238 191 52 196617 mode loop; -#P connect 3 0 7 0; -#P connect 7 0 5 0; -#P connect 12 0 13 0; -#P fasten 5 0 6 0 52 243 134 243; -#P fasten 0 0 6 0 243 243 134 243; -#P fasten 1 0 6 0 211 243 134 243; -#P fasten 2 0 6 0 275 243 134 243; -#P connect 11 0 14 0; -#P connect 3 3 8 0; -#P connect 14 0 8 0; -#P connect 8 0 10 0; -#P connect 10 0 9 0; -#P connect 4 0 1 0; -#P connect 9 0 1 0; -#P connect 13 0 1 0; -#P connect 11 0 8 1; -#P connect 9 1 0 0; -#P connect 3 4 11 0; -#P connect 9 2 2 0; -#P pop; -#P hidden newobj 349 92 49 196617 p wfkeys; -#P hidden message 349 247 64 196617 set bufgate2; -#P user waveform~ 349 265 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 549 442 111 196617 buffer~ bufgate2 2000; -#P hidden message 349 127 64 196617 set bufgate1; -#P hidden newex 349 109 45 196617 loadbang; -#P user waveform~ 349 145 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 549 422 111 196617 buffer~ bufgate1 2000; -#P comment 52 87 369 196617 optional argument/right inlet: value (usualy from 0-1) to gate the soundfile; -#P comment 52 70 168 196617 gate a buffer content with a value; -#P comment 52 48 89 196622 vasp.gate; -#P comment 141 181 161 196617 copy from buffgate1 to buffgate2; -#P connect 13 0 12 0; -#P connect 12 0 24 0; -#P connect 21 0 20 0; -#P connect 20 0 23 0; -#P connect 22 0 20 1; -#P hidden connect 29 1 28 0; -#P hidden fasten 6 0 7 0 354 108 354 108; -#P hidden fasten 4 1 7 0 655 440 680 440 680 123 354 123; -#P hidden connect 11 0 5 0; -#P hidden connect 7 0 5 0; -#P hidden fasten 6 0 10 0 354 108 354 108; -#P hidden fasten 8 1 10 0 655 461 680 461 680 252 354 252; -#P hidden connect 10 0 9 0; -#P hidden connect 11 0 9 0; -#P connect 15 0 16 0; -#P connect 16 0 14 0; -#P connect 14 0 17 0; -#P fasten 18 0 17 0 245 461 354 461; -#P fasten 19 0 17 0 313 461 354 461; -#P connect 14 0 17 1; -#P connect 32 0 31 0; -#P hidden connect 30 0 4 0; -#P hidden fasten 9 5 5 4 654 368 665 368 665 139 654 139; -#P hidden connect 5 5 9 4; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.gather.help b/externals/grill/vasp/max-help/vasp.gather.help deleted file mode 100755 index e1942f69..00000000 --- a/externals/grill/vasp/max-help/vasp.gather.help +++ /dev/null @@ -1,65 +0,0 @@ -max v2; -#N vpatcher 167 74 879 653; -#P origin 0 5; -#P hidden message 615 229 22 196617 set; -#P hidden newex 615 195 45 196617 loadbang; -#P message 406 242 81 196617 vasp bufgather4; -#P message 393 221 81 196617 vasp bufgather3; -#P button 342 178 15 0; -#P message 381 201 81 196617 vasp bufgather2; -#P message 342 314 341 196617; -#P newex 342 291 60 196617 prepend set; -#P newex 342 267 61 196617 vasp.gather; -#P message 371 178 81 196617 vasp bufgather1; -#P comment 336 160 276 196617 gather as many vasps as you want and put them out (bang); -#P message 138 450 81 196617 vasp bufgather4; -#P newex 562 522 121 196617 buffer~ bufgather4 2000; -#P message 179 178 81 196617 vasp bufgather2; -#P button 65 178 15 0; -#P message 65 314 252 196617; -#P newex 65 291 60 196617 prepend set; -#P newex 65 267 61 196617 vasp.gather; -#P message 87 178 81 196617 vasp bufgather1; -#P message 125 429 81 196617 vasp bufgather3; -#P button 65 386 15 0; -#P message 113 409 81 196617 vasp bufgather2; -#P newex 562 501 121 196617 buffer~ bufgather3 2000; -#P newex 562 479 121 196617 buffer~ bufgather2 2000; -#P newex 562 458 121 196617 buffer~ bufgather1 1000; -#P message 65 522 258 196617; -#P newex 65 499 60 196617 prepend set; -#P newex 65 475 70 196617 vasp.gather 2; -#P comment 59 74 137 196617 gather several vasps into one; -#P message 103 386 81 196617 vasp bufgather1; -#P comment 59 50 89 196622 vasp.gather; -#P comment 59 90 190 196617 argument: vasps to gather before output; -#P comment 59 121 241 196617 right inlet: stores the different vasps; -#P comment 59 106 419 196617 left inlet: outputs a vasp immediately \, causes output of vasps gathered in right inlet (bang); -#P comment 59 160 196 196617 use vasp.gather like the int/float object; -#P comment 59 366 227 196617 gather two vasps (opt. argument) an put them out; -#P comment 360 377 243 196617 !vasps can have more vectors \, but just one length!; -#P comment 360 393 245 196617 gather will always take the length from the shortest of all gathered vasps for the new one!; -#P fasten 19 0 20 0 92 260 70 260; -#P fasten 23 0 20 0 70 217 70 217; -#P connect 20 0 21 0; -#P hidden fasten 37 0 22 0 620 310 70 310; -#P connect 21 0 22 0; -#P connect 17 0 10 0; -#P connect 10 0 11 0; -#P hidden fasten 37 0 12 0 620 336 314 336 314 519 70 519; -#P connect 11 0 12 0; -#P fasten 24 0 20 1 184 259 121 259; -#P connect 18 0 10 1; -#P fasten 16 0 10 1 118 469 130 469; -#P fasten 8 0 10 1 108 469 130 469; -#P fasten 26 0 10 1 143 469 130 469; -#P connect 33 0 29 0; -#P connect 29 0 30 0; -#P connect 30 0 31 0; -#P hidden fasten 37 0 31 0 620 311 347 311; -#P connect 34 0 29 1; -#P fasten 32 0 29 1 386 262 398 262; -#P fasten 28 0 29 1 376 262 398 262; -#P fasten 35 0 29 1 411 262 398 262; -#P hidden connect 36 0 37 0; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.geq.help b/externals/grill/vasp/max-help/vasp.geq.help deleted file mode 100755 index 0a8912b6..00000000 --- a/externals/grill/vasp/max-help/vasp.geq.help +++ /dev/null @@ -1,128 +0,0 @@ -max v2; -#N vpatcher 188 104 857 525; -#P message 437 352 91 196617 vasp buf>= buf>=1; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 437 373 78 196617 p clear_buffers; -#P newex 59 327 61 196617 vasp.update; -#P flonum 149 272 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P comment 274 286 48 196617 0/false; -#P comment 129 145 148 196617 generate a sine wave at 1Hz; -#P message 59 145 55 196617 vasp buf>=; -#P newex 59 191 61 196617 vasp.update; -#P newex 59 168 80 196617 vasp.osc 44100; -#P comment 129 228 100 196617 copy to new buffer; -#P hidden message 321 219 55 196617 set buf>=1; -#P user waveform~ 321 237 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 530 373 103 196617 buffer~ buf>=1 2000; -#P comment 52 86 188 196617 argument/right inlet: value; -#N vpatcher 40 55 418 371; -#P button 183 82 15 0; -#P newex 129 145 60 196617 prepend set; -#N comlet waveform~ mode messages; -#P inlet 129 121 15 0; -#P newex 259 64 27 196617 << 1; -#P newex 206 121 40 196617 change; -#P newex 206 145 107 196617 select 0 1 2; -#P newex 206 98 27 196617 |; -#P newex 47 121 40 196617 change; -#P outlet 129 252 15 0; -#P message 47 145 65 196617 constrain \$1; -#P newex 129 195 45 196617 loadbang; -#P newex 47 40 222 196617 pushkeys; -#P message 270 169 58 196617 mode move; -#P message 206 213 61 196617 mode select; -#P message 238 191 52 196617 mode loop; -#P connect 3 0 7 0; -#P connect 7 0 5 0; -#P connect 12 0 13 0; -#P fasten 5 0 6 0 52 243 134 243; -#P fasten 0 0 6 0 243 243 134 243; -#P fasten 1 0 6 0 211 243 134 243; -#P fasten 2 0 6 0 275 243 134 243; -#P connect 11 0 14 0; -#P connect 3 3 8 0; -#P connect 14 0 8 0; -#P connect 8 0 10 0; -#P connect 10 0 9 0; -#P connect 4 0 1 0; -#P connect 9 0 1 0; -#P connect 13 0 1 0; -#P connect 11 0 8 1; -#P connect 9 1 0 0; -#P connect 3 4 11 0; -#P connect 9 2 2 0; -#P pop; -#P hidden newobj 321 52 49 196617 p wfkeys; -#P hidden message 321 98 50 196617 set buf>=; -#P hidden newex 321 74 45 196617 loadbang; -#P user waveform~ 321 118 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 59 296 65 196617 vasp.>= -0.4; -#P message 59 228 63 196617 vasp buf>=1; -#P newex 530 352 103 196617 buffer~ buf>= 2000; -#P newex 59 249 65 196617 vasp.= buf>=; -#P comment 52 71 83 196617 sample >= value; -#P comment 52 48 89 196622 vasp.>=; -#P comment 598 103 44 196617 source; -#P comment 277 244 44 196617 1/true; -#P connect 19 0 17 0; -#P connect 17 0 18 0; -#P connect 6 0 4 0; -#P connect 4 0 7 0; -#P connect 7 0 23 0; -#P fasten 22 0 7 1 154 292 119 292; -#P hidden connect 9 0 10 0; -#P hidden fasten 5 1 10 0 628 371 638 371 638 94 326 94; -#P hidden connect 11 0 8 0; -#P hidden connect 10 0 8 0; -#P hidden connect 9 0 15 0; -#P hidden connect 11 0 14 0; -#P hidden connect 15 0 14 0; -#P connect 25 0 24 0; -#P hidden fasten 14 5 8 4 626 340 638 340 638 94 626 94; -#P hidden connect 8 5 14 4; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.gtr.help b/externals/grill/vasp/max-help/vasp.gtr.help deleted file mode 100755 index d3614b83..00000000 --- a/externals/grill/vasp/max-help/vasp.gtr.help +++ /dev/null @@ -1,128 +0,0 @@ -max v2; -#N vpatcher 40 55 709 476; -#P message 446 353 79 196617 vasp buf> buf>1; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 446 373 78 196617 p clear_buffers; -#P newex 59 327 61 196617 vasp.update; -#P flonum 149 272 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P comment 274 286 48 196617 0/false; -#P comment 114 145 148 196617 generate a sine wave at 1Hz; -#P message 59 145 51 196617 vasp buf>; -#P newex 59 191 61 196617 vasp.update; -#P newex 59 168 80 196617 vasp.osc 44100; -#P comment 118 228 100 196617 copy to new buffer; -#P hidden message 321 219 50 196617 set buf>1; -#P user waveform~ 321 237 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 538 373 95 196617 buffer~ buf>1 2000; -#P comment 52 86 134 196617 argument/right inlet: value; -#N vpatcher 40 55 418 371; -#P button 183 82 15 0; -#P newex 129 145 60 196617 prepend set; -#N comlet waveform~ mode messages; -#P inlet 129 121 15 0; -#P newex 259 64 27 196617 << 1; -#P newex 206 121 40 196617 change; -#P newex 206 145 107 196617 select 0 1 2; -#P newex 206 98 27 196617 |; -#P newex 47 121 40 196617 change; -#P outlet 129 252 15 0; -#P message 47 145 65 196617 constrain \$1; -#P newex 129 195 45 196617 loadbang; -#P newex 47 40 222 196617 pushkeys; -#P message 270 169 58 196617 mode move; -#P message 206 213 61 196617 mode select; -#P message 238 191 52 196617 mode loop; -#P connect 3 0 7 0; -#P connect 7 0 5 0; -#P connect 12 0 13 0; -#P fasten 5 0 6 0 52 243 134 243; -#P fasten 0 0 6 0 243 243 134 243; -#P fasten 1 0 6 0 211 243 134 243; -#P fasten 2 0 6 0 275 243 134 243; -#P connect 11 0 14 0; -#P connect 3 3 8 0; -#P connect 14 0 8 0; -#P connect 8 0 10 0; -#P connect 10 0 9 0; -#P connect 4 0 1 0; -#P connect 9 0 1 0; -#P connect 13 0 1 0; -#P connect 11 0 8 1; -#P connect 9 1 0 0; -#P connect 3 4 11 0; -#P connect 9 2 2 0; -#P pop; -#P hidden newobj 321 52 49 196617 p wfkeys; -#P hidden message 321 98 44 196617 set buf>; -#P hidden newex 321 74 45 196617 loadbang; -#P user waveform~ 321 118 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 59 296 60 196617 vasp.> -0.4; -#P message 59 228 55 196617 vasp buf>1; -#P newex 538 353 95 196617 buffer~ buf> 2000; -#P newex 59 249 60 196617 vasp.= buf>; -#P comment 52 71 83 196617 sample > value; -#P comment 52 48 89 196622 vasp.>; -#P comment 598 103 44 196617 source; -#P comment 277 244 44 196617 1/true; -#P connect 19 0 17 0; -#P connect 17 0 18 0; -#P connect 6 0 4 0; -#P connect 4 0 7 0; -#P connect 7 0 23 0; -#P fasten 22 0 7 1 154 292 114 292; -#P hidden connect 9 0 10 0; -#P hidden fasten 5 1 10 0 628 371 638 371 638 94 326 94; -#P hidden connect 11 0 8 0; -#P hidden connect 10 0 8 0; -#P hidden connect 9 0 15 0; -#P hidden connect 11 0 14 0; -#P hidden connect 15 0 14 0; -#P connect 25 0 24 0; -#P hidden fasten 14 5 8 4 626 340 638 340 638 94 626 94; -#P hidden connect 8 5 14 4; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.help b/externals/grill/vasp/max-help/vasp.help deleted file mode 100755 index a03f562b..00000000 --- a/externals/grill/vasp/max-help/vasp.help +++ /dev/null @@ -1,710 +0,0 @@ -max v2; -#N vpatcher 20 50 720 450; -#P origin 32 21; -#P hidden message 456 87 200 196617 window size 20 50 720 450 \, window exec; -#N thispatcher; -#Q end; -#P hidden newobj 511 108 59 196617 thispatcher; -#P hidden newex 409 28 45 196617 loadbang; -#P hidden message 409 51 84 196617 read vasplogo.tif; -#P user fpic 488 21 186 57 vasplogo.tif 0 0 0 0. 0 0 0; -#N vpatcher 93 94 908 393; -#P comment 443 224 237 196617 don't miss that!; -#P comment 134 257 166 196617 http://www.canto-crudo.com/; -#P comment 443 190 237 196617 comparable (but more extensive) functionality; -#P comment 64 52 50 196617 about fft:; -#P comment 134 190 255 196617 http://www.bath.ac.uk/~masjpf/CDP/CDP.htm; -#P comment 84 190 28 196617 CDP:; -#P comment 134 113 255 196617 http://sepwww.stanford.edu/oldsep/hale/FftLab.html; -#P comment 443 113 73 196617 very useful; -#P comment 134 151 225 196617 http://www.fftw.org/links.html; -#P comment 443 151 92 196617 more fft links; -#P comment 443 80 95 196617 introduction to fft; -#P comment 134 80 225 196617 http://www.eptools.com/tn/T0001/INDEX.HTM; -#P comment 20 224 92 196617 Numerical Recipes:; -#P comment 134 224 272 196617 http://www.nr.com/; -#P comment 443 49 305 196617 the author (marius schebella) also handles the documentation for the pure data port of vasp; -#P comment 134 52 299 196617 http://www.parasitaere-kapazitaeten.net/Pd/fft_und_pd.htm; -#P comment 44 257 68 196617 gŸnther rabl :; -#P comment 28 22 107 196622 vasp_links; -#P pop; -#P newobj 570 248 35 196617 p links; -#P comment 509 250 59 196617 useful links; -#P comment 45 136 469 196617 consisting of functions to generate and modify buffer content in a non-realtime context.; -#P comment 386 250 55 196617 vasps units; -#N vpatcher 71 356 541 680; -#N vpatcher 442 226 781 479; -#P comment 114 90 102 196617 current sampling rate; -#P flonum 68 194 54 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P newex 68 141 27 196617 t b f; -#P message 267 140 27 196617 stop; -#P message 201 140 65 196617 startwindow; -#P newex 201 163 29 196617 dac~; -#P comment 126 195 64 196617 period length; -#P flonum 68 113 54 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P newex 68 163 27 196617 / 1.; -#P flonum 56 89 54 9 0 0 160 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P newex 42 65 53 196617 dspstate~; -#P comment 126 115 80 196617 frequency in Hz; -#P comment 20 21 170 196622 Hz_to_period_length; -#P connect 2 1 3 0; -#P fasten 5 0 10 0 73 134 73 134; -#P fasten 3 0 4 0 61 108 61 108 61 160 73 160; -#P connect 10 0 4 0; -#P connect 4 0 11 0; -#P connect 10 1 4 1; -#P fasten 9 0 7 0 272 159 206 159; -#P connect 8 0 7 0; -#P pop; -#P newobj 123 280 109 196617 p Hz_to_period_length; -#P comment 103 262 301 196617 sample rate/frequency in Hz = frequency in period length (float); -#P comment 60 245 234 196617 - frequencies are always defined in period lengths; -#P message 122 197 125 196617 vasp 44100 buf1 22050 0; -#P comment 103 171 305 196617 e.g: vasp message with an offset of 0.5 sec. and a length of 1 sec. (sr 44100); -#P comment 60 155 366 196617 - lengths and offsets are always defined in samples (depending on sample rate); -#P message 123 102 125 196617 vasp 44100 buf1 22050 0; -#P comment 60 69 182 196617 - vasp index counting starts from 0; -#P comment 38 24 106 196622 vasp_units; -#P comment 103 84 313 196617 e.g: channel 0 in a vasp message means first channel in the buffer; -#P pop; -#P newobj 446 248 38 196617 p units; -#P comment 218 250 78 196617 the vasp objects; -#P comment 45 250 83 196617 the vasp message; -#N vpatcher 740 49 953 357; -#N vpatcher 119 475 293 627; -#P origin 0 23; -#P newex 21 21 39 196617 r ohelp; -#P newex 21 41 78 196617 prepend symbol; -#P newex 21 92 45 196617 pcontrol; -#P message 21 67 41 196617 help \$1; -#P connect 3 0 2 0; -#P connect 2 0 0 0; -#P connect 0 0 1 0; -#P pop; -#P hidden newobj 60 274 54 196617 p openhelp; -#N vpatcher 306 143 730 390; -#P comment 132 137 195 196617 rotate buffer content symmetrically; -#P message 67 137 52 196617 vasp.xrot; -#P message 67 193 59 196617 vasp.xmirr; -#P message 67 164 53 196617 vasp.mirr; -#P message 67 110 45 196617 vasp.rot; -#P message 67 81 59 196617 vasp.xshift; -#P message 67 52 53 196617 vasp.shift; -#P hidden newex 319 205 39 196617 s ohelp; -#P comment 132 193 171 196617 mirrors a vasp symmetrically; -#P comment 131 81 228 196617 shifts the buffer content symetrically; -#P comment 132 164 171 196617 mirrors a vasp; -#P comment 132 52 222 196617 shifts the buffer content; -#P comment 132 110 100 196617 rotate buffer content; -#P comment 43 23 131 196622 vasp.displace; -#P hidden connect 11 0 6 0; -#P hidden connect 10 0 6 0; -#P hidden connect 9 0 6 0; -#P hidden connect 8 0 6 0; -#P hidden connect 7 0 6 0; -#P hidden connect 12 0 6 0; -#P pop; -#P newobj 60 178 75 196617 p vasp.displace; -#N vpatcher 531 93 1020 661; -#P origin 0 41; -#P hidden newex 413 514 39 196617 s ohelp; -#P message 62 522 51 196617 vasp.part; -#P message 62 496 61 196617 vasp.gather; -#P message 62 470 49 196617 vasp.spit; -#P message 62 444 49 196617 vasp.join; -#P message 62 418 52 196617 vasp.split; -#P message 62 392 70 196617 vasp.frames?; -#P message 62 366 70 196617 vasp.frames+; -#P message 62 340 64 196617 vasp.frames; -#P message 62 314 55 196617 vasp.offs?; -#P message 62 288 55 196617 vasp.offs+; -#P message 62 262 50 196617 vasp.offs; -#P message 62 236 43 196617 vasp.n?; -#P message 62 210 35 196617 vasp.n; -#P message 62 184 40 196617 vasp.m; -#P message 62 158 61 196617 vasp.update; -#P message 62 132 53 196617 vasp.sync; -#P message 62 106 45 196617 vasp.chk; -#P message 62 80 44 196617 vasp.??; -#P message 62 54 38 196617 vasp.?; -#P comment 134 80 225 196617 output all non zero samples of a vasp as list; -#P comment 134 496 252 196617 gather several vasps into one; -#P comment 134 418 252 196617 split a vasp into its vectors; -#P comment 134 470 252 196617 spit out vectors of a vasp (one vector after the other); -#P comment 134 444 252 196617 join several vasps into one; -#P comment 134 392 252 196617 get a vasps frame count; -#P comment 134 366 252 196617 raise/lower a vasps frame count; -#P comment 134 340 252 196617 set a vasps frame count; -#P comment 134 314 252 196617 get a single vectored vasp«s offset(s) into the buffer; -#P comment 134 288 252 196617 shift a vasp«s offset(s) into the vector buffers; -#P comment 134 262 252 196617 set a vasp«s offset(s) into the vector buffers; -#P comment 134 236 252 196617 get the number vectors of a vasp; -#P comment 134 210 252 196617 get a vector of a vasp; -#P comment 134 184 252 196617 output a vasp multiply; -#P comment 134 54 186 196617 output the samples of a vasp as list; -#P comment 134 106 110 196617 check vasp dimensions; -#P comment 134 132 246 196617 sync 2 or more vasps; -#P comment 134 158 252 196617 update the graphics of a patcher (e.g. waveform); -#P comment 134 522 238 196617 output vasps with different lengths and offsets; -#P comment 27 22 135 196622 define_vasps; -#P hidden connect 22 0 39 0; -#P hidden connect 38 0 39 0; -#P hidden connect 37 0 39 0; -#P hidden connect 36 0 39 0; -#P hidden connect 35 0 39 0; -#P hidden connect 34 0 39 0; -#P hidden connect 33 0 39 0; -#P hidden connect 32 0 39 0; -#P hidden connect 31 0 39 0; -#P hidden connect 30 0 39 0; -#P hidden connect 29 0 39 0; -#P hidden connect 28 0 39 0; -#P hidden connect 27 0 39 0; -#P hidden connect 26 0 39 0; -#P hidden connect 25 0 39 0; -#P hidden connect 24 0 39 0; -#P hidden connect 23 0 39 0; -#P hidden connect 21 0 39 0; -#P hidden connect 20 0 39 0; -#P pop; -#P newobj 60 65 75 196617 p define_vasps; -#N vpatcher 463 267 1141 534; -#P message 63 228 52 196617 vasp.xtilt; -#P comment 130 229 165 196617 symmetrical resampling; -#P message 64 204 45 196617 vasp.tilt; -#P comment 129 205 165 196617 resampling; -#P message 279 81 60 196617 vasp.cnorm; -#P message 483 109 70 196617 vasp.rvalleys; -#P message 483 137 62 196617 vasp.rpeaks; -#P message 483 81 51 196617 vasp.ropt; -#P comment 559 109 83 196617 radius valleys; -#P comment 559 137 83 196617 radius peaks; -#P comment 559 81 83 196617 radius optimize; -#P message 483 53 55 196617 vasp.rgate; -#P comment 559 53 83 196617 radius gate; -#P hidden newex 304 187 39 196617 s ohelp; -#P message 64 165 60 196617 vasp.pwrap; -#P message 64 137 55 196617 vasp.peaks; -#P message 64 109 65 196617 vasp.valleys; -#P message 64 81 45 196617 vasp.opt; -#P message 64 53 51 196617 vasp.gate; -#P comment 129 165 165 196617 wraps value from 0-2¹ to -¹ to ¹; -#P comment 129 137 100 196617 local peaks of a vasp; -#P comment 129 109 123 196617 local minima of a vasp; -#P comment 129 81 134 196617 optimize buffer content; -#P comment 129 53 171 196617 gates vasp under a value (amplitude); -#P comment 26 25 144 196622 vasp_utilities; -#P comment 341 81 125 196617 sets complex radius of all samples to unity; -#P hidden connect 25 0 12 0; -#P hidden connect 23 0 12 0; -#P hidden connect 20 0 12 0; -#P hidden connect 19 0 12 0; -#P hidden connect 18 0 12 0; -#P hidden connect 14 0 12 0; -#P hidden connect 10 0 12 0; -#P hidden connect 9 0 12 0; -#P hidden connect 8 0 12 0; -#P hidden connect 7 0 12 0; -#P hidden connect 21 0 12 0; -#P hidden connect 11 0 12 0; -#P pop; -#P newobj 60 246 75 196617 p vasp.utilities; -#N vpatcher 195 285 765 547; -#P origin 0 24; -#P message 352 208 53 196617 vasp.rmin; -#P message 352 182 55 196617 vasp.rmax; -#P comment 426 208 83 196617 radius minimum; -#P comment 426 182 83 196617 radius maximum; -#P hidden newex 309 229 39 196617 s ohelp; -#P message 63 208 48 196617 vasp.min; -#P message 63 182 51 196617 vasp.max; -#P message 63 156 55 196617 vasp.max?; -#P message 63 130 54 196617 vasp.min?; -#P message 63 104 62 196617 vasp.amax?; -#P message 63 78 59 196617 vasp.amin?; -#P message 352 156 62 196617 vasp.rmax?; -#P message 352 130 59 196617 vasp.rmin?; -#P message 63 52 65 196617 vasp.minmax; -#P comment 139 208 171 196617 minimum of vasp and argument; -#P comment 139 182 171 196617 maximum of vasp and argument; -#P comment 139 130 131 196617 output min. value of a vasp; -#P comment 139 156 131 196617 output max. value of a vasp; -#P comment 139 104 172 196617 output max. absolute value of a vasp; -#P comment 139 78 204 196617 output min. absolute value of a vasp; -#P comment 426 156 99 196617 radius max. value; -#P comment 426 130 96 196617 radius min. value; -#P comment 139 54 228 196617 splits a vasp into minimum and maximum values; -#P comment 27 23 140 196622 vasp_minmax_etc.; -#P hidden connect 23 0 19 0; -#P hidden connect 22 0 19 0; -#P hidden connect 18 0 19 0; -#P hidden connect 17 0 19 0; -#P hidden connect 16 0 19 0; -#P hidden connect 15 0 19 0; -#P hidden connect 14 0 19 0; -#P hidden connect 13 0 19 0; -#P hidden connect 12 0 19 0; -#P hidden connect 11 0 19 0; -#P hidden connect 10 0 19 0; -#P pop; -#P newobj 60 223 98 196617 p vasp.minmax_etc.; -#N vpatcher 480 321 1117 575; -#P origin 0 27; -#P comment 292 137 98 196617 complex sample^2; -#P comment 292 112 148 196617 complex integer power function; -#P comment 121 162 98 196617 square root; -#P comment 121 188 87 196617 signed sample^2; -#P message 230 112 58 196617 vasp.cpowi; -#P message 230 137 52 196617 vasp.csqr; -#P message 61 214 55 196617 vasp.ssqrt; -#P message 61 188 52 196617 vasp.ssqr; -#P message 61 162 51 196617 vasp.sqrt; -#P message 61 137 45 196617 vasp.sqr; -#P message 61 112 50 196617 vasp.pow; -#P comment 121 214 98 196617 signed square root; -#P comment 121 112 48 196617 samps^x; -#P comment 121 137 70 196617 sample^2; -#P message 448 112 55 196617 vasp.rpow; -#P comment 504 112 112 196617 radius power function; -#P hidden newex 346 206 39 196617 s ohelp; -#P message 61 85 45 196617 vasp.log; -#P message 61 55 48 196617 vasp.exp; -#P comment 121 85 86 196617 logarithm; -#P comment 121 55 84 196617 exponential; -#P comment 27 22 143 196622 vasp_transcendent; -#P hidden connect 3 0 5 0; -#P hidden connect 4 0 5 0; -#P hidden connect 11 0 5 0; -#P hidden connect 12 0 5 0; -#P hidden connect 13 0 5 0; -#P hidden connect 14 0 5 0; -#P hidden connect 15 0 5 0; -#P hidden connect 17 0 5 0; -#P hidden connect 16 0 5 0; -#P hidden connect 7 0 5 0; -#P pop; -#P newobj 60 201 98 196617 p vasp.transcendent; -#N vpatcher 508 79 1002 585; -#P origin 0 26; -#P message 251 114 45 196617 vasp.c!-; -#P comment 125 112 100 196617 reverse subtraction; -#P message 62 112 40 196617 vasp.!-; -#P comment 126 439 100 196617 integral function; -#P comment 126 462 100 196617 differential function; -#P message 63 462 44 196617 vasp.dif; -#P message 63 439 44 196617 vasp.int; -#P message 336 70 43 196617 vasp.r+; -#P comment 385 70 83 196617 radius offset; -#P message 252 182 45 196617 vasp.c!/; -#P comment 126 181 100 196617 reverse division; -#P message 63 181 41 196617 vasp.!/; -#P message 252 205 43 196617 vasp.c=; -#P message 252 160 43 196617 vasp.c/; -#P message 252 136 44 196617 vasp.c*; -#P message 251 92 42 196617 vasp.c-; -#P message 251 70 43 196617 vasp.c+; -#P hidden newex 417 333 39 196617 s ohelp; -#P message 63 416 50 196617 vasp.sign; -#P message 63 394 41 196617 vasp.%; -#P message 63 373 45 196617 vasp.abs; -#P message 63 350 41 196617 vasp.!=; -#P message 63 327 44 196617 vasp.==; -#P message 63 304 43 196617 vasp.>=; -#P message 63 280 43 196617 vasp.<=; -#P message 63 256 35 196617 vasp.>; -#P message 63 232 35 196617 vasp.<; -#P message 63 207 38 196617 vasp.=; -#P message 63 159 38 196617 vasp./; -#P message 63 135 39 196617 vasp.*; -#P message 62 92 35 196617 vasp.-; -#P message 62 70 38 196617 vasp.+; -#P comment 126 304 100 196617 vasp >= x; -#P comment 126 280 100 196617 vasp >= x; -#P comment 126 256 100 196617 vasp > x; -#P comment 126 232 100 196617 vasp < x; -#P comment 126 327 58 196617 equal to; -#P comment 126 135 100 196617 multiplication; -#P comment 126 159 100 196617 division; -#P comment 125 92 100 196617 subtraction; -#P comment 126 350 58 196617 not equal to; -#P comment 126 394 158 196617 modulo (remainder of a division); -#P comment 126 373 128 196617 absolute value of a vasp; -#P comment 125 70 100 196617 addition; -#P comment 251 49 73 196617 complex ....; -#P comment 27 24 151 196622 vasp_arithmetic; -#P comment 126 207 100 196617 vasp = x; -#P comment 126 416 204 196617 values < 0 become -1 | values > 0 become 1; -#P comment 336 49 100 196617 radius ....; -#P hidden connect 43 0 31 0; -#P hidden connect 42 0 31 0; -#P hidden connect 41 0 31 0; -#P hidden connect 39 0 31 0; -#P hidden connect 37 0 31 0; -#P hidden connect 36 0 31 0; -#P hidden connect 35 0 31 0; -#P hidden connect 34 0 31 0; -#P hidden connect 33 0 31 0; -#P hidden connect 32 0 31 0; -#P hidden connect 30 0 31 0; -#P hidden connect 29 0 31 0; -#P hidden connect 28 0 31 0; -#P hidden connect 27 0 31 0; -#P hidden connect 26 0 31 0; -#P hidden connect 25 0 31 0; -#P hidden connect 23 0 31 0; -#P hidden connect 21 0 31 0; -#P hidden connect 19 0 31 0; -#P hidden connect 18 0 31 0; -#P hidden connect 17 0 31 0; -#P hidden connect 20 0 31 0; -#P hidden connect 22 0 31 0; -#P hidden connect 24 0 31 0; -#P hidden connect 46 0 31 0; -#P hidden connect 48 0 31 0; -#P pop; -#P newobj 60 109 85 196617 p vasp.arithmetic; -#N vpatcher 528 390 958 618; -#P origin 25 0; -#P message 234 86 52 196617 vasp.r!fft; -#P message 234 59 49 196617 vasp.rfft; -#P message 64 133 55 196617 vasp.polar; -#P message 64 86 52 196617 vasp.c!fft; -#P message 64 59 49 196617 vasp.cfft; -#P hidden newex 309 192 39 196617 s ohelp; -#P comment 121 133 238 196617 changes between cartesian and polar representation; -#P comment 287 86 114 196617 inverse real fft; -#P comment 121 59 100 196617 complex fft; -#P comment 121 86 100 196617 inverse complex fft; -#P comment 287 59 100 196617 real fft; -#P comment 26 22 135 196622 vasp_fftobjects; -#P comment 121 177 238 196617 changes between polar and cartesian representation; -#P message 64 177 51 196617 vasp.rect; -#P hidden fasten 11 0 8 0 69 161 314 161; -#P hidden fasten 10 0 8 0 69 113 314 113; -#P hidden fasten 9 0 8 0 69 78 314 78; -#P hidden fasten 0 0 8 0 69 198 314 198; -#P hidden fasten 12 0 8 0 239 113 314 113; -#P hidden fasten 13 0 8 0 239 77 314 77; -#P pop; -#P newobj 60 87 85 196617 p vasp.fftobjects; -#N vpatcher 506 170 738 299; -#P origin 0 12; -#P hidden newex 149 90 39 196617 s ohelp; -#P message 65 79 44 196617 vasp.flp; -#P message 65 53 45 196617 vasp.fhp; -#P comment 116 79 100 196617 low pass; -#P comment 116 53 100 196617 high pass; -#P comment 24 21 117 196622 vasp_filters; -#P hidden connect 4 0 5 0; -#P hidden connect 3 0 5 0; -#P pop; -#P newobj 60 155 69 196617 p vasp.filters; -#N vpatcher 193 174 800 440; -#P origin 0 -227; -#P hidden newex 371 208 39 196617 s ohelp; -#P message 422 192 59 196617 vasp.*cosc; -#P message 422 169 65 196617 vasp.*!bevel; -#P message 422 146 63 196617 vasp.*bevel; -#P message 422 100 69 196617 vasp.*phasor; -#P message 422 77 54 196617 vasp.*osc; -#P message 60 214 60 196617 vasp.cnoise; -#P message 60 191 52 196617 vasp.cosc; -#P message 60 168 59 196617 vasp.!bevel; -#P message 60 145 55 196617 vasp.bevel; -#P message 60 122 55 196617 vasp.noise; -#P message 60 99 62 196617 vasp.phasor; -#P message 60 76 45 196617 vasp.osc; -#P comment 60 56 126 196617 generate .....; -#P comment 128 169 120 196617 vasp ramp from 1- 0; -#P comment 128 145 120 196617 vasp ramp from 0 - 1; -#P comment 128 121 120 196617 vasp noise generator; -#P comment 128 98 120 196617 vasp saw tooth generator; -#P comment 128 75 126 196617 vasp sine wave generator; -#P comment 292 59 283 196617 multiplies a buffer content with the oscillator functions ...; -#P comment 128 217 140 196617 complex noise; -#P comment 128 192 140 196617 complex sine wave; -#P comment 26 22 138 196622 vasp_generators; -#P hidden connect 21 0 22 0; -#P hidden connect 20 0 22 0; -#P hidden connect 19 0 22 0; -#P hidden connect 18 0 22 0; -#P hidden connect 17 0 22 0; -#P hidden connect 16 0 22 0; -#P hidden connect 15 0 22 0; -#P hidden connect 14 0 22 0; -#P hidden connect 13 0 22 0; -#P hidden connect 12 0 22 0; -#P hidden connect 11 0 22 0; -#P hidden connect 10 0 22 0; -#P pop; -#P newobj 60 132 89 196617 p vasp.generators; -#P comment 25 23 121 196622 vasp_objects; -#P pop; -#P newobj 301 248 49 196617 p objects; -#P comment 45 152 478 196617 vasp objects are using a specialized message syntax for all objects to refer to a buffer or a part of it.; -#N vpatcher 120 60 880 570; -#P origin 0 97; -#P comment 104 1341 139 196617 set all samples of buf5/6 to 0; -#P message 246 1340 75 196617 vasp buf5 buf6; -#P newex 246 1382 61 196617 vasp.update; -#P newex 246 1360 45 196617 vasp.= 0; -#P comment 38 1289 207 196617 and modulate the noise with a 4Hz sine wave; -#P newex 246 1206 55 196617 vasp.* 0.5; -#P hidden newex 494 37 45 196617 loadbang; -#P comment 725 1385 13 196620 |||; -#P newex 517 1384 92 196617 buffer~ buf6 2000; -#P newex 517 1364 92 196617 buffer~ buf5 2000; -#P newex 518 1122 92 196617 buffer~ buf4 2000; -#P newex 504 848 92 196617 buffer~ buf3 2000; -#P newex 504 828 92 196617 buffer~ buf2 2000; -#P newex 501 414 92 196617 buffer~ buf1 2000; -#P hidden newex 373 599 45 196617 loadbang; -#P hidden message 494 57 205 196617 window size 120 60 880 570 \, window exec; -#N thispatcher; -#Q end; -#P hidden newobj 494 75 59 196617 thispatcher; -#P comment 555 1273 63 196617 buffer buf6; -#P comment 554 1180 63 196617 buffer buf5; -#P comment 94 1158 37 196617 - to:; -#P comment 115 1076 127 196617 set all samples of buf1 to 0; -#P comment 553 1030 63 196617 buffer buf4; -#P message 246 1268 115 196617 to vasp buf6 \, vasp buf5; -#P newex 246 1311 61 196617 vasp.update; -#P newex 246 1287 85 196617 vasp.*osc 11025; -#P newex 246 1228 61 196617 vasp.update; -#P newex 246 1184 55 196617 vasp.noise; -#P message 246 1074 52 196617 vasp buf4; -#P newex 246 1116 61 196617 vasp.update; -#P newex 246 1094 45 196617 vasp.= 0; -#P hidden message 387 1271 45 196617 set buf6; -#P user waveform~ 387 1287 223 74 3 9; -#W mode none; -#W mouseoutput none; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P hidden newex 387 1158 45 196617 loadbang; -#P hidden message 387 1177 45 196617 set buf5; -#P user waveform~ 387 1195 223 74 3 9; -#W mode none; -#W mouseoutput none; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P button 193 993 15 0; -#P hidden newex 387 1002 45 196617 loadbang; -#P hidden message 387 1029 45 196617 set buf4; -#P newex 246 1049 61 196617 vasp.update; -#P newex 246 1024 80 196617 vasp.osc 22050; -#P user waveform~ 387 1045 223 74 3 9; -#W mode none; -#W mouseoutput none; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P comment 539 737 63 196617 buffer buf3; -#P comment 534 644 63 196617 buffer buf2; -#P comment 536 324 57 196617 buffer buf1; -#P comment 117 748 112 196617 set all samples of buf1 and buf2 to 0; -#P message 231 750 75 196617 vasp buf2 buf3; -#P newex 231 788 61 196617 vasp.update; -#P newex 231 768 45 196617 vasp.= 0; -#P newex 228 705 61 196617 vasp.update; -#P newex 228 680 80 196617 vasp.osc 22050; -#P comment 92 375 127 196617 set all samples of buf1 to 0; -#P comment 92 320 135 196617 generate a sine wave at 2Hz; -#P message 229 376 55 196617 vasp buf1; -#P newex 229 414 61 196617 vasp.update; -#P newex 229 394 45 196617 vasp.= 0; -#P hidden message 373 734 45 196617 set buf3; -#P user waveform~ 373 751 223 74 3 9; -#W mode none; -#W mouseoutput none; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P hidden message 373 641 45 196617 set buf2; -#P hidden newex 373 620 35 196617 del 10; -#P user waveform~ 373 659 223 74 3 9; -#W mode none; -#W mouseoutput none; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 228 343 61 196617 vasp.update; -#P newex 228 318 80 196617 vasp.osc 22050; -#P hidden message 370 319 45 196617 set buf1; -#P hidden newex 370 299 45 196617 loadbang; -#P user waveform~ 370 338 223 74 3 9; -#W mode none; -#W mouseoutput none; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P comment 117 1270 127 196617 sets the target buffer buf6; -#P message 246 1158 52 196617 vasp buf5; -#P comment 379 202 117 196617 (default 0); -#P comment 351 993 214 196617 sets the message \, bang triggers the operation; -#P comment 63 958 198 196622 additional vasp messages:; -#P message 246 993 102 196617 set vasp 44100 buf4; -#P comment 130 868 502 196617 a vasp message can contain as many vectors as you like \, but all vectors have the same length; -#P comment 391 570 281 196617 refering to buffer buf1 from 0 sec to 1 sec on channel 0 and buffer buf2 from 0.5 sec to 1.5 sec on channel 0; -#P message 228 573 159 196617 vasp 44100 buf2 0 0 buf3 22050; -#P comment 92 574 135 196617 two vectored vasp message:; -#P comment 92 527 395 196617 all vectors have the same length \, but the vectors can differ in the buffers and offsets; -#P comment 74 497 269 196617 - if a vasp message contains more than one vector:; -#P comment 296 226 117 196617 (default 0); -#P comment 354 270 284 196617 refering to buffer buf1 from 0.5 sec to 1.5 sec on channel 0; -#P message 228 269 125 196617 vasp 44100 buf1 22050 0; -#P comment 92 271 135 196617 one vectored vasp message:; -#P comment 379 153 141 196617 which does the same.; -#P message 336 151 43 196617 vasp -1; -#P comment 92 153 192 196617 if missing \, it refers to the whole buffer; -#P message 169 225 125 196617 vasp 44100 buf1 22050 0; -#P comment 92 226 75 196617 and the channel; -#P message 258 201 118 196617 vasp 44100 buf1 22050; -#P comment 92 202 138 196617 an optional offset in samples; -#P message 258 179 85 196617 vasp 44100 buf1; -#P comment 92 180 164 196617 the name of the buffer it refers to; -#P message 271 131 62 196617 vasp 44100; -#P comment 92 134 173 196617 followed by the length in samples; -#P message 214 110 31 196617 vasp; -#P comment 63 43 158 196622 the vasp message:; -#P comment 63 1 124 196622 vasp_syntax; -#P comment 74 85 362 196617 - a vasp message is structured by the following parts:; -#P comment 92 112 113 196617 it always starts with; -#P comment 291 153 41 196617 or type; -#P comment 94 993 37 196617 - set:; -#P comment 725 473 14 196620 |; -#P comment 725 934 13 196620 ||; -#P connect 21 0 39 0; -#P connect 39 0 40 0; -#P connect 27 0 51 0; -#P connect 51 0 52 0; -#P connect 48 0 46 0; -#P connect 46 0 47 0; -#P connect 55 0 53 0; -#P connect 53 0 54 0; -#P connect 30 0 61 0; -#P fasten 65 0 61 0 198 1014 251 1014; -#P connect 61 0 62 0; -#P connect 73 0 71 0; -#P connect 71 0 72 0; -#P connect 34 0 74 0; -#P connect 74 0 95 0; -#P connect 95 0 75 0; -#P connect 78 0 76 0; -#P connect 76 0 77 0; -#P connect 99 0 97 0; -#P connect 97 0 98 0; -#P hidden connect 37 0 38 0; -#P hidden connect 38 0 36 0; -#P hidden connect 86 0 42 0; -#P hidden connect 42 0 43 0; -#P hidden connect 43 0 41 0; -#P hidden connect 42 0 45 0; -#P hidden connect 45 0 44 0; -#P hidden connect 64 0 63 0; -#P hidden connect 63 0 60 0; -#P hidden connect 68 0 67 0; -#P hidden connect 67 0 66 0; -#P hidden connect 68 0 70 0; -#P hidden connect 70 0 69 0; -#P hidden connect 94 0 85 0; -#P hidden connect 85 0 84 0; -#P pop; -#P newobj 134 248 45 196617 p syntax; -#P comment 25 41 148 196622 vasp_modular.help; -#P comment 45 120 354 196617 vasp is a library of objects for max/msp and pd \,; -#P comment 45 348 432 196617 inspired by gŸnther rabl«s fft-box and tool-box. find gŸnther rabl at www.canto-crudo.com; -#P comment 45 75 362 196620 vasp modular - vector assembling signal processor ©2002 thomas grill; -#P comment 45 365 470 196617 vasp.help patches by florian bogner and oliver grimm - ©2002 patcherboys - www.patcherboys.com; -#P comment 45 168 570 196617 these help patches should give you an idea of what is possible. feel free to combine different patches to more complex ones.; -#P hidden connect 18 0 20 0; -#P hidden connect 17 0 16 0; -#P hidden connect 20 0 19 0; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.int.help b/externals/grill/vasp/max-help/vasp.int.help deleted file mode 100755 index 255494e2..00000000 --- a/externals/grill/vasp/max-help/vasp.int.help +++ /dev/null @@ -1,93 +0,0 @@ -max v2; -#N vpatcher 270 159 881 476; -#P newex 46 237 45 196617 vasp.opt; -#P message 404 216 58 196617 vasp bufint; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 404 237 73 196617 p clear_buffer; -#P comment 38 75 131 196617 argument: repetition count; -#P newex 46 158 61 196617 vasp.update; -#P comment 38 58 131 196617 vasp integral function; -#P message 46 188 58 196617 vasp bufint; -#P newex 46 211 44 196617 vasp.int; -#N vpatcher 40 55 418 371; -#P button 183 82 15 0; -#P newex 129 145 60 196617 prepend set; -#N comlet waveform~ mode messages; -#P inlet 129 121 15 0; -#P newex 259 64 27 196617 << 1; -#P newex 206 121 40 196617 change; -#P newex 206 145 107 196617 select 0 1 2; -#P newex 206 98 27 196617 |; -#P newex 47 121 40 196617 change; -#P outlet 129 252 15 0; -#P message 47 145 65 196617 constrain \$1; -#P newex 129 195 45 196617 loadbang; -#P newex 47 40 222 196617 pushkeys; -#P message 270 169 58 196617 mode move; -#P message 206 213 61 196617 mode select; -#P message 238 191 52 196617 mode loop; -#P connect 3 0 7 0; -#P connect 7 0 5 0; -#P connect 12 0 13 0; -#P fasten 5 0 6 0 52 243 134 243; -#P fasten 0 0 6 0 243 243 134 243; -#P fasten 1 0 6 0 211 243 134 243; -#P fasten 2 0 6 0 275 243 134 243; -#P connect 11 0 14 0; -#P connect 3 3 8 0; -#P connect 14 0 8 0; -#P connect 8 0 10 0; -#P connect 10 0 9 0; -#P connect 4 0 1 0; -#P connect 9 0 1 0; -#P connect 13 0 1 0; -#P connect 11 0 8 1; -#P connect 9 1 0 0; -#P connect 3 4 11 0; -#P connect 9 2 2 0; -#P pop; -#P hidden newobj 268 31 49 196617 p wfkeys; -#P hidden message 268 77 51 196617 set bufint; -#P hidden newex 268 53 45 196617 loadbang; -#P user waveform~ 268 104 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 46 262 61 196617 vasp.update; -#P message 46 104 58 196617 vasp bufint; -#P newex 482 237 98 196617 buffer~ bufint 2000; -#P newex 46 131 55 196617 vasp.bevel; -#P comment 38 34 89 196622 vasp.int; -#P connect 3 0 1 0; -#P connect 1 0 12 0; -#P connect 10 0 9 0; -#P connect 9 0 16 0; -#P connect 16 0 4 0; -#P hidden connect 6 0 7 0; -#P hidden connect 8 0 5 0; -#P hidden connect 7 0 5 0; -#P connect 15 0 14 0; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.join.help b/externals/grill/vasp/max-help/vasp.join.help deleted file mode 100755 index ba53ca5c..00000000 --- a/externals/grill/vasp/max-help/vasp.join.help +++ /dev/null @@ -1,31 +0,0 @@ -max v2; -#N vpatcher 235 91 615 568; -#P hidden message 310 213 22 196617 set; -#P hidden newex 310 186 45 196617 loadbang; -#P message 182 159 149 196617 vasp bufjoin1 bufjoin2 bufjoin3; -#P newex 239 431 109 196617 buffer~ bufjoin3 2000; -#P newex 239 409 109 196617 buffer~ bufjoin2 2000; -#P newex 239 388 109 196617 buffer~ bufjoin1 2000; -#P newex 111 215 60 196617 prepend set; -#P message 111 239 237 196617; -#P message 61 329 287 196617; -#P newex 61 305 60 196617 prepend set; -#P newex 61 191 61 196617 vasp.split 2; -#P newex 61 282 58 196617 vasp.join 2; -#P comment 51 62 137 196617 join several vasps into one; -#P message 61 159 109 196617 vasp bufjoin1 bufjoin2; -#P comment 51 39 89 196622 vasp.join; -#P comment 51 78 164 196617 argument: number of vasps to join; -#P comment 51 95 138 196617 left inlet triggers the output; -#P fasten 14 0 6 0 187 179 66 179; -#P connect 3 0 6 0; -#P connect 6 0 5 0; -#P connect 5 0 7 0; -#P hidden fasten 16 0 8 0 315 326 66 326; -#P connect 7 0 8 0; -#P fasten 6 1 5 1 91 274 114 274; -#P connect 6 2 10 0; -#P connect 10 0 9 0; -#P hidden fasten 16 0 9 0 315 234 116 234; -#P hidden connect 15 0 16 0; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.leq.help b/externals/grill/vasp/max-help/vasp.leq.help deleted file mode 100755 index ab0aee34..00000000 --- a/externals/grill/vasp/max-help/vasp.leq.help +++ /dev/null @@ -1,128 +0,0 @@ -max v2; -#N vpatcher 188 104 857 525; -#P message 437 350 91 196617 vasp buf<= buf<=1; -#N vpatcher 40 55 218 175; -#P newex 45 79 61 196617 vasp.update; -#P newex 45 56 45 196617 vasp.= 0; -#N comlet vasp to clear in; -#P inlet 45 26 15 0; -#P connect 0 0 1 0; -#P connect 1 0 2 0; -#P pop; -#P newobj 437 373 78 196617 p clear_buffers; -#P newex 59 327 61 196617 vasp.update; -#P flonum 149 272 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0; -#P comment 274 286 48 196617 0/false; -#P comment 137 145 148 196617 generate a sine wave at 1Hz; -#P message 59 145 55 196617 vasp buf<=; -#P newex 59 191 61 196617 vasp.update; -#P newex 59 168 80 196617 vasp.osc 44100; -#P comment 137 229 100 196617 copy to new buffer; -#P hidden message 321 219 55 196617 set buf<=1; -#P user waveform~ 321 237 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 530 373 103 196617 buffer~ buf<=1 2000; -#P comment 52 86 188 196617 argument/right inlet: value; -#N vpatcher 40 55 418 371; -#P button 183 82 15 0; -#P newex 129 145 60 196617 prepend set; -#N comlet waveform~ mode messages; -#P inlet 129 121 15 0; -#P newex 259 64 27 196617 << 1; -#P newex 206 121 40 196617 change; -#P newex 206 145 107 196617 select 0 1 2; -#P newex 206 98 27 196617 |; -#P newex 47 121 40 196617 change; -#P outlet 129 252 15 0; -#P message 47 145 65 196617 constrain \$1; -#P newex 129 195 45 196617 loadbang; -#P newex 47 40 222 196617 pushkeys; -#P message 270 169 58 196617 mode move; -#P message 206 213 61 196617 mode select; -#P message 238 191 52 196617 mode loop; -#P connect 3 0 7 0; -#P connect 7 0 5 0; -#P connect 12 0 13 0; -#P fasten 5 0 6 0 52 243 134 243; -#P fasten 0 0 6 0 243 243 134 243; -#P fasten 1 0 6 0 211 243 134 243; -#P fasten 2 0 6 0 275 243 134 243; -#P connect 11 0 14 0; -#P connect 3 3 8 0; -#P connect 14 0 8 0; -#P connect 8 0 10 0; -#P connect 10 0 9 0; -#P connect 4 0 1 0; -#P connect 9 0 1 0; -#P connect 13 0 1 0; -#P connect 11 0 8 1; -#P connect 9 1 0 0; -#P connect 3 4 11 0; -#P connect 9 2 2 0; -#P pop; -#P hidden newobj 321 52 49 196617 p wfkeys; -#P hidden message 321 98 50 196617 set buf<=; -#P hidden newex 321 74 45 196617 loadbang; -#P user waveform~ 321 118 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 59 296 65 196617 vasp.<= -0.4; -#P message 59 228 63 196617 vasp buf<=1; -#P newex 530 350 103 196617 buffer~ buf<= 2000; -#P newex 59 249 65 196617 vasp.= buf<=; -#P comment 52 71 83 196617 sample <= value; -#P comment 52 48 89 196622 vasp.<=; -#P comment 598 103 44 196617 source; -#P comment 277 244 44 196617 1/true; -#P connect 19 0 17 0; -#P connect 17 0 18 0; -#P connect 6 0 4 0; -#P connect 4 0 7 0; -#P connect 7 0 23 0; -#P fasten 22 0 7 1 154 292 119 292; -#P hidden connect 9 0 10 0; -#P hidden fasten 5 1 10 0 628 371 638 371 638 94 326 94; -#P hidden connect 11 0 8 0; -#P hidden connect 10 0 8 0; -#P hidden connect 9 0 15 0; -#P hidden connect 11 0 14 0; -#P hidden connect 15 0 14 0; -#P connect 25 0 24 0; -#P hidden fasten 14 5 8 4 626 340 638 340 638 94 626 94; -#P hidden connect 8 5 14 4; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.list.help b/externals/grill/vasp/max-help/vasp.list.help deleted file mode 100755 index 77081652..00000000 --- a/externals/grill/vasp/max-help/vasp.list.help +++ /dev/null @@ -1,85 +0,0 @@ -max v2; -#N vpatcher 89 186 906 488; -#P origin 0 3; -#P hidden message 380 52 22 196617 set; -#P hidden newex 380 22 45 196617 loadbang; -#P message 42 228 598 196617; -#P newex 42 200 60 196617 prepend set; -#P newex 42 172 38 196617 vasp.?; -#P comment 39 54 238 196617 outputs the values of all samples of a vasp as list; -#N vpatcher 40 55 418 371; -#P button 183 82 15 0; -#P newex 129 145 60 196617 prepend set; -#N comlet waveform~ mode messages; -#P inlet 129 121 15 0; -#P newex 259 64 27 196617 << 1; -#P newex 206 121 40 196617 change; -#P newex 206 145 107 196617 select 0 1 2; -#P newex 206 98 27 196617 |; -#P newex 47 121 40 196617 change; -#P outlet 129 252 15 0; -#P message 47 145 65 196617 constrain \$1; -#P newex 129 195 45 196617 loadbang; -#P newex 47 40 222 196617 pushkeys; -#P message 270 169 58 196617 mode move; -#P message 206 213 61 196617 mode select; -#P message 238 191 52 196617 mode loop; -#P connect 3 0 7 0; -#P connect 7 0 5 0; -#P connect 12 0 13 0; -#P fasten 2 0 6 0 275 243 134 243; -#P fasten 1 0 6 0 211 243 134 243; -#P fasten 0 0 6 0 243 243 134 243; -#P fasten 5 0 6 0 52 243 134 243; -#P connect 11 0 14 0; -#P connect 14 0 8 0; -#P connect 3 3 8 0; -#P connect 8 0 10 0; -#P connect 10 0 9 0; -#P connect 13 0 1 0; -#P connect 9 0 1 0; -#P connect 4 0 1 0; -#P connect 11 0 8 1; -#P connect 9 1 0 0; -#P connect 3 4 11 0; -#P connect 9 2 2 0; -#P pop; -#P hidden newobj 435 21 49 196617 p wfkeys; -#P newex 42 113 55 196617 vasp.bevel; -#P hidden message 435 62 45 196617 set buf?; -#P hidden newex 435 43 45 196617 loadbang; -#P user waveform~ 435 80 312 99 3 9; -#W mode select; -#W mouseoutput continuous; -#W unit ms; -#W grid 1000.; -#W ticks 8.; -#W labels 1; -#W vlabels 1; -#W vticks 1; -#W vzoom 1.; -#W voffset 0.; -#W bpm 120. 4.; -#W frgb 0 0 0; -#W brgb 255 255 255; -#W rgb2 132 132 132; -#W rgb3 0 0 0; -#W rgb4 0 0 0; -#W rgb5 255 255 255; -#W rgb6 100 100 100; -#W rgb7 100 100 100; -#P newex 42 139 61 196617 vasp.update; -#P message 42 85 52 196617 vasp buf?; -#P newex 664 228 83 196617 buffer~ buf? 0.3; -#P comment 39 30 89 196622 vasp.?; -#P connect 2 0 7 0; -#P connect 7 0 3 0; -#P connect 3 0 10 0; -#P connect 10 0 11 0; -#P connect 11 0 12 0; -#P hidden fasten 14 0 12 0 385 220 47 220; -#P hidden connect 13 0 14 0; -#P hidden connect 5 0 6 0; -#P hidden connect 6 0 4 0; -#P hidden connect 8 0 4 0; -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.log.help b/externals/grill/vasp/max-help/vasp.log.help deleted file mode 100755 index a9d784e7..00000000 --- a/externals/grill/vasp/max-help/vasp.log.help +++ /dev/null @@ -1,8 +0,0 @@ -max v2; -#N vpatcher 200 142 489 314; -#P origin 0 2; -#P newex 124 111 45 196617 vasp.log; -#P comment 45 57 189 196617 natural logarithm; -#P comment 45 34 89 196622 vasp.log; -#P comment 45 73 100 196617 ln(sample); -#P pop; diff --git a/externals/grill/vasp/max-help/vasp.lwr.help b/externals/grill/vasp/max-help/vasp.lwr.help deleted file mode 100755 index a0d95c38..00000000 --- a/externals/grill/vasp/max-help/vasp.lwr.help +++ /dev/null @@ -1,128 +0,0 @@ -max v2; -#N vpatcher 147 90 816 511; -#P message 451 352 84 196617 vasp buf