From 7312e58d17e331d71d4f47e21bf15499609bace8 Mon Sep 17 00:00:00 2001 From: dieter kovacic Date: Tue, 9 Jul 2002 12:41:56 +0000 Subject: This commit was generated by cvs2svn to compensate for changes in r33, which included commits to RCS files with non-trunk default branches. svn path=/trunk/externals/ext13/; revision=34 --- kalashnikov.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 kalashnikov.c (limited to 'kalashnikov.c') diff --git a/kalashnikov.c b/kalashnikov.c new file mode 100644 index 0000000..f4ee3a1 --- /dev/null +++ b/kalashnikov.c @@ -0,0 +1,59 @@ +#include "ext13.h" +#include "m_pd.h" +/*#include "g_canvas.h"*/ +#ifdef NT +#pragma warning( disable : 4244 ) +#pragma warning( disable : 4305 ) +#endif + +/* -------------------------- kalashnikov ------------------------------ */ +static t_class *kalashnikov_class; + +typedef struct _kalashnikov +{ + t_object x_obj; + t_float x_f; + t_outlet *x_out2; + t_outlet *x_out3; +} t_kalashnikov; + +static void *kalashnikov_new(t_floatarg f) +{ + t_kalashnikov *x = (t_kalashnikov *)pd_new(kalashnikov_class); + x->x_f = f; + outlet_new(&x->x_obj, &s_bang); + x->x_out3 = outlet_new(&x->x_obj, &s_float); + x->x_out2 = outlet_new(&x->x_obj, &s_bang); + floatinlet_new(&x->x_obj, &x->x_f); + return (x); +} + +static void kalashnikov_bang(t_kalashnikov *x) +{ + int count; + for (count=x->x_f;count>0;count--){ + outlet_bang(x->x_obj.ob_outlet); + outlet_float(x->x_out3, x->x_f-count); + } + outlet_bang(x->x_out2); +} + +static void kalashnikov_float(t_kalashnikov *x, t_float f) +{ + int count; + x->x_f=f; + for (count=f;count>0;count--){ + outlet_bang(x->x_obj.ob_outlet); + outlet_float(x->x_out3, f-count); + } + outlet_bang(x->x_out2); +} + +void kalashnikov_setup(void) +{ + kalashnikov_class = class_new(gensym("kalashnikov"), (t_newmethod)kalashnikov_new, 0, + sizeof(t_kalashnikov), 0, A_DEFFLOAT, 0); + class_addcreator((t_newmethod)kalashnikov_new, gensym("uzi"), A_DEFFLOAT, 0); + class_addbang(kalashnikov_class, kalashnikov_bang); + class_addfloat(kalashnikov_class, kalashnikov_float); +} -- cgit v1.2.1