diff options
author | Thomas Grill <xovo@users.sourceforge.net> | 2009-04-01 21:13:09 +0000 |
---|---|---|
committer | Thomas Grill <xovo@users.sourceforge.net> | 2009-04-01 21:13:09 +0000 |
commit | 0ed7a8b68dd73e2b0473b8127aeca99f3bac9061 (patch) | |
tree | 5c67818b38a5cc2f9caa5ca7f8640ca356adf02b /externals/grill/deljoin/main.cpp | |
parent | bb4c7f6a245394d09dac9adfb2efb093d3d98452 (diff) |
cleaned up grill externals - replaced with svn:externals to svn.grrrr.org/ext/trunk/
svn path=/trunk/; revision=10951
Diffstat (limited to 'externals/grill/deljoin/main.cpp')
-rw-r--r-- | externals/grill/deljoin/main.cpp | 147 |
1 files changed, 0 insertions, 147 deletions
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 <flext.h> - -#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 500) -#error You need at least flext version 0.5.0 -#endif - -#include <string.h> -#include <stdlib.h> -#include <stdio.h> - - -#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); -} |