aboutsummaryrefslogtreecommitdiff
path: root/osc/routeOSC.c
diff options
context:
space:
mode:
authorMartin Peach <mrpeach@users.sourceforge.net>2012-03-13 16:41:24 +0000
committerMartin Peach <mrpeach@users.sourceforge.net>2012-03-13 16:41:24 +0000
commitb5d7494e84d0b5964bf71e0ac6d4d1fc9f561d76 (patch)
treefde118ace13a6c10d59486df8d56a439f6f16d37 /osc/routeOSC.c
parent9c63926d67ea18297c72a622c1a13df7b36f6b35 (diff)
Now accepts lists without complaining. Also routes non-OSC messages to right outlet. Corrected and updated help patch.
svn path=/trunk/externals/mrpeach/; revision=16071
Diffstat (limited to 'osc/routeOSC.c')
-rw-r--r--osc/routeOSC.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/osc/routeOSC.c b/osc/routeOSC.c
index b4e5dda..15b788e 100644
--- a/osc/routeOSC.c
+++ b/osc/routeOSC.c
@@ -104,6 +104,7 @@ void routeOSC_setup(void);
static void routeOSC_free(t_routeOSC *x);
static int MyPatternMatch (const char *pattern, const char *test);
static void routeOSC_doanything(t_routeOSC *x, t_symbol *s, int argc, t_atom *argv);
+static void routeOSC_list(t_routeOSC *x, t_symbol *s, int argc, t_atom *argv);
static void *routeOSC_new(t_symbol *s, int argc, t_atom *argv);
static void routeOSC_set(t_routeOSC *x, t_symbol *s, int argc, t_atom *argv);
static void routeOSC_paths(t_routeOSC *x, t_symbol *s, int argc, t_atom *argv);
@@ -149,6 +150,7 @@ void routeOSC_setup(void)
routeOSC_class = class_new(gensym("routeOSC"), (t_newmethod)routeOSC_new,
(t_method)routeOSC_free, sizeof(t_routeOSC), 0, A_GIMME, 0);
class_addanything(routeOSC_class, routeOSC_doanything);
+ class_addlist(routeOSC_class, routeOSC_list);
class_addmethod(routeOSC_class, (t_method)routeOSC_set, gensym("set"), A_GIMME, 0);
class_addmethod(routeOSC_class, (t_method)routeOSC_paths, gensym("paths"), A_GIMME, 0);
class_addmethod(routeOSC_class, (t_method)routeOSC_verbosity, gensym("verbosity"), A_DEFFLOAT, 0);
@@ -403,6 +405,18 @@ static void routeOSC_doanything(t_routeOSC *x, t_symbol *s, int argc, t_atom *ar
}
}
+static void routeOSC_list(t_routeOSC *x, t_symbol *s, int argc, t_atom *argv)
+{
+ post ("routeOSC_list: argc is %d", argc);
+ if (argv[0].a_type == A_SYMBOL) routeOSC_doanything(x, argv[0].a_w.w_symbol, argc-1, &argv[1]);
+ else
+ {
+ routeOSC_doanything(x, gensym("/"), argc, argv);
+ if (x->x_verbosity)
+ post("routeOSC_doanything(%p): message pattern is not a symbol, setting path to /", x);
+ }
+}
+
static char *NextSlashOrNull(char *p)
{
while (*p != '/' && *p != '\0') p++;
@@ -424,7 +438,6 @@ static char *NthSlashOrNull(char *p, int n)
return p;
}
-
static void StrCopyUntilSlash(char *target, const char *source)
{
while (*source != '/' && *source != '\0')