aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/prepend/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'externals/grill/prepend/main.cpp')
-rw-r--r--externals/grill/prepend/main.cpp134
1 files changed, 0 insertions, 134 deletions
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 <flext.h>
-
-#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("");
-}
-
-
-
-
-