aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/flext/tutorial/attr3
diff options
context:
space:
mode:
authorThomas Grill <xovo@users.sourceforge.net>2002-12-30 04:32:19 +0000
committerThomas Grill <xovo@users.sourceforge.net>2002-12-30 04:32:19 +0000
commit62530f3fc55d3dc1c12bcd3b88f0922c15cd82e5 (patch)
treea57fc5a54ed78f189f074724396f81330faf9a3b /externals/grill/flext/tutorial/attr3
parent562dcc336797951b2a8707413aa44177484c9f2a (diff)
""
svn path=/trunk/; revision=310
Diffstat (limited to 'externals/grill/flext/tutorial/attr3')
-rwxr-xr-xexternals/grill/flext/tutorial/attr3/attr3.cwbin0 -> 101183 bytes
-rw-r--r--externals/grill/flext/tutorial/attr3/attr3.dsp95
-rw-r--r--externals/grill/flext/tutorial/attr3/main.cpp163
3 files changed, 258 insertions, 0 deletions
diff --git a/externals/grill/flext/tutorial/attr3/attr3.cw b/externals/grill/flext/tutorial/attr3/attr3.cw
new file mode 100755
index 00000000..fb08c819
--- /dev/null
+++ b/externals/grill/flext/tutorial/attr3/attr3.cw
Binary files differ
diff --git a/externals/grill/flext/tutorial/attr3/attr3.dsp b/externals/grill/flext/tutorial/attr3/attr3.dsp
new file mode 100644
index 00000000..6d22106d
--- /dev/null
+++ b/externals/grill/flext/tutorial/attr3/attr3.dsp
@@ -0,0 +1,95 @@
+# Microsoft Developer Studio Project File - Name="attr3" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** NICHT BEARBEITEN **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=attr3 - 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 "attr3.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 "attr3.mak" CFG="attr3 - Win32 Debug"
+!MESSAGE
+!MESSAGE Für die Konfiguration stehen zur Auswahl:
+!MESSAGE
+!MESSAGE "attr3 - Win32 Release" (basierend auf "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "attr3 - Win32 Debug" (basierend auf "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName "attr3"
+# PROP Scc_LocalPath "."
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "attr3 - 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/attr3.dll" /libpath:"..\..\pd-msvc"
+
+!ELSEIF "$(CFG)" == "attr3 - 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 "attr3 - Win32 Release"
+# Name "attr3 - Win32 Debug"
+# Begin Source File
+
+SOURCE=.\main.cpp
+# End Source File
+# End Target
+# End Project
diff --git a/externals/grill/flext/tutorial/attr3/main.cpp b/externals/grill/flext/tutorial/attr3/main.cpp
new file mode 100644
index 00000000..835c2881
--- /dev/null
+++ b/externals/grill/flext/tutorial/attr3/main.cpp
@@ -0,0 +1,163 @@
+/*
+flext tutorial - attributes 3
+
+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.
+
+-------------------------------------------------------------------------
+
+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 <flext.h>
+
+// 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
+ attr3(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(); // 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_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;
+
+ // setter method of bounds variables
+ void ms_bound(const AtomList &l)
+ {
+ if(l.Count() == 2 && CanbeInt(l[0]) && CanbeInt(l[1]))
+ // if it is a two element integer list use m_bound method
+ m_bound(GetAInt(l[0]),GetAInt(l[1]));
+ else
+ // else post a warning
+ post("%s - bound needs to integer parameters",thisName());
+ }
+
+ // getter method of bounds variables
+ void mg_bound(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
+ }
+
+private:
+
+ static void setup(t_class *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_bound); // variable arg type recognized automatically
+ FLEXT_CADDMETHOD(c,2,m_step); // single int arg also recognized automatically
+
+ // --- set up attributes (class scope) ---
+
+ FLEXT_CADDATTR_VAR1(c,"count",i_count);
+ FLEXT_CADDATTR_VAR1(c,"step",i_step);
+
+ FLEXT_CADDATTR_VAR(c,"bound",mg_bound,ms_bound);
+ }
+
+ // 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 function for integer variable i_count
+
+ FLEXT_CALLBACK_II(m_bound) // normal method wrapper for m_bound
+ FLEXT_CALLVAR_V(mg_bound,ms_bound) // getter and setter method of bounds
+
+ FLEXT_CALLBACK_I(m_step) // normal method wrapper for m_step
+ FLEXT_ATTRVAR_I(i_step) // wrapper function for integer variable i_step
+};
+
+// instantiate the class (constructor has a variable argument list)
+FLEXT_NEW_V("attr3",attr3)
+
+