From b5d7494e84d0b5964bf71e0ac6d4d1fc9f561d76 Mon Sep 17 00:00:00 2001 From: Martin Peach Date: Tue, 13 Mar 2012 16:41:24 +0000 Subject: 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 --- osc/routeOSC.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'osc/routeOSC.c') 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') -- cgit v1.2.1