aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/flext
diff options
context:
space:
mode:
authorThomas Grill <xovo@users.sourceforge.net>2003-01-03 04:35:22 +0000
committerThomas Grill <xovo@users.sourceforge.net>2003-01-03 04:35:22 +0000
commitcdf86b37d6180f5f88393c02d8f5e19e2e645ad6 (patch)
tree69f866117656c701f9febb83bcea9fa67ae9c955 /externals/grill/flext
parent10e0265429983876e2fd69950df4d51c8faf5635 (diff)
""
svn path=/trunk/; revision=317
Diffstat (limited to 'externals/grill/flext')
-rw-r--r--externals/grill/flext/flext.cwbin205457 -> 205457 bytes
-rw-r--r--externals/grill/flext/flext.doxy3
-rw-r--r--externals/grill/flext/makefile.pd-cygwin33
-rw-r--r--externals/grill/flext/makefile.pd-darwin2
-rw-r--r--externals/grill/flext/makefile.pd-linux4
-rw-r--r--externals/grill/flext/readme.txt17
-rw-r--r--externals/grill/flext/source/flattr.cpp8
-rw-r--r--externals/grill/flext/source/flbase.h33
-rw-r--r--externals/grill/flext/source/flclass.h69
-rw-r--r--externals/grill/flext/source/fldefs.h9
-rw-r--r--externals/grill/flext/source/fldoxygen.h2
-rw-r--r--externals/grill/flext/source/fldsp.cpp4
-rw-r--r--externals/grill/flext/source/fldsp.h2
-rw-r--r--externals/grill/flext/source/flext.cpp10
-rw-r--r--externals/grill/flext/source/flext.h2
-rwxr-xr-xexternals/grill/flext/source/flitem.cpp44
-rwxr-xr-xexternals/grill/flext/source/fllib.cpp88
-rwxr-xr-xexternals/grill/flext/source/flmsg.cpp2
-rw-r--r--externals/grill/flext/source/flstk.h2
-rw-r--r--externals/grill/flext/source/flsupport.h26
-rwxr-xr-xexternals/grill/flext/tutorial/adv1/adv1.cwbin102477 -> 102477 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/adv2/adv2.cwbin101183 -> 101183 bytes
-rw-r--r--externals/grill/flext/tutorial/adv2/main.cpp4
-rwxr-xr-xexternals/grill/flext/tutorial/adv3/adv3.cwbin101183 -> 101183 bytes
-rw-r--r--externals/grill/flext/tutorial/adv3/main.cpp12
-rwxr-xr-xexternals/grill/flext/tutorial/attr1/attr1.cwbin101183 -> 101183 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/attr2/attr2.cwbin101183 -> 101183 bytes
-rw-r--r--externals/grill/flext/tutorial/attr2/main.cpp4
-rwxr-xr-xexternals/grill/flext/tutorial/attr3/attr3.cwbin101183 -> 101183 bytes
-rw-r--r--externals/grill/flext/tutorial/attr3/main.cpp2
-rw-r--r--externals/grill/flext/tutorial/config-pd-cygwin.txt4
-rw-r--r--externals/grill/flext/tutorial/config-pd-darwin.txt4
-rwxr-xr-xexternals/grill/flext/tutorial/lib1/lib1.cwbin101183 -> 101183 bytes
-rw-r--r--externals/grill/flext/tutorial/makefile.pd-cygwin3
-rw-r--r--externals/grill/flext/tutorial/makefile.pd-darwin2
-rw-r--r--externals/grill/flext/tutorial/makefile.pd-linux4
-rwxr-xr-xexternals/grill/flext/tutorial/maxmsp/ex-adv1bin535 -> 540 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/maxmsp/ex-adv2bin0 -> 726 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/maxmsp/ex-adv3bin0 -> 801 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/maxmsp/ex-attr2bin1384 -> 1389 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/maxmsp/ex-attr3bin0 -> 1358 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/maxmsp/ex-simple3bin657 -> 662 bytes
-rw-r--r--externals/grill/flext/tutorial/pd/ex-adv1.pd45
-rw-r--r--externals/grill/flext/tutorial/pd/ex-adv3.pd80
-rw-r--r--externals/grill/flext/tutorial/pd/ex-attr2.pd20
-rw-r--r--externals/grill/flext/tutorial/pd/ex-attr3.pd52
-rw-r--r--externals/grill/flext/tutorial/pd/ex-simple1.pd32
-rw-r--r--externals/grill/flext/tutorial/pd/ex-simple2.pd42
-rw-r--r--externals/grill/flext/tutorial/pd/ex-simple3.pd44
-rw-r--r--externals/grill/flext/tutorial/pd/ex-thread1.pd86
-rw-r--r--externals/grill/flext/tutorial/pd/ex-thread2.pd94
-rw-r--r--externals/grill/flext/tutorial/readme.txt17
-rw-r--r--externals/grill/flext/tutorial/signal1/signal1.cwbin101183 -> 101183 bytes
-rw-r--r--externals/grill/flext/tutorial/signal2/signal2.cwbin101183 -> 101183 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/simple1/simple1.cwbin101183 -> 101183 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/simple2/simple2.cwbin101183 -> 101183 bytes
-rw-r--r--externals/grill/flext/tutorial/simple3/simple3.cwbin101183 -> 101183 bytes
-rw-r--r--externals/grill/flext/tutorial/thread1/thread1.cwbin68426 -> 68426 bytes
-rwxr-xr-xexternals/grill/flext/tutorial/thread2/thread2.cwbin68426 -> 68426 bytes
59 files changed, 502 insertions, 409 deletions
diff --git a/externals/grill/flext/flext.cw b/externals/grill/flext/flext.cw
index 6e5f4625..e3b996b4 100644
--- a/externals/grill/flext/flext.cw
+++ b/externals/grill/flext/flext.cw
Binary files differ
diff --git a/externals/grill/flext/flext.doxy b/externals/grill/flext/flext.doxy
index a1aa48f9..7e9dbdb0 100644
--- a/externals/grill/flext/flext.doxy
+++ b/externals/grill/flext/flext.doxy
@@ -163,7 +163,8 @@ PREDEFINED = FLEXT_THREADS \
MAXMSP \
NT \
PD \
- unix
+ unix \
+ FLEXT_ATTRIBUTES
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
diff --git a/externals/grill/flext/makefile.pd-cygwin b/externals/grill/flext/makefile.pd-cygwin
index 31cce707..3cfb7129 100644
--- a/externals/grill/flext/makefile.pd-cygwin
+++ b/externals/grill/flext/makefile.pd-cygwin
@@ -17,10 +17,11 @@ include $(CONFIG)
# compiler+linker stuff
-INCLUDES=$(PDPATH)/src $(SNDOBJ)
+INCLUDES=$(PDPATH)/src
FLAGS=-DFLEXT_SYS=2
-CFLAGS=-O6 -mcpu=pentiumpro
-CFLAGS_D=-mcpu=pentiumpro -g
+CFLAGS=-O6 -fno-exceptions -fno-rtti
+CFLAGS+=-mcpu=pentium3 -msse # cygwin gcc 3.2
+CFLAGS_D=-g
CFLAGS_T=-DFLEXT_THREADS
LIBS=
@@ -36,11 +37,15 @@ NAME=flext
include make-files.txt
ifdef SNDOBJ
-_SRCS=$(SRCS) $(SRCS_SNDOBJ)
-_HDRS=$(HDRS) $(HDRS_SNDOBJ)
-else
-_SRCS=$(SRCS)
-_HDRS=$(HDRS)
+INCLUDES+=$(SNDOBJ)
+SRCS+=$(SRCS_SNDOBJ)
+HDRS+=$(HDRS_SNDOBJ)
+endif
+
+ifdef STK
+INCLUDES+=$(STK)
+SRCS+=$(SRCS_STK)
+HDRS+=$(HDRS_STK)
endif
MAKEFILE=makefile.pd-cygwin
@@ -54,7 +59,7 @@ all: $(TARGDIR) $(TARGET) $(TARGET_D) # $(TARGET_T) $(TARGET_TD)
$(TARGDIR):
-mkdir $(TARGDIR)
-$(SRCS): $(_HDRS) $(IHDRS) $(MAKEFILE) $(CONFIG)
+$(SRCS): $(HDRS) $(IHDRS) $(MAKEFILE) $(CONFIG)
touch $@
$(TARGDIR)/%.o : source/%.cpp
@@ -69,19 +74,19 @@ $(TARGDIR)/%.to : source/%.cpp
$(TARGDIR)/%.tdo : source/%.cpp
$(CXX) -c $(CFLAGS_D) $(CFLAGS_T) $(FLAGS) $(patsubst %,-I%,$(INCLUDES) source) $< -o $@
-$(TARGET) : $(patsubst %.cpp,$(TARGDIR)/%.o,$(_SRCS))
+$(TARGET) : $(patsubst %.cpp,$(TARGDIR)/%.o,$(SRCS))
ar rc $@ $^
chmod 755 $@
-$(TARGET_D) : $(patsubst %.cpp,$(TARGDIR)/%.do,$(_SRCS))
+$(TARGET_D) : $(patsubst %.cpp,$(TARGDIR)/%.do,$(SRCS))
ar rc $@ $^
chmod 755 $@
-$(TARGET_T) : $(patsubst %.cpp,$(TARGDIR)/%.to,$(_SRCS))
+$(TARGET_T) : $(patsubst %.cpp,$(TARGDIR)/%.to,$(SRCS))
ar rc $@ $^
chmod 755 $@
-$(TARGET_TD) : $(patsubst %.cpp,$(TARGDIR)/%.tdo,$(_SRCS))
+$(TARGET_TD) : $(patsubst %.cpp,$(TARGDIR)/%.tdo,$(SRCS))
ar rc $@ $^
chmod 755 $@
@@ -96,7 +101,7 @@ $(INSTDIR):
install:: $(INSTDIR)
endif
-install:: $(TARGET) $(TARGET_D) $(patsubst %,source/%,$(_HDRS)) # $(TARGET_T) $(TARGET_TD)
+install:: $(TARGET) $(TARGET_D) $(patsubst %,source/%,$(HDRS)) # $(TARGET_T) $(TARGET_TD)
cp $^ $(INSTDIR)
diff --git a/externals/grill/flext/makefile.pd-darwin b/externals/grill/flext/makefile.pd-darwin
index 89b77f00..d17e0774 100644
--- a/externals/grill/flext/makefile.pd-darwin
+++ b/externals/grill/flext/makefile.pd-darwin
@@ -15,7 +15,7 @@ include $(CONFIG)
# compiler+linker stuff
INCLUDES=$(PDPATH) $(SNDOBJ)
FLAGS=-DFLEXT_SYS=2 -Wno-unused -Wno-parentheses -Wno-switch -Wstrict-prototypes # -maltivec
-CFLAGS=-O6
+CFLAGS=-O6 -fno-exceptions -fno-rtti
CFLAGS_D=-g -Wshadow
CFLAGS_T=-DFLEXT_THREADS
LIBS=
diff --git a/externals/grill/flext/makefile.pd-linux b/externals/grill/flext/makefile.pd-linux
index 1230c332..c003e9e1 100644
--- a/externals/grill/flext/makefile.pd-linux
+++ b/externals/grill/flext/makefile.pd-linux
@@ -15,7 +15,9 @@ include $(CONFIG)
# compiler+linker stuff
INCLUDES=$(PDPATH) $(SNDOBJ) $(STK)
FLAGS=-DFLEXT_SYS=2
-CFLAGS=-O6 -mcpu=pentiumpro
+CFLAGS=-O6 -fno-exceptions -fno-rtti
+CFLAGS+=-mcpu=pentiumpro # gcc 2.95
+# CFLAGS+=-mcpu=pentium3 -msse # gcc 3.2
CFLAGS_D=-mcpu=pentiumpro -g
CFLAGS_T=-DFLEXT_THREADS
LIBS=
diff --git a/externals/grill/flext/readme.txt b/externals/grill/flext/readme.txt
index 64e3cc31..1e566d19 100644
--- a/externals/grill/flext/readme.txt
+++ b/externals/grill/flext/readme.txt
@@ -29,7 +29,7 @@ Package files:
- flbuf.cpp: buffer object handling for base classes
- fllib.cpp: code for handling external libraries in MaxMSP
- fldefs.h: definitions for internal flext use
-- flcwmax.h: trivial prefix header file for Max/MSP CodeWarrior projects
+- flcwmax*.h: trivial prefix headers for Max/MSP CodeWarrior projects
- flmspbuffer.h: MaxMSP's inofficial buffer.h included here for conveniance
> for PD you need the pd source code (which is most likely part of the distribution)
@@ -38,6 +38,9 @@ Package files:
> 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/
+
----------------------------------------------------------------------------
The package should at least compile (and is tested) with the following compilers:
@@ -70,12 +73,22 @@ Be sure to define "FLEXT_SYS=1" - alternatively use the prefix file "flcwmax.h"
o Metrowerks CodeWarrior V6: edit & use the "flext.cw" project file
+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:
------------------
Be sure to define "FLEXT_SYS=1" - alternatively use the prefix file "flcwmax-x.h" or "flcwmax-x-thr.h" for threading support.
o Metrowerks CodeWarrior V6: edit & use the "flext.cw" project file
+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)
+
----------------------------------------------------------------------------
Goals/features of the package:
@@ -102,6 +115,8 @@ Version history:
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
diff --git a/externals/grill/flext/source/flattr.cpp b/externals/grill/flext/source/flattr.cpp
index 3a898498..014ffdcb 100644
--- a/externals/grill/flext/source/flattr.cpp
+++ b/externals/grill/flext/source/flattr.cpp
@@ -88,7 +88,7 @@ void flext_base::AddAttrib(const char *attr,metharg tp,methfun gfun,methfun sfun
error("%s - attribute procession is not enabled!",thisName());
}
-void flext_base::AddAttrib(t_class *c,const char *attr,metharg tp,methfun gfun,methfun sfun)
+void flext_base::AddAttrib(t_classid c,const char *attr,metharg tp,methfun gfun,methfun sfun)
{
AddAttrib(ClAttrs(c),ClMeths(c),attr,tp,gfun,sfun);
}
@@ -106,9 +106,9 @@ int flext_base::ListAttr(AtomList &la) const
for(int ai = 0; ai < a->Size(); ++ai) {
for(item *l = a->Item(ai); l; l = l->nxt)
{
- attritem *a = (attritem *)l;
- if(!a->BothExist() || a->IsGet())
- SetSymbol(la[ix++],a->tag);
+ attritem *aa = (attritem *)l;
+ if(!aa->BothExist() || aa->IsGet())
+ SetSymbol(la[ix++],aa->tag);
}
}
}
diff --git a/externals/grill/flext/source/flbase.h b/externals/grill/flext/source/flbase.h
index e89dd032..78e4818c 100644
--- a/externals/grill/flext/source/flbase.h
+++ b/externals/grill/flext/source/flbase.h
@@ -145,12 +145,27 @@ class FLEXT_SHARE flext_obj:
//! Get the class name (as a symbol)
const t_symbol *thisNameSym() const { return m_name; }
+
#if FLEXT_SYS == FLEXT_SYS_PD
//! Get the class pointer
- t_class *thisClass() { return (t_class *)((t_object *)(x_obj))->te_g.g_pd; }
+ t_class *thisClass() const { return (t_class *)((t_object *)(x_obj))->te_g.g_pd; }
+
+ //! Typedef for unique class identifier
+ typedef t_class *t_classid;
+ //! Get unique id for object class
+ t_classid thisClassId() const { return thisClass(); }
+ //! Get class pointer from class id
+ static t_class *getClass(t_classid c) { return c; }
#elif FLEXT_SYS == FLEXT_SYS_MAX
//! Get the class pointer
- t_class *thisClass() { return (t_class *)(((t_tinyobject *)x_obj)->t_messlist-1); }
+ t_class *thisClass() const { return (t_class *)(((t_tinyobject *)x_obj)->t_messlist-1); }
+
+ //! Typedef for unique class identifier
+ typedef void *t_classid;
+ //! Get unique id for object class (for Max/MSP library object share the same (t_class *)!)
+ t_classid thisClassId() const;
+ //! Get class pointer from class id
+ static t_class *getClass(t_classid);
#endif
//! @} FLEXT_O_INFO
@@ -201,7 +216,7 @@ class FLEXT_SHARE flext_obj:
public:
//! Creation callback
- static void __setup__(t_class *) { flext::Setup(); }
+ static void __setup__(t_classid) { flext::Setup(); }
/*! \brief This is a temporary holder
\warning don't touch it!
@@ -223,7 +238,7 @@ class FLEXT_SHARE flext_obj:
// Definitions for library objects
static void lib_init(const char *name,void setupfun(),bool attr);
- static void obj_add(bool lib,bool dsp,bool attr,const char *idname,const char *names,void setupfun(t_class *),flext_obj *(*newfun)(int,t_atom *),void (*freefun)(flext_hdr *),int argtp1,...);
+ static void obj_add(bool lib,bool dsp,bool attr,const char *idname,const char *names,void setupfun(t_classid),flext_obj *(*newfun)(int,t_atom *),void (*freefun)(flext_hdr *),int argtp1,...);
static flext_hdr *obj_new(const t_symbol *s,int argc,t_atom *argv);
static void obj_free(flext_hdr *o);
@@ -272,8 +287,8 @@ static flext_obj *__init__(int argc,t_atom *argv); \
static void __free__(flext_hdr *hdr) \
{ flext_obj *mydata = hdr->data; delete mydata; \
hdr->flext_hdr::~flext_hdr(); } \
-static void __setup__(t_class *classPtr) { \
- PARENT_CLASS::__setup__(classPtr); } \
+static void __setup__(t_classid classid) { \
+ PARENT_CLASS::__setup__(classid); } \
protected: \
static inline NEW_CLASS *thisObject(void *c) { return FLEXT_CAST<NEW_CLASS *>(((flext_hdr *)c)->data); }
@@ -285,9 +300,9 @@ static flext_obj *__init__(int argc,t_atom *argv); \
static void __free__(flext_hdr *hdr) \
{ flext_obj *mydata = hdr->data; delete mydata; \
hdr->flext_hdr::~flext_hdr(); } \
-static void __setup__(t_class *classPtr) \
-{ PARENT_CLASS::__setup__(classPtr); \
- NEW_CLASS::SETUPFUN(classPtr); } \
+static void __setup__(t_classid classid) \
+{ PARENT_CLASS::__setup__(classid); \
+ NEW_CLASS::SETUPFUN(classid); } \
protected: \
static inline NEW_CLASS *thisObject(void *c) { return FLEXT_CAST<NEW_CLASS *>(((flext_hdr *)c)->data); }
diff --git a/externals/grill/flext/source/flclass.h b/externals/grill/flext/source/flclass.h
index 87e0a154..33c125f0 100644
--- a/externals/grill/flext/source/flclass.h
+++ b/externals/grill/flext/source/flclass.h
@@ -350,33 +350,33 @@ public:
@{
*/
- static void AddMethod(t_class *c,int inlet,bool (*m)(flext_base *,int,t_atom *)) { AddMethod(ClMeths(c),inlet,"list",(methfun)m,a_list,a_null); }
- static void AddMethod(t_class *c,int inlet,bool (*m)(flext_base *,int,const t_atom *)) { AddMethod(ClMeths(c),inlet,"list",(methfun)m,a_list,a_null); }
- static void AddMethod(t_class *c,int inlet,const char *tag,bool (*m)(flext_base *)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_null); } // pure method
- static void AddMethod(t_class *c,int inlet,bool (*m)(flext_base *,t_symbol *,int,t_atom *)) { AddMethod(ClMeths(c),inlet,"anything",(methfun)m,a_any,a_null); } // anything
- static void AddMethod(t_class *c,int inlet,bool (*m)(flext_base *,const t_symbol *,int,const t_atom *)) { AddMethod(ClMeths(c),inlet,"anything",(methfun)m,a_any,a_null); } // anything
- static void AddMethod(t_class *c,int inlet,bool (*m)(flext_base *,t_symbol *&)) { AddMethod(ClMeths(c),inlet,"symbol",(methfun)m,a_symbol,a_null); } // single symbol
- static void AddMethod(t_class *c,int inlet,bool (*m)(flext_base *,const t_symbol *&)) { AddMethod(ClMeths(c),inlet,"symbol",(methfun)m,a_symbol,a_null); } // single symbol
- static void AddMethod(t_class *c,int inlet,bool (*m)(flext_base *,float &)) { AddMethod(ClMeths(c),inlet,"float",(methfun)m,a_float,a_null); } // single float
- static void AddMethod(t_class *c,int inlet,bool (*m)(flext_base *,float &,float &)) { AddMethod(ClMeths(c),inlet,"list",(methfun)m,a_float,a_float,a_null); } // list of 2 floats
- static void AddMethod(t_class *c,int inlet,bool (*m)(flext_base *,float &,float &,float &)) { AddMethod(ClMeths(c),inlet,"list",(methfun)m,a_float,a_float,a_float,a_null); } // list of 3 floats
+ static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,int,t_atom *)) { AddMethod(ClMeths(c),inlet,"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,"list",(methfun)m,a_list,a_null); }
+ static void AddMethod(t_classid c,int inlet,const char *tag,bool (*m)(flext_base *)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_null); } // pure method
+ static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,t_symbol *,int,t_atom *)) { AddMethod(ClMeths(c),inlet,"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,"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,"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,"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,"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,"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,"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_class *c,int inlet,bool (*m)(flext_base *,int &)) { AddMethod(ClMeths(c),inlet,"float",(methfun)m,a_int,a_null); } // single float
+ static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,int &)) { AddMethod(ClMeths(c),inlet,"float",(methfun)m,a_int,a_null); } // single float
#elif FLEXT_SYS == FLEXT_SYS_MAX
- static void AddMethod(t_class *c,int inlet,bool (*m)(flext_base *,int &)) { AddMethod(ClMeths(c),inlet,"int",(methfun)m,a_int,a_null); } // single float
+ static void AddMethod(t_classid c,int inlet,bool (*m)(flext_base *,int &)) { AddMethod(ClMeths(c),inlet,"int",(methfun)m,a_int,a_null); } // single float
#else
#error
#endif
- static void AddMethod(t_class *c,int inlet,bool (*m)(flext_base *,int &,int &)) { AddMethod(ClMeths(c),inlet,"list",(methfun)m,a_int,a_int,a_null); } // list of 2 floats
- static void AddMethod(t_class *c,int inlet,bool (*m)(flext_base *,int &,int &,int &)) { AddMethod(ClMeths(c),inlet,"list",(methfun)m,a_int,a_int,a_int,a_null); } // list of 3 floats
- static void AddMethod(t_class *c,int inlet,const char *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_class *c,int inlet,const char *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_class *c,int inlet,const char *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_class *c,int inlet,const char *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_class *c,int inlet,const char *tag,bool (*m)(flext_base *,t_symbol *&)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_symbol,a_null); } // method+symbol
- static void AddMethod(t_class *c,int inlet,const char *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_class *c,int inlet,const char *tag,bool (*m)(flext_base *,float &)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_float,a_null); } // method+float
- static void AddMethod(t_class *c,int inlet,const char *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,bool (*m)(flext_base *,int &,int &)) { AddMethod(ClMeths(c),inlet,"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,"list",(methfun)m,a_int,a_int,a_int,a_null); } // list of 3 floats
+ static void AddMethod(t_classid c,int inlet,const char *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 char *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 char *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 char *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 char *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 char *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 char *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 char *tag,bool (*m)(flext_base *,int &)) { AddMethod(ClMeths(c),inlet,tag,(methfun)m,a_int,a_null); } // method+int
//! @} FLEXT_C_CADDMETHOD
@@ -482,12 +482,12 @@ protected:
@{
*/
- static void AddAttrib(t_class *c,const char *attr,bool (*get)(flext_base *,float &),bool (*set)(flext_base *,float &)) { AddAttrib(c,attr,a_float,(methfun)get,(methfun)set); }
- static void AddAttrib(t_class *c,const char *attr,bool (*get)(flext_base *,int &),bool (*set)(flext_base *,int &)) { AddAttrib(c,attr,a_int,(methfun)get,(methfun)set); }
- static void AddAttrib(t_class *c,const char *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_class *c,const char *attr,bool (*get)(flext_base *,t_symbol *&),bool (*set)(flext_base *,t_symbol *&)) { AddAttrib(c,attr,a_symbol,(methfun)get,(methfun)set); }
- static void AddAttrib(t_class *c,const char *attr,bool (*get)(flext_base *,AtomList *&),bool (*set)(flext_base *,AtomList *&)) { AddAttrib(c,attr,a_LIST,(methfun)get,(methfun)set); }
- static void AddAttrib(t_class *c,const char *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,attr,a_float,(methfun)get,(methfun)set); }
+ static void AddAttrib(t_classid c,const char *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 char *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 char *attr,bool (*get)(flext_base *,t_symbol *&),bool (*set)(flext_base *,t_symbol *&)) { AddAttrib(c,attr,a_symbol,(methfun)get,(methfun)set); }
+ static void AddAttrib(t_classid c,const char *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 char *attr,bool (*get)(flext_base *,AtomAnything *&),bool (*set)(flext_base *,AtomAnything *&)) { AddAttrib(c,attr,a_ANY,(methfun)get,(methfun)set); }
//! @} FLEXT_C_CATTR
@@ -601,20 +601,20 @@ protected:
//! @} FLEXT_CLASS
itemarr *ThMeths() { return methhead; }
- static itemarr *ClMeths(t_class *c) { return GetClassArr(c,0); }
+ static itemarr *ClMeths(t_classid c) { return GetClassArr(c,0); }
static void AddMethod(itemarr *ma,int inlet,const char *tag,methfun fun,metharg tp,...);
itemarr *ThAttrs() { return attrhead; }
- static itemarr *ClAttrs(t_class *c) { return GetClassArr(c,1); }
+ static itemarr *ClAttrs(t_classid c) { return GetClassArr(c,1); }
static void AddAttrib(itemarr *aa,itemarr *ma,const char *attr,metharg tp,methfun gfun,methfun sfun);
void AddAttrib(const char *attr,metharg tp,methfun gfun,methfun sfun);
- static void AddAttrib(t_class *c,const char *attr,metharg tp,methfun gfun,methfun sfun);
+ static void AddAttrib(t_classid c,const char *attr,metharg tp,methfun gfun,methfun sfun);
private:
- static void Setup(t_class *c);
+ static void Setup(t_classid c);
xlet *inlist,*outlist;
const t_symbol *curtag;
@@ -644,7 +644,7 @@ private:
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 &);
- static itemarr *GetClassArr(t_class *c,int ix);
+ static itemarr *GetClassArr(t_classid,int ix);
itemarr *methhead,*clmethhead;
@@ -663,14 +663,11 @@ private:
bool InitAttrib(int argc,const t_atom *argv);
bool ListAttrib();
-// bool GetAttrib(const t_symbol *s);
bool GetAttrib(attritem *a);
bool SetAttrib(const t_symbol *s,int argc,const t_atom *argv);
bool SetAttrib(attritem *a,int argc,const t_atom *argv);
static bool cb_ListAttrib(flext_base *c) { return c->ListAttrib(); }
-// static bool cb_GetAttrib(flext_base *c,const t_symbol *s,int argc,const t_atom *argv) { return c->GetAttrib(s,argc,argv); }
-// static bool cb_SetAttrib(flext_base *c,const t_symbol *s,int argc,const t_atom *argv) { return c->SetAttrib(s,argc,argv); }
// queue stuff
diff --git a/externals/grill/flext/source/fldefs.h b/externals/grill/flext/source/fldefs.h
index 55922a2b..dc99a2e7 100644
--- a/externals/grill/flext/source/fldefs.h
+++ b/externals/grill/flext/source/fldefs.h
@@ -252,7 +252,9 @@ REAL_NEW_3(NAME,NEW_CLASS, 1,1, TYPE1, TYPE2, TYPE3)
// deprecated stuff
/*! \defgroup FLEXT_D_DEPRECATED Deprecated definitions
+ \deprecated
@{
+*/
#define FLEXT_NEW_G FLEXT_NEW_V
@@ -270,7 +272,6 @@ REAL_NEW_3(NAME,NEW_CLASS, 1,1, TYPE1, TYPE2, TYPE3)
#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
@@ -771,10 +772,8 @@ AddMethod(IX,"bang",FLEXT_CALL_PRE(M_FUN))
#define FLEXT_ADDMETHOD(IX,M_FUN) \
AddMethod(IX,FLEXT_CALL_PRE(M_FUN))
-#if 0
-// FLEXT_ADDMETHOD_V and FLEXT_ADDMETHOD_A definitions obscure that _ indicates the usage of a message tag
-
/*! \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) \
@@ -782,12 +781,12 @@ AddMethod(IX,FLEXT_CALL_PRE(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))
-#endif
//! Add a a handler for a tagged method with implicit arguments
#define FLEXT_ADDMETHOD_(IX,M_TAG,M_FUN) \
diff --git a/externals/grill/flext/source/fldoxygen.h b/externals/grill/flext/source/fldoxygen.h
index 03ac7e0b..0c515031 100644
--- a/externals/grill/flext/source/fldoxygen.h
+++ b/externals/grill/flext/source/fldoxygen.h
@@ -198,7 +198,7 @@ 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 "\ref modules" link at the top of the page leads to a complete reference
+The "modules" link at the top of the page leads to a complete reference
of flext functions and classes.
*/
diff --git a/externals/grill/flext/source/fldsp.cpp b/externals/grill/flext/source/fldsp.cpp
index 3d7b723c..03492ce0 100644
--- a/externals/grill/flext/source/fldsp.cpp
+++ b/externals/grill/flext/source/fldsp.cpp
@@ -20,8 +20,10 @@ WARRANTIES, see the file, "license.txt," in this distribution.
// === flext_dsp ==============================================
-void flext_dsp::Setup(t_class *c)
+void flext_dsp::Setup(t_classid id)
{
+ t_class *c = getClass(id);
+
#if FLEXT_SYS == FLEXT_SYS_MAX
// dsp_initclass();
dsp_initboxclass();
diff --git a/externals/grill/flext/source/fldsp.h b/externals/grill/flext/source/fldsp.h
index da686ce7..b0cb7f01 100644
--- a/externals/grill/flext/source/fldsp.h
+++ b/externals/grill/flext/source/fldsp.h
@@ -137,7 +137,7 @@ private:
int chnsin,chnsout;
// setup function
- static void Setup(t_class *c);
+ static void Setup(t_classid c);
// callback functions
diff --git a/externals/grill/flext/source/flext.cpp b/externals/grill/flext/source/flext.cpp
index 13ed9c48..c13d8732 100644
--- a/externals/grill/flext/source/flext.cpp
+++ b/externals/grill/flext/source/flext.cpp
@@ -27,8 +27,8 @@ flext_base::flext_base():
insigs(0),outsigs(0),
outlets(NULL),outattr(NULL),
distmsgs(false),
- methhead(new itemarr),attrhead(new itemarr), //attrcnt(0),
- clmethhead(ClMeths(thisClass())),clattrhead(ClAttrs(thisClass())),
+ methhead(new itemarr),attrhead(new itemarr),
+ clmethhead(ClMeths(thisClassId())),clattrhead(ClAttrs(thisClassId())),
inlets(NULL)
#if FLEXT_SYS == FLEXT_SYS_MAX
,indesc(NULL),outdesc(NULL)
@@ -125,8 +125,10 @@ bool flext_base::Init()
/*! 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_class *c)
+void flext_base::Setup(t_classid id)
{
+ t_class *c = getClass(id);
+
add_method(c,cb_help,"help");
add_loadbang(c,cb_loadbang);
#if FLEXT_SYS == FLEXT_SYS_MAX
@@ -134,7 +136,7 @@ void flext_base::Setup(t_class *c)
#endif
if(process_attributes)
- AddMethod(c,0,"getattributes",(methfun)cb_ListAttrib);
+ AddMethod(id,0,"getattributes",(methfun)cb_ListAttrib);
SetProxies(c);
diff --git a/externals/grill/flext/source/flext.h b/externals/grill/flext/source/flext.h
index aef173e7..8f1a71ce 100644
--- a/externals/grill/flext/source/flext.h
+++ b/externals/grill/flext/source/flext.h
@@ -26,7 +26,7 @@ WARRANTIES, see the file, "license.txt," in this distribution.
#define FLEXT_VERSION 401
//! \brief flext version string
-#define FLEXT_VERSTR "0.4.1pre"
+#define FLEXT_VERSTR "0.4.1"
//! @}
diff --git a/externals/grill/flext/source/flitem.cpp b/externals/grill/flext/source/flitem.cpp
index 70ea41f7..271745df 100755
--- a/externals/grill/flext/source/flitem.cpp
+++ b/externals/grill/flext/source/flitem.cpp
@@ -30,10 +30,12 @@ flext_base::itemarr::itemarr():
arr(new item *[2]),cnt(0),bits(-1)
{
arr[0] = arr[1] = NULL;
+// post("NEWARR %p",this);
}
flext_base::itemarr::~itemarr()
{
+// post("DELARR %p",this);
int c = Ready()?Size():2;
for(int i = 0; i < c; ++i)
@@ -54,9 +56,11 @@ void flext_base::itemarr::Add(item *it)
a->nxt = it;
}
else arr[ix] = it;
+
+// post("RDY inlet=%i,tag=%s,hash=%i",it->inlet,GetString(it->tag),ix);
}
else {
-// post("ADD %i,%s",it->inlet,GetString(it->tag));
+// post("ADD index=%i,inlet=%i,tag=%s",cnt,it->inlet,GetString(it->tag));
if(arr[0]) arr[1] = arr[1]->nxt = it;
else arr[0] = arr[1] = it;
@@ -70,6 +74,8 @@ void flext_base::itemarr::Finalize()
{
bits = Int2Bits(cnt); // at least enough bits to hold all items
+// post("This=%p, Count %i, Bits %i",this,cnt,bits);
+
int sz = Size();
// save stored item list
@@ -85,20 +91,6 @@ void flext_base::itemarr::Finalize()
l->nxt = NULL;
Add(l);
-/*
- // retrieve array index
- int ix = Hash(l->tag,l->inlet,bits);
-
-// post("ADD %i,%s -> index %i",l->inlet,GetString(l->tag),ix);
-
- // add to array slot
- if(arr[ix]) {
- item *a = arr[ix];
- while(a->nxt) a = a->nxt;
- a->nxt = l;
- }
- else arr[ix] = l;
-*/
}
#if 0
@@ -126,9 +118,11 @@ flext_base::item *flext_base::itemarr::Find(const t_symbol *tag,int inlet) const
else if(Count()) {
int ix = Hash(tag,inlet,bits);
a = arr[ix];
+// post("FIND tag=%s inlet=%i hash=%i p=%p",GetString(tag),inlet,ix,a);
}
else
a = NULL;
+
// Search first matching entry
while(a && (a->tag != tag || a->inlet != inlet)) a = a->nxt;
@@ -148,23 +142,23 @@ class _itemarr
public:
enum { HASHBITS=7, HASHSIZE=1<<HASHBITS };
- _itemarr(t_class *c,int i);
+ _itemarr(flext_obj::t_classid c,int i);
~_itemarr(); // will never be called
- static int Hash(t_class *c,int ix);
+ static int Hash(flext_obj::t_classid c,int ix);
- int Hash() const { return Hash(cl,ix); }
+ int Hash() const { return Hash(clid,ix); }
void Add(_itemarr *a);
- t_class *cl;
+ flext_obj::t_classid clid;
int ix;
flext_base::itemarr *arr;
_itemarr *nxt;
};
-_itemarr::_itemarr(t_class *c,int i):
- cl(c),ix(i),
+_itemarr::_itemarr(flext_obj::t_classid c,int i):
+ clid(c),ix(i),
arr(new flext_base::itemarr),
nxt(NULL)
{}
@@ -175,7 +169,7 @@ void _itemarr::Add(_itemarr *a)
else nxt = a;
}
-int _itemarr::Hash(t_class *c,int ix)
+int _itemarr::Hash(flext_obj::t_classid c,int ix)
{
unsigned long h = (reinterpret_cast<unsigned long>(c)&~3L)+ix;
return flext::FoldBits(h,HASHBITS);
@@ -183,7 +177,7 @@ int _itemarr::Hash(t_class *c,int ix)
static _itemarr **_arrs = NULL;
-flext_base::itemarr *flext_base::GetClassArr(t_class *c,int ix)
+flext_base::itemarr *flext_base::GetClassArr(t_classid c,int ix)
{
if(!_arrs) {
_arrs = new _itemarr *[_itemarr::HASHSIZE];
@@ -193,7 +187,9 @@ flext_base::itemarr *flext_base::GetClassArr(t_class *c,int ix)
int hash = _itemarr::Hash(c,ix);
_itemarr *a = _arrs[hash];
_itemarr *pa = NULL;
- while(a && (a->cl != c || a->ix != ix)) pa = a,a = a->nxt;
+ while(a && (a->clid != c || a->ix != ix)) pa = a,a = a->nxt;
+
+// post("GETARR classid=%p ix=%i -> hash=%i,arr=%p",c,ix,hash,a?a->arr:NULL);
if(!a) {
a = new _itemarr(c,ix);
diff --git a/externals/grill/flext/source/fllib.cpp b/externals/grill/flext/source/fllib.cpp
index 315d4eda..cd0c65d9 100755
--- a/externals/grill/flext/source/fllib.cpp
+++ b/externals/grill/flext/source/fllib.cpp
@@ -123,41 +123,70 @@ libobject::libobject(t_class *&cl,flext_obj *(*newf)(int,t_atom *),void (*freef)
// it will never be destroyed
class libname {
public:
- libname(const t_symbol *n,libobject *o): name(n),obj(o),nxt(NULL) {}
-
const t_symbol *name;
libobject *obj;
static void add(libname *n);
- static libname *find(const t_symbol *s);
+ static libname *Find(const t_symbol *s,libobject *o = NULL);
protected:
+ libname(const t_symbol *n,libobject *o): name(n),obj(o),nxt(NULL) {}
+
+ static int Hash(const t_symbol *s);
+ int Hash() const { return Hash(name); }
+
+ enum { HASHBITS=7, HASHSIZE=1<<HASHBITS };
+
libname *nxt;
- void addrec(libname *n);
- static libname *root;
+ void Add(libname *n);
+
+ static libname **root;
};
-void libname::addrec(libname *n) { if(nxt) nxt->addrec(n); else nxt = n; }
+libname **libname::root = NULL;
+
-libname *libname::root = NULL;
+void libname::Add(libname *n) { if(nxt) nxt->Add(n); else nxt = n; }
-void libname::add(libname *l) {
- if(root) root->addrec(l);
- else root = l;
+int libname::Hash(const t_symbol *s)
+{
+ return flext::FoldBits(reinterpret_cast<unsigned long>(s),HASHBITS);
}
-libname *libname::find(const t_symbol *s) {
- libname *l;
- for(l = root; l; l = l->nxt)
- if(s == l->name) break;
- return l;
+libname *libname::Find(const t_symbol *s,libobject *o)
+{
+ if(!root) {
+ root = new libname *[HASHSIZE];
+ memset(root,0,HASHSIZE*sizeof(*root));
+ }
+
+ int hash = Hash(s);
+ libname *a = root[hash];
+ libname *pa = NULL;
+ while(a && a->name != s) pa = a,a = a->nxt;
+
+ if(!a && o) {
+ a = new libname(s,o);
+ if(pa)
+ // previous entry... extend
+ a->nxt = pa->nxt,pa->nxt = a;
+ else
+ // new singular entry
+ root[hash] = a;
+ }
+
+ return a;
}
+
// 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
#if FLEXT_SYS == FLEXT_SYS_MAX
static t_class *lib_class = NULL;
static const t_symbol *lib_name = NULL;
+
+flext_obj::t_classid flext_obj::thisClassId() const { return libname::Find(thisNameSym())->obj; }
+t_class *flext_obj::getClass(t_classid id) { return reinterpret_cast<libobject *>(id)->clss; }
#endif
void flext_obj::lib_init(const char *name,void setupfun(),bool attr)
@@ -173,7 +202,7 @@ void flext_obj::lib_init(const char *name,void setupfun(),bool attr)
setupfun();
}
-void flext_obj::obj_add(bool lib,bool dsp,bool attr,const char *idname,const char *names,void setupfun(t_class *),flext_obj *(*newfun)(int,t_atom *),void (*freefun)(flext_hdr *),int argtp1,...)
+void flext_obj::obj_add(bool lib,bool dsp,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));
@@ -203,6 +232,8 @@ void flext_obj::obj_add(bool lib,bool dsp,bool attr,const char *idname,const cha
(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
@@ -214,6 +245,8 @@ void flext_obj::obj_add(bool lib,bool dsp,bool attr,const char *idname,const cha
lo->dsp = dsp;
lo->attr = process_attributes;
+// post("ADDCLASS %p -> LIBOBJ %p -> %p",*cl,lo,lo->clss);
+
// parse the argument type list and store it with the object
if(argtp1 == A_GIMME)
lo->argc = -1;
@@ -247,8 +280,7 @@ void flext_obj::obj_add(bool lib,bool dsp,bool attr,const char *idname,const cha
if(!c || !*c) break;
// add to name list
- libname *l = new libname(MakeSymbol(c),lo);
- libname::add(l);
+ libname *l = libname::Find(MakeSymbol(c),lo);
#if FLEXT_SYS == FLEXT_SYS_PD
if(ix > 0)
@@ -264,8 +296,16 @@ void flext_obj::obj_add(bool lib,bool dsp,bool attr,const char *idname,const cha
#endif
}
+ // get unique class id
+#if FLEXT_SYS == FLEXT_SYS_PD
+ t_classid clid = lo->clss;
+#else
+ // in Max/MSP the t_class *value can't be used because it's possible that's it's not yet set!!
+ t_classid clid = lo;
+#endif
+
// call class setup function
- setupfun(lo->clss);
+ setupfun(clid);
}
@@ -274,7 +314,7 @@ typedef flext_obj *(*libfun)(int,t_atom *);
flext_hdr *flext_obj::obj_new(const t_symbol *s,int _argc_,t_atom *argv)
{
flext_hdr *obj = NULL;
- libname *l = libname::find(s);
+ libname *l = libname::Find(s);
if(l) {
bool ok = true;
t_atom args[FLEXT_MAXNEWARGS];
@@ -322,13 +362,19 @@ flext_hdr *flext_obj::obj_new(const t_symbol *s,int _argc_,t_atom *argv)
}
if(ok) {
+ t_classid clid;
+
#if FLEXT_SYS == FLEXT_SYS_PD
+ clid = lo->clss;
obj = (flext_hdr *)::pd_new(lo->clss);
#elif FLEXT_SYS == FLEXT_SYS_MAX
+ clid = lo;
obj = (flext_hdr *)::newobject(lo->clss);
#else
#error
#endif
+// post("NEWINST CLID %p",clid);
+
flext_obj::m_holder = obj;
flext_obj::m_holdname = l->name;
flext_obj::m_holdattr = lo->attr;
@@ -386,7 +432,7 @@ flext_hdr *flext_obj::obj_new(const t_symbol *s,int _argc_,t_atom *argv)
void flext_obj::obj_free(flext_hdr *hdr)
{
const t_symbol *name = hdr->data->thisNameSym();
- libname *l = libname::find(name);
+ libname *l = libname::Find(name);
if(l) {
// call virtual exit function
diff --git a/externals/grill/flext/source/flmsg.cpp b/externals/grill/flext/source/flmsg.cpp
index 99eabc10..4a6e0c20 100755
--- a/externals/grill/flext/source/flmsg.cpp
+++ b/externals/grill/flext/source/flmsg.cpp
@@ -159,7 +159,7 @@ bool flext_base::m_methodmain(int inlet,const t_symbol *s,int argc,const t_atom
curtag = s;
- LOG3("methodmain inlet:%i args:%i symbol:%s",inlet,argc,s?GetString(s):"");
+// post("methodmain inlet:%i args:%i symbol:%s",inlet,argc,s?GetString(s):"");
bool ret = FindMeth(inlet,s,argc,argv);
if(ret) goto end;
diff --git a/externals/grill/flext/source/flstk.h b/externals/grill/flext/source/flstk.h
index 7311e032..11d8ec6b 100644
--- a/externals/grill/flext/source/flstk.h
+++ b/externals/grill/flext/source/flstk.h
@@ -11,7 +11,7 @@ WARRANTIES, see the file, "license.txt," in this distribution.
#ifndef __FLSTK_H
#define __FLSTK_H
-#include <flext.h>
+#include "flext.h"
#include <Stk.h>
class FLEXT_SHARE flext_stk:
diff --git a/externals/grill/flext/source/flsupport.h b/externals/grill/flext/source/flsupport.h
index 329c147f..060da5d9 100644
--- a/externals/grill/flext/source/flsupport.h
+++ b/externals/grill/flext/source/flsupport.h
@@ -157,6 +157,15 @@ public:
//! Sleep for an amount of time
static void Sleep(double s);
+
+ /*! \brief Fold value to a number of bits
+ \remark Good for hash generation
+ */
+ static int FoldBits(unsigned long h,int bits);
+
+ //! \brief How many bits are necessary to represent n
+ static int Int2Bits(unsigned long n);
+
//! @} FLEXT_S_UTIL
// --- various symbols --------------------------------------------
@@ -407,23 +416,6 @@ public:
//! @} FLEXT_S_ATOM
-// --- utilities ------------------------------------------------
-
- /*! \defgroup FLEXT_S_UTIL Flext utility functions
- @{
- */
-
- /*! \brief Fold value to a number of bits
- \remark Good for hash generation
- */
- static int FoldBits(unsigned long h,int bits);
-
- //! \brief How many bits are necessary to represent n
- static int Int2Bits(unsigned long n);
-
-//! @} FLEXT_S_UTIL
-
-
// --- clock stuff ------------------------------------------------
diff --git a/externals/grill/flext/tutorial/adv1/adv1.cw b/externals/grill/flext/tutorial/adv1/adv1.cw
index 69e479a1..7c6c1e33 100755
--- a/externals/grill/flext/tutorial/adv1/adv1.cw
+++ b/externals/grill/flext/tutorial/adv1/adv1.cw
Binary files differ
diff --git a/externals/grill/flext/tutorial/adv2/adv2.cw b/externals/grill/flext/tutorial/adv2/adv2.cw
index a0a68e0f..0e555e20 100755
--- a/externals/grill/flext/tutorial/adv2/adv2.cw
+++ b/externals/grill/flext/tutorial/adv2/adv2.cw
Binary files differ
diff --git a/externals/grill/flext/tutorial/adv2/main.cpp b/externals/grill/flext/tutorial/adv2/main.cpp
index 10322010..9174d3b1 100644
--- a/externals/grill/flext/tutorial/adv2/main.cpp
+++ b/externals/grill/flext/tutorial/adv2/main.cpp
@@ -44,7 +44,7 @@ protected:
private:
// define the _static_ class setup function
- static void setup(t_class *c);
+ static void setup(t_classid c);
FLEXT_CALLBACK(m_tag)
FLEXT_CALLBACK_I(m_tag_and_int)
@@ -61,7 +61,7 @@ adv2::adv2()
AddInAnything(); // add inlet of type anything (index 0)
}
-void adv2::setup(t_class *c)
+void adv2::setup(t_classid c)
{
// register methods:
// notice the naming FLEXT_CADD_METHOD* instead of FLEXT_ADD_METHOD*
diff --git a/externals/grill/flext/tutorial/adv3/adv3.cw b/externals/grill/flext/tutorial/adv3/adv3.cw
index dd30edd4..ed5e1110 100755
--- a/externals/grill/flext/tutorial/adv3/adv3.cw
+++ b/externals/grill/flext/tutorial/adv3/adv3.cw
Binary files differ
diff --git a/externals/grill/flext/tutorial/adv3/main.cpp b/externals/grill/flext/tutorial/adv3/main.cpp
index 78615172..608897e6 100644
--- a/externals/grill/flext/tutorial/adv3/main.cpp
+++ b/externals/grill/flext/tutorial/adv3/main.cpp
@@ -65,12 +65,12 @@ public:
i_count = i_down;
// --- define inlets and outlets ---
- AddInAnything(); // default inlet
- AddInList(); // inlet for bounds
- AddInInt(); // inlet for step size
+ AddInAnything("bang, reset, etc."); // default inlet
+ AddInList("bounds (2 element list)"); // inlet for bounds
+ AddInInt("step size"); // inlet for step size
- AddOutInt(); // outlet for integer count
- AddOutBang(); // outlet for bang
+ AddOutInt("counter"); // outlet for integer count
+ AddOutBang("overflow bang"); // outlet for bang
}
protected:
@@ -117,7 +117,7 @@ protected:
private:
- static void setup(t_class *c)
+ static void setup(t_classid c)
{
// --- set up methods (class scope) ---
diff --git a/externals/grill/flext/tutorial/attr1/attr1.cw b/externals/grill/flext/tutorial/attr1/attr1.cw
index 3b6f2334..cf880938 100755
--- a/externals/grill/flext/tutorial/attr1/attr1.cw
+++ b/externals/grill/flext/tutorial/attr1/attr1.cw
Binary files differ
diff --git a/externals/grill/flext/tutorial/attr2/attr2.cw b/externals/grill/flext/tutorial/attr2/attr2.cw
index 150ff981..05cd19b0 100755
--- a/externals/grill/flext/tutorial/attr2/attr2.cw
+++ b/externals/grill/flext/tutorial/attr2/attr2.cw
Binary files differ
diff --git a/externals/grill/flext/tutorial/attr2/main.cpp b/externals/grill/flext/tutorial/attr2/main.cpp
index f75ce412..fe61f6da 100644
--- a/externals/grill/flext/tutorial/attr2/main.cpp
+++ b/externals/grill/flext/tutorial/attr2/main.cpp
@@ -59,7 +59,7 @@ protected:
private:
- static void setup(t_class *);
+ static void setup(t_classid);
// callback for method "m_trigger" (with one float argument)
FLEXT_CALLBACK_F(m_trigger)
@@ -90,7 +90,7 @@ const t_symbol
*attr2::sym_div,*attr2::sym_mul,
*attr2::sym_pow;
-void attr2::setup(t_class *c)
+void attr2::setup(t_classid c)
{
// Upon class creation setup some symbols
// This is done only upon creation of of the first "attr2" object
diff --git a/externals/grill/flext/tutorial/attr3/attr3.cw b/externals/grill/flext/tutorial/attr3/attr3.cw
index fb08c819..5fe6b36a 100755
--- a/externals/grill/flext/tutorial/attr3/attr3.cw
+++ b/externals/grill/flext/tutorial/attr3/attr3.cw
Binary files differ
diff --git a/externals/grill/flext/tutorial/attr3/main.cpp b/externals/grill/flext/tutorial/attr3/main.cpp
index 4c2736c5..8d37f467 100644
--- a/externals/grill/flext/tutorial/attr3/main.cpp
+++ b/externals/grill/flext/tutorial/attr3/main.cpp
@@ -108,7 +108,7 @@ protected:
private:
- static void setup(t_class *c)
+ static void setup(t_classid c)
{
// --- set up methods (class scope) ---
diff --git a/externals/grill/flext/tutorial/config-pd-cygwin.txt b/externals/grill/flext/tutorial/config-pd-cygwin.txt
index 81d4136e..237cd519 100644
--- a/externals/grill/flext/tutorial/config-pd-cygwin.txt
+++ b/externals/grill/flext/tutorial/config-pd-cygwin.txt
@@ -12,12 +12,12 @@ FLEXTPATH=${PDPATH}/flext
# where is the SndObj include directory?
# (leave blank or comment out to disable SndObj support)
# if defined, you must have a libsndobj.a library in the lib path
-SNDOBJ=/usr/local/include/SndObj
+#SNDOBJ=/usr/local/include/SndObj
# where is the STK include directory?
# (leave blank or comment out to disable STK support)
# if defined, you must have a libstk.a library in the lib path
-STK=/usr/src/stk-4.1.1/include
+#STK=/usr/src/stk-4.1.1/include
# where should the examples be built?
OUTPATH=./pd-cygwin
diff --git a/externals/grill/flext/tutorial/config-pd-darwin.txt b/externals/grill/flext/tutorial/config-pd-darwin.txt
index 0c12880b..eb65fcdf 100644
--- a/externals/grill/flext/tutorial/config-pd-darwin.txt
+++ b/externals/grill/flext/tutorial/config-pd-darwin.txt
@@ -17,12 +17,12 @@ FLEXTPATH=/usr/local/pd/flext
# where is the SndObj include directory?
# (leave blank or comment out to disable SndObj support)
# if defined, you must have a libsndobj.a library in the lib path
-SNDOBJ=/usr/local/include/SndObj
+#SNDOBJ=/usr/local/include/SndObj
# where is the STK include directory?
# (leave blank or comment out to disable STK support)
# if defined, you must have a libstk.a library in the lib path
-STK=/usr/src/stk-4.1.1/include
+#STK=/usr/src/stk-4.1.1/include
# where should the examples be built? (relative path)
OUTPATH=./pd-darwin
diff --git a/externals/grill/flext/tutorial/lib1/lib1.cw b/externals/grill/flext/tutorial/lib1/lib1.cw
index 98828b81..3ed47c99 100755
--- a/externals/grill/flext/tutorial/lib1/lib1.cw
+++ b/externals/grill/flext/tutorial/lib1/lib1.cw
Binary files differ
diff --git a/externals/grill/flext/tutorial/makefile.pd-cygwin b/externals/grill/flext/tutorial/makefile.pd-cygwin
index 60f5b08e..31224ed3 100644
--- a/externals/grill/flext/tutorial/makefile.pd-cygwin
+++ b/externals/grill/flext/tutorial/makefile.pd-cygwin
@@ -18,7 +18,8 @@ FLEXTLIB=$(FLEXTPATH)/flext-pdwin.lib
INCLUDES=$(PDPATH)/src
LIBPATH=$(PDPATH)/bin
FLAGS=-DFLEXT_SYS=2
-CFLAGS=-O6 -mcpu=pentiumpro
+CFLAGS=-O6 -fno-rtti
+CFLAGS+=-mcpu=pentium3 -msse # cygwin gcc 3.2
LIBS=m pd
diff --git a/externals/grill/flext/tutorial/makefile.pd-darwin b/externals/grill/flext/tutorial/makefile.pd-darwin
index ad8da699..b384d9cc 100644
--- a/externals/grill/flext/tutorial/makefile.pd-darwin
+++ b/externals/grill/flext/tutorial/makefile.pd-darwin
@@ -16,7 +16,7 @@ FLEXTLIB=$(FLEXTPATH)/flext_t.a # take threaded library for all
INCLUDES=$(PDPATH)
LIBPATH=
FLAGS=-DFLEXT_SYS=2 -DFLEXT_THREADS -Wno-unused -Wno-parentheses -Wno-switch -Wstrict-prototypes # -maltivec
-CFLAGS=-O6
+CFLAGS=-O6 -fno-rtti
LIBS=m
LDFLAGS=-bundle -bundle_loader $(PD)
diff --git a/externals/grill/flext/tutorial/makefile.pd-linux b/externals/grill/flext/tutorial/makefile.pd-linux
index 0bad96fb..3b0bc3d3 100644
--- a/externals/grill/flext/tutorial/makefile.pd-linux
+++ b/externals/grill/flext/tutorial/makefile.pd-linux
@@ -16,7 +16,9 @@ FLEXTLIB=$(FLEXTPATH)/flext_t.a # take threaded library for all
INCLUDES=$(PDPATH)/src
LIBPATH=
FLAGS=-DFLEXT_SYS=2 -DFLEXT_THREADS
-CFLAGS=-O6 -mcpu=pentiumpro
+CFLAGS=-O6 -fno-rtti
+CFLAGS+=-mcpu=pentiumpro # gcc 2.95
+# CFLAGS+=-mcpu=pentium3 -msse # gcc 3.2
LIBS=m
diff --git a/externals/grill/flext/tutorial/maxmsp/ex-adv1 b/externals/grill/flext/tutorial/maxmsp/ex-adv1
index dbdcf1fb..f086ab57 100755
--- a/externals/grill/flext/tutorial/maxmsp/ex-adv1
+++ b/externals/grill/flext/tutorial/maxmsp/ex-adv1
Binary files differ
diff --git a/externals/grill/flext/tutorial/maxmsp/ex-adv2 b/externals/grill/flext/tutorial/maxmsp/ex-adv2
new file mode 100755
index 00000000..b6aa0065
--- /dev/null
+++ b/externals/grill/flext/tutorial/maxmsp/ex-adv2
Binary files differ
diff --git a/externals/grill/flext/tutorial/maxmsp/ex-adv3 b/externals/grill/flext/tutorial/maxmsp/ex-adv3
new file mode 100755
index 00000000..1f041257
--- /dev/null
+++ b/externals/grill/flext/tutorial/maxmsp/ex-adv3
Binary files differ
diff --git a/externals/grill/flext/tutorial/maxmsp/ex-attr2 b/externals/grill/flext/tutorial/maxmsp/ex-attr2
index 39256fcb..aab02c92 100755
--- a/externals/grill/flext/tutorial/maxmsp/ex-attr2
+++ b/externals/grill/flext/tutorial/maxmsp/ex-attr2
Binary files differ
diff --git a/externals/grill/flext/tutorial/maxmsp/ex-attr3 b/externals/grill/flext/tutorial/maxmsp/ex-attr3
new file mode 100755
index 00000000..7ef7292f
--- /dev/null
+++ b/externals/grill/flext/tutorial/maxmsp/ex-attr3
Binary files differ
diff --git a/externals/grill/flext/tutorial/maxmsp/ex-simple3 b/externals/grill/flext/tutorial/maxmsp/ex-simple3
index 7b5acee2..7dda678c 100755
--- a/externals/grill/flext/tutorial/maxmsp/ex-simple3
+++ b/externals/grill/flext/tutorial/maxmsp/ex-simple3
Binary files differ
diff --git a/externals/grill/flext/tutorial/pd/ex-adv1.pd b/externals/grill/flext/tutorial/pd/ex-adv1.pd
index 93695c7e..ea5337f7 100644
--- a/externals/grill/flext/tutorial/pd/ex-adv1.pd
+++ b/externals/grill/flext/tutorial/pd/ex-adv1.pd
@@ -1,22 +1,23 @@
-#N canvas 46 58 586 341 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 27 http://www.parasitaere-kapazitaeten.net;
-#X text 199 214 watch the console!;
-#X msg 69 121 6;
-#X text 210 110 send the object various messages;
-#X text 160 274 (if adv1 has already been loaded);
-#X text 175 9 flext tutorial \, (C)2002 \, 2003 Thomas Grill;
-#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 10 0 4 0;
+#N canvas 46 58 588 343 12;
+#X msg 34 92 or two words;
+#X msg 169 93 2 3;
+#X msg 48 291 one 20;
+#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 27 http://www.parasitaere-kapazitaeten.net;
+#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 175 9 flext tutorial \, (C)2002 \, 2003 Thomas Grill;
+#X obj 66 127 nbx 3 18 0 100 0 0 empty empty empty 0 -6 0 14 -262144
+-1 -1 20 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-adv3.pd b/externals/grill/flext/tutorial/pd/ex-adv3.pd
index 09b0a0ff..2ffaf1b5 100644
--- a/externals/grill/flext/tutorial/pd/ex-adv3.pd
+++ b/externals/grill/flext/tutorial/pd/ex-adv3.pd
@@ -1,40 +1,40 @@
-#N canvas 175 139 597 355 12;
-#X obj 16 7 cnv 15 550 40 empty empty adv3 10 22 0 24 -260818 -1 0
-;
-#X text 174 28 http://www.parasitaere-kapazitaeten.net;
-#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+37 1e+37 0 0 empty empty empty 0 -6 0 12
--228992 -1 -1 0 256;
-#X msg 269 120 1 10;
-#X msg 389 118 1;
-#X msg 424 118 -1;
-#X msg 460 118 2;
-#X obj 88 119 bng 25 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
--1;
-#X msg 313 119 7 2;
-#X text 325 300 end has been reached;
-#X obj 157 117 nbx 5 18 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
--228992 -1 -1 0 256;
-#X msg 158 140 set \$1;
-#X text 72 98 trigger;
-#X text 147 98 set counter;
-#X text 264 99 set bounds;
-#X text 390 96 set step size;
-#X msg 80 186 reset;
-#X text 83 166 reset;
-#X text 21 49 this is a port of IOhannes Zmoelnings "counter" example
-;
-#X text 174 8 flext tutorial \, (C)2002 \, 2003 Thomas Grill;
-#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;
+#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://www.parasitaere-kapazitaeten.net;
+#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 \, 2003 Thomas Grill;
+#X text 21 49 this is a port of IOhannes Zmoelnings "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-attr2.pd b/externals/grill/flext/tutorial/pd/ex-attr2.pd
index de1b0c63..d58959b9 100644
--- a/externals/grill/flext/tutorial/pd/ex-attr2.pd
+++ b/externals/grill/flext/tutorial/pd/ex-attr2.pd
@@ -1,4 +1,4 @@
-#N canvas 364 29 605 442 12;
+#N canvas 364 29 609 446 12;
#X msg 21 84 help;
#X msg 23 119 getattributes;
#X text 265 357 there is one additional outlet;
@@ -11,7 +11,7 @@
#X text 160 118 query object attributes (watch console);
#X msg 96 155 getop;
#X obj 159 337 attr2 @op +;
-#X text 238 154 query attributes;
+#X text 252 155 query attributes;
#X text 333 210 set attributes;
#X msg 169 200 op +;
#X msg 168 225 op -;
@@ -20,16 +20,16 @@
#X msg 269 200 op =;
#X msg 219 224 op /;
#X msg 158 155 getresult;
-#X obj 16 8 cnv 15 550 40 empty empty attr2 10 22 0 24 -260818 -1 0
-;
+#X obj 16 8 cnv 15 550 40 empty empty attr2 10 22 32 24 -260818 -1
+0;
#X text 173 28 http://www.parasitaere-kapazitaeten.net;
#X text 91 398 result;
-#X obj 23 271 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
--1 -1 40 256;
-#X obj 271 273 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
--1 -1 10 256;
-#X obj 151 398 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
--228992 -1 -1 400 256;
+#X obj 23 271 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 32 12 -261681
+-1 -1 20 256;
+#X obj 271 273 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 32 12 -261681
+-1 -1 4 256;
+#X obj 151 398 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 32
+12 -228992 -1 -1 80 256;
#X text 171 10 flext tutorial \, (C)2002 \, 2003 Thomas Grill;
#X text 328 274 set argument;
#X connect 0 0 11 0;
diff --git a/externals/grill/flext/tutorial/pd/ex-attr3.pd b/externals/grill/flext/tutorial/pd/ex-attr3.pd
index b55bf2fd..48a89137 100644
--- a/externals/grill/flext/tutorial/pd/ex-attr3.pd
+++ b/externals/grill/flext/tutorial/pd/ex-attr3.pd
@@ -1,38 +1,38 @@
-#N canvas 175 139 603 453 12;
-#X obj 16 7 cnv 15 550 40 empty empty attr3 10 22 0 24 -260818 -1 0
-;
+#N canvas 175 139 607 457 12;
+#X obj 16 7 cnv 15 550 40 empty empty attr3 10 22 32 24 -260818 -1
+0;
#X text 174 28 http://www.parasitaere-kapazitaeten.net;
-#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 0 256;
-#X msg 264 129 1 10;
-#X msg 384 127 1;
-#X msg 419 127 -1;
-#X msg 455 127 2;
-#X obj 36 128 bng 25 250 50 0 empty empty empty 0 -6 0 8 -258699 -1
+#X obj 293 364 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144
+-1 -1;
+#X obj 196 361 nbx 5 18 -1e+37 1e+37 0 0 empty empty empty 0 -6 32
+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 32 8 -258699 -1
-1;
-#X msg 308 128 7 2;
-#X obj 159 123 nbx 5 18 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
--228992 -1 -1 0 256;
-#X msg 160 146 set \$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 32
+12 -228992 -1 -1 17 256;
+#X msg 174 142 set \$1;
#X text 20 107 trigger;
-#X text 149 104 set counter;
-#X text 259 108 set bounds;
-#X text 385 105 set step size;
-#X msg 87 135 reset;
-#X text 90 115 reset;
-#X text 23 63 with attributes;
+#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 440 362 attributes;
+#X text 447 362 attributes;
#X msg 32 237 getcount;
#X msg 388 232 getstep;
-#X text 149 193 list all attributes;
+#X text 167 196 list all attributes;
#X msg 32 266 count 3;
-#X text 109 238 get count;
-#X text 104 266 set count;
+#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 Zmoelnings "counter" example
;
diff --git a/externals/grill/flext/tutorial/pd/ex-simple1.pd b/externals/grill/flext/tutorial/pd/ex-simple1.pd
index eb32567d..9c090fac 100644
--- a/externals/grill/flext/tutorial/pd/ex-simple1.pd
+++ b/externals/grill/flext/tutorial/pd/ex-simple1.pd
@@ -1,16 +1,16 @@
-#N canvas 85 178 582 245 12;
-#X msg 29 92 help;
-#X text 203 187 inverse;
-#X text 169 96 input;
-#X obj 113 141 simple1;
-#X obj 16 8 cnv 15 550 40 empty empty simple1 10 22 0 24 -260818 -1
-0;
-#X text 175 28 http://www.parasitaere-kapazitaeten.net;
-#X obj 114 96 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
--1 -1 88 256;
-#X obj 112 190 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
--228992 -1 -1 0.0113636 256;
-#X text 175 8 flext tutorial \, (C)2002 \, 2003 Thomas Grill;
-#X connect 0 0 3 0;
-#X connect 3 0 7 0;
-#X connect 6 0 3 0;
+#N canvas 85 178 588 251 12;
+#X msg 29 92 help;
+#X text 203 187 inverse;
+#X text 169 96 input;
+#X obj 113 141 simple1;
+#X obj 16 8 cnv 15 550 40 empty empty simple1 10 22 0 24 -260818 -1
+0;
+#X text 167 30 http://www.parasitaere-kapazitaeten.net;
+#X obj 114 96 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
+-1 -1 0 256;
+#X obj 112 190 nbx 7 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
+12 -228992 -1 -1 0 256;
+#X text 167 10 flext tutorial \, (C)2002 \, 2003 Thomas Grill;
+#X connect 0 0 3 0;
+#X connect 3 0 7 0;
+#X connect 6 0 3 0;
diff --git a/externals/grill/flext/tutorial/pd/ex-simple2.pd b/externals/grill/flext/tutorial/pd/ex-simple2.pd
index dfc0cb8a..23c037d0 100644
--- a/externals/grill/flext/tutorial/pd/ex-simple2.pd
+++ b/externals/grill/flext/tutorial/pd/ex-simple2.pd
@@ -1,21 +1,21 @@
-#N canvas 72 265 589 307 12;
-#X obj 111 196 simple2 3;
-#X msg 21 83 help;
-#X text 103 119 triggering;
-#X text 215 120 non-triggering;
-#X text 206 197 default argument;
-#X obj 16 8 cnv 15 550 40 empty empty simple2 10 22 0 24 -260818 -1
-0;
-#X text 174 28 http://www.parasitaere-kapazitaeten.net;
-#X text 66 82 print a "help" message (to the console);
-#X obj 110 144 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
--1 -1 22 256;
-#X obj 217 144 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
--1 -1 0 256;
-#X obj 111 239 nbx 7 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
--228992 -1 -1 25 256;
-#X text 174 10 flext tutorial \, (C)2002 \, 2003 Thomas Grill;
-#X connect 0 0 10 0;
-#X connect 1 0 0 0;
-#X connect 8 0 0 0;
-#X connect 9 0 0 1;
+#N canvas 72 265 595 313 12;
+#X obj 111 196 simple2 3;
+#X msg 21 83 help;
+#X text 103 119 triggering;
+#X text 215 120 non-triggering;
+#X text 206 197 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://www.parasitaere-kapazitaeten.net;
+#X text 66 82 print a "help" message (to the console);
+#X obj 110 144 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
+-1 -1 0 256;
+#X obj 217 144 nbx 4 16 -999 999 0 0 empty empty empty 0 -6 0 12 -261681
+-1 -1 0 256;
+#X obj 111 239 nbx 7 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
+12 -228992 -1 -1 0 256;
+#X text 167 11 flext tutorial \, (C)2002 \, 2003 Thomas Grill;
+#X connect 0 0 10 0;
+#X connect 1 0 0 0;
+#X connect 8 0 0 0;
+#X connect 9 0 0 1;
diff --git a/externals/grill/flext/tutorial/pd/ex-simple3.pd b/externals/grill/flext/tutorial/pd/ex-simple3.pd
index c9bbc211..72ca4e18 100644
--- a/externals/grill/flext/tutorial/pd/ex-simple3.pd
+++ b/externals/grill/flext/tutorial/pd/ex-simple3.pd
@@ -1,22 +1,22 @@
-#N canvas 329 97 583 344 12;
-#X msg 22 87 help;
-#X msg 119 136 born;
-#X msg 168 137 to;
-#X msg 210 139 hula;
-#X msg 224 220 yeah;
-#X msg 224 182 hula 1;
-#X text 276 221 other symbol;
-#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://www.parasitaere-kapazitaeten.net;
-#X text 174 10 flext tutorial \, (C)2002 \, 2003 Thomas Grill;
-#X connect 0 0 7 0;
-#X connect 1 0 7 0;
-#X connect 2 0 7 0;
-#X connect 3 0 7 0;
-#X connect 4 0 7 0;
-#X connect 5 0 7 0;
+#N canvas 329 97 589 350 12;
+#X msg 22 87 help;
+#X msg 119 136 born;
+#X msg 168 137 to;
+#X msg 210 139 hula;
+#X msg 224 220 yeah;
+#X msg 224 182 hula 1;
+#X text 276 221 other symbol;
+#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://www.parasitaere-kapazitaeten.net;
+#X text 174 10 flext tutorial \, (C)2002 \, 2003 Thomas Grill;
+#X connect 0 0 7 0;
+#X connect 1 0 7 0;
+#X connect 2 0 7 0;
+#X connect 3 0 7 0;
+#X connect 4 0 7 0;
+#X connect 5 0 7 0;
diff --git a/externals/grill/flext/tutorial/pd/ex-thread1.pd b/externals/grill/flext/tutorial/pd/ex-thread1.pd
index a4b7ba79..ff2d9f38 100644
--- a/externals/grill/flext/tutorial/pd/ex-thread1.pd
+++ b/externals/grill/flext/tutorial/pd/ex-thread1.pd
@@ -1,43 +1,43 @@
-#N canvas 105 266 702 345 12;
-#X obj 39 91 bng 25 250 50 0 empty empty start 0 -6 0 8 -261681 -1
--1;
-#X obj 130 246 thread1;
-#X obj 220 247 thread1;
-#X obj 312 247 thread1;
-#X obj 405 247 thread1;
-#X obj 131 185 delay 200;
-#X obj 220 184 delay 200;
-#X obj 313 186 delay 200;
-#X obj 404 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 175 28 http://www.parasitaere-kapazitaeten.net;
-#X obj 131 277 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
--228992 -1 -1 0 256;
-#X obj 221 277 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
--228992 -1 -1 0 256;
-#X obj 311 277 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
--228992 -1 -1 0 256;
-#X obj 406 276 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
--228992 -1 -1 0 256;
-#X obj 39 244 thread1;
-#X obj 39 277 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
--228992 -1 -1 0 256;
-#X text 175 10 flext tutorial \, (C)2002 \, 2003 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;
+#N canvas 105 266 708 351 12;
+#X obj 39 91 bng 25 250 50 0 empty empty start 0 -6 0 8 -261681 -1
+-1;
+#X obj 130 246 thread1;
+#X obj 228 248 thread1;
+#X obj 324 246 thread1;
+#X obj 422 247 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://www.parasitaere-kapazitaeten.net;
+#X obj 131 277 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
+12 -228992 -1 -1 0 256;
+#X obj 229 278 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
+12 -228992 -1 -1 0 256;
+#X obj 323 276 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
+12 -228992 -1 -1 0 256;
+#X obj 423 276 nbx 5 16 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
+12 -228992 -1 -1 0 256;
+#X obj 39 244 thread1;
+#X obj 39 277 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 \, 2003 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
index dc71ac48..9c601c85 100644
--- a/externals/grill/flext/tutorial/pd/ex-thread2.pd
+++ b/externals/grill/flext/tutorial/pd/ex-thread2.pd
@@ -1,47 +1,47 @@
-#N canvas 116 192 587 332 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 174 28 http://www.parasitaere-kapazitaeten.net;
-#X obj 65 264 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
--228992 -1 -1 0 256;
-#X obj 231 265 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
--228992 -1 -1 0 256;
-#X obj 403 267 nbx 5 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 12
--228992 -1 -1 0 256;
-#X text 174 10 flext tutorial \, (C)2002 \, 2003 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;
+#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://www.parasitaere-kapazitaeten.net;
+#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 \, 2003 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/readme.txt b/externals/grill/flext/tutorial/readme.txt
index 0e445a5a..98221ae7 100644
--- a/externals/grill/flext/tutorial/readme.txt
+++ b/externals/grill/flext/tutorial/readme.txt
@@ -24,6 +24,13 @@ The recommended order to go through the tutorial examples is the following:
and, if needed
7) 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/
+
+
----------------------------------------------------------------------------
The package should at least compile (and is tested) with the following compilers:
@@ -51,7 +58,17 @@ 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/signal1.cw b/externals/grill/flext/tutorial/signal1/signal1.cw
index 8385296a..9e0d4f91 100644
--- a/externals/grill/flext/tutorial/signal1/signal1.cw
+++ b/externals/grill/flext/tutorial/signal1/signal1.cw
Binary files differ
diff --git a/externals/grill/flext/tutorial/signal2/signal2.cw b/externals/grill/flext/tutorial/signal2/signal2.cw
index 5199aff1..848b3430 100644
--- a/externals/grill/flext/tutorial/signal2/signal2.cw
+++ b/externals/grill/flext/tutorial/signal2/signal2.cw
Binary files differ
diff --git a/externals/grill/flext/tutorial/simple1/simple1.cw b/externals/grill/flext/tutorial/simple1/simple1.cw
index 429c07f3..cd344206 100755
--- a/externals/grill/flext/tutorial/simple1/simple1.cw
+++ b/externals/grill/flext/tutorial/simple1/simple1.cw
Binary files differ
diff --git a/externals/grill/flext/tutorial/simple2/simple2.cw b/externals/grill/flext/tutorial/simple2/simple2.cw
index 02837e57..c622718f 100755
--- a/externals/grill/flext/tutorial/simple2/simple2.cw
+++ b/externals/grill/flext/tutorial/simple2/simple2.cw
Binary files differ
diff --git a/externals/grill/flext/tutorial/simple3/simple3.cw b/externals/grill/flext/tutorial/simple3/simple3.cw
index d0038bc9..b08661c7 100644
--- a/externals/grill/flext/tutorial/simple3/simple3.cw
+++ b/externals/grill/flext/tutorial/simple3/simple3.cw
Binary files differ
diff --git a/externals/grill/flext/tutorial/thread1/thread1.cw b/externals/grill/flext/tutorial/thread1/thread1.cw
index 680bdfba..a7fed74e 100644
--- a/externals/grill/flext/tutorial/thread1/thread1.cw
+++ b/externals/grill/flext/tutorial/thread1/thread1.cw
Binary files differ
diff --git a/externals/grill/flext/tutorial/thread2/thread2.cw b/externals/grill/flext/tutorial/thread2/thread2.cw
index 524ad776..12b28e1a 100755
--- a/externals/grill/flext/tutorial/thread2/thread2.cw
+++ b/externals/grill/flext/tutorial/thread2/thread2.cw
Binary files differ