aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/delsplit
diff options
context:
space:
mode:
Diffstat (limited to 'externals/grill/delsplit')
-rwxr-xr-xexternals/grill/delsplit/main.cpp61
1 files changed, 35 insertions, 26 deletions
diff --git a/externals/grill/delsplit/main.cpp b/externals/grill/delsplit/main.cpp
index 17e30bc3..a7369dc7 100755
--- a/externals/grill/delsplit/main.cpp
+++ b/externals/grill/delsplit/main.cpp
@@ -10,8 +10,8 @@ WARRANTIES, see the file, "license.txt," in this distribution.
#include <flext.h>
-#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 400)
-#error You need at least flext version 0.4.0
+#if !defined(FLEXT_VERSION) || (FLEXT_VERSION < 401)
+#error You need at least flext version 0.4.1
#endif
#include <string.h>
@@ -27,7 +27,7 @@ WARRANTIES, see the file, "license.txt," in this distribution.
#define C char
#define BL bool
-#define VERSION "0.1.1"
+#define VERSION "0.1.2"
#ifdef __MWERKS__
#define STD std
@@ -39,7 +39,7 @@ WARRANTIES, see the file, "license.txt," in this distribution.
class delsplit:
public flext_base
{
- FLEXT_HEADER(delsplit,flext_base)
+ FLEXT_HEADER_S(delsplit,flext_base,Setup)
public:
delsplit(I argc,const t_atom *argv);
@@ -55,6 +55,8 @@ protected:
static V SetAtom(t_atom &l,const C *s);
private:
+ static V Setup(t_class *c);
+
FLEXT_CALLBACK_S(m_list)
FLEXT_CALLBACK_S(m_del)
};
@@ -62,6 +64,12 @@ private:
FLEXT_NEW_V("delsplit",delsplit)
+V delsplit::Setup(t_class *c)
+{
+ FLEXT_CADDMETHOD(c,0,m_list);
+ FLEXT_CADDMETHOD(c,1,m_del);
+}
+
delsplit::delsplit(I argc,const t_atom *argv):
delim(NULL)
{
@@ -69,9 +77,6 @@ delsplit::delsplit(I argc,const t_atom *argv):
AddInSymbol();
AddOutList();
- FLEXT_ADDMETHOD(0,m_list);
- FLEXT_ADDMETHOD(1,m_del);
-
if(argc && IsSymbol(argv[0])) delim = GetSymbol(argv[0]);
}
@@ -128,27 +133,31 @@ V delsplit::SetAtom(t_atom &l,const C *s)
V delsplit::m_list(const t_symbol *sym)
{
- t_atom lst[256];
- int cnt = 0;
- const C *sdel = GetString(delim);
- I ldel = strlen(sdel);
- C str[1024];
- strcpy(str,GetString(sym));
-
- for(const char *s = str; *s; ) {
- C *e = strstr(s,sdel);
- if(!e) {
- SetAtom(lst[cnt++],s);
- break;
- }
- else {
- *e = 0;
- SetAtom(lst[cnt++],s);
- s = e+ldel;
+ if(delim) {
+ t_atom lst[256];
+ int cnt = 0;
+ const C *sdel = GetString(delim);
+ I ldel = strlen(sdel);
+ C str[1024];
+ strcpy(str,GetString(sym));
+
+ for(const char *s = str; *s; ) {
+ C *e = strstr(s,sdel);
+ if(!e) {
+ SetAtom(lst[cnt++],s);
+ break;
+ }
+ else {
+ *e = 0;
+ SetAtom(lst[cnt++],s);
+ s = e+ldel;
+ }
}
+
+ ToOutList(0,cnt,lst);
}
-
- ToOutList(0,cnt,lst);
+ else
+ post("%s - No delimiter defined",thisName());
}
V delsplit::m_del(const t_symbol *s)