From 483bba4eecd0fdabb387e21666162d49c2bca6b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?IOhannes=20m=20zm=C3=B6lnig?= Date: Tue, 12 Dec 2006 11:15:28 +0000 Subject: added "dump" and "clear" messages svn path=/trunk/externals/zexy/; revision=6816 --- src/fifop.c | 48 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 7 deletions(-) (limited to 'src/fifop.c') diff --git a/src/fifop.c b/src/fifop.c index fdbe57d..9ac07a4 100644 --- a/src/fifop.c +++ b/src/fifop.c @@ -205,13 +205,7 @@ static void fifop_query(t_fifop*x) outlet_float(x->x_infout, (t_float)x->counter); } -static void fifop_help(t_fifop*x) -{ - post("\n%c fifop\t\t:: a First-In-First-Out queue with priorities", HEARTSYMBOL); -} - - -static void fifop_free(t_fifop *x) +static void fifop_clear(t_fifop*x) { t_fifop_prioritylist *fifo_list=x->fifo_list; while(fifo_list){ @@ -237,6 +231,42 @@ static void fifop_free(t_fifop *x) freebytes(fifo_list2, sizeof( t_fifop_prioritylist)); } x->fifo_list=0; + x->counter=0; +} +/* this is NOT re-entrant! */ +static void fifop_dump(t_fifop*x) +{ + t_fifop_prioritylist*pfifo=getFifo(x->fifo_list); + + if(!pfifo||!pfifo->fifo_start) { + outlet_bang(x->x_infout); + return; + } + + while(pfifo) { + t_fifop_list*fifo=pfifo->fifo_start; + while(fifo) { + t_atom*argv=fifo->argv; + int argc=fifo->argc; + + /* output the list */ + outlet_list(x->x_out, &s_list, argc, argv); + + fifo=fifo->next; + } + pfifo=pfifo->next; + } +} + +static void fifop_help(t_fifop*x) +{ + post("\n%c fifop\t\t:: a First-In-First-Out queue with priorities", HEARTSYMBOL); +} + + +static void fifop_free(t_fifop *x) +{ + fifop_clear(x); outlet_free(x->x_out); outlet_free(x->x_infout); @@ -263,6 +293,10 @@ void fifop_setup(void) class_addbang (fifop_class, fifop_bang); class_addlist (fifop_class, fifop_list); + + class_addmethod (fifop_class, (t_method)fifop_clear, gensym("clear"), A_NULL); + class_addmethod (fifop_class, (t_method)fifop_dump, gensym("dump"), A_NULL); + class_addmethod (fifop_class, (t_method)fifop_query, gensym("info"), A_NULL); class_addmethod (fifop_class, (t_method)fifop_help, gensym("help"), A_NULL); -- cgit v1.2.1