From 486e5ff7ebf4ed0fe1089ac73643c8dbca9b838a Mon Sep 17 00:00:00 2001 From: musil Date: Fri, 8 Jul 2005 02:13:24 +0000 Subject: dos-return svn path=/trunk/externals/iemlib/; revision=3301 --- src/iemlib2/post_netreceive.c | 482 +++++++++++++++++++++--------------------- 1 file changed, 241 insertions(+), 241 deletions(-) (limited to 'src/iemlib2/post_netreceive.c') diff --git a/src/iemlib2/post_netreceive.c b/src/iemlib2/post_netreceive.c index c626515..35dcaf2 100644 --- a/src/iemlib2/post_netreceive.c +++ b/src/iemlib2/post_netreceive.c @@ -1,241 +1,241 @@ -/* For information on usage and redistribution, and for a DISCLAIMER OF ALL -* WARRANTIES, see the file, "LICENSE.txt," in this distribution. - -iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2004 */ - -#ifdef NT -#pragma warning( disable : 4244 ) -#pragma warning( disable : 4305 ) -#endif - -#include "m_pd.h" -#include "iemlib.h" -#include -#include -#include -#include - -/* ------------------------ post_netreceive ---------------------------- */ -static t_class *post_netreceive_class; - -typedef struct _post_netreceive -{ - t_object x_obj; - int x_max_send_entries; - int x_min_send_entries; - char *x_snd_able; - t_symbol **x_send_entries; - t_symbol **x_plus_entries; - t_symbol *x_set; - t_atom x_at[2]; - t_atom *x_atbuf; - t_symbol *x_send; - t_symbol *x_setall; -} t_post_netreceive; - -static void post_netreceive_list(t_post_netreceive *x, t_symbol *s, int ac, t_atom *av) -{ - int identifier_index = (int)atom_getintarg(0, ac, av); - t_symbol *sender=0; - - if((identifier_index >= x->x_min_send_entries) && (identifier_index < x->x_max_send_entries)) - { - if(x->x_snd_able[identifier_index] == 1) - { - sender = x->x_send_entries[identifier_index]; - if(sender->s_thing) - { - if(ac == 2) - pd_float(sender->s_thing, atom_getfloatarg(1, ac, av)); - else - pd_list(sender->s_thing, &s_list, ac-1, av+1); - } - } - else if(x->x_snd_able[identifier_index] == 2) - { - sender = x->x_send_entries[identifier_index]; - if(sender->s_thing) - { - typedmess(sender->s_thing, x->x_plus_entries[identifier_index], ac-1, av+1); - } - } - if(IS_A_FLOAT(av,1)) - SETFLOAT(x->x_atbuf+identifier_index+1, atom_getfloatarg(1, ac, av)); - else if(IS_A_SYMBOL(av,1)) - SETSYMBOL(x->x_atbuf+identifier_index+1, atom_getsymbolarg(1, ac, av)); - } -} - -/*static void post_netreceive_set_item_name(t_post_netreceive *x, t_symbol *snd, t_float findex) -{ -int index = (int)findex; - - if((index >= 0) && (index < x->x_max_send_entries)) - { - x->x_send_entries[index] = snd; - x->x_snd_able[index] = 1; - } -}*/ - -static void post_netreceive_set_item_name(t_post_netreceive *x, t_symbol *s, int ac, t_atom *av) -{ - if(ac == 2) - { - int identifier_index = (int)atom_getintarg(1, ac, av); - - if((identifier_index >= x->x_min_send_entries) && (identifier_index < x->x_max_send_entries)) - { - x->x_send_entries[identifier_index] = atom_getsymbolarg(0, ac, av); - x->x_snd_able[identifier_index] = 1; - } - } - else if(ac >= 3) - { - int identifier_index = (int)atom_getintarg(2, ac, av); - - if((identifier_index >= 0) && (identifier_index < x->x_max_send_entries)) - { - x->x_send_entries[identifier_index] = atom_getsymbolarg(1, ac, av); - x->x_snd_able[identifier_index] = 2; - x->x_plus_entries[identifier_index] = atom_getsymbolarg(0, ac, av); - } - } -} - -static void post_netreceive_all_parameters(t_post_netreceive *x, t_symbol *s, int ac, t_atom *av) -{ - int i, min = x->x_min_send_entries, max = x->x_max_send_entries; - t_symbol *sendname=0; - - if(min > ac) - min = ac; - if(max > ac) - max = ac; - for(i=min; ix_snd_able[i] == 1) - { - sendname = x->x_send_entries[i]; - if(sendname->s_thing) - { - pd_float(sendname->s_thing, atom_getfloatarg(i, ac, av)); - } - } - else if(x->x_snd_able[i] == 2) - { - sendname = x->x_send_entries[i]; - if(sendname->s_thing) - { - typedmess(sendname->s_thing, x->x_plus_entries[i], 1, av+i); - } - } - if(IS_A_FLOAT(av,i)) - SETFLOAT(x->x_atbuf+i+1, atom_getfloatarg(i, ac, av)); - else if(IS_A_SYMBOL(av,i)) - SETSYMBOL(x->x_atbuf+i+1, atom_getsymbolarg(i, ac, av)); - } -} - -static void post_netreceive_set_all_parameters(t_post_netreceive *x, t_symbol *s, int ac, t_atom *av) -{ - int i, min = x->x_min_send_entries, max = x->x_max_send_entries; - t_symbol *sendname; - - if(min > ac) - min = ac; - if(max > ac) - max = ac; - for(i=min; ix_snd_able[i]) - { - sendname = x->x_send_entries[i]; - if(sendname->s_thing) - { - typedmess(sendname->s_thing, x->x_set, 1, av+i); - } - } - } -} - -static void post_netreceive_clear(t_post_netreceive *x) -{ - int i, max = x->x_max_send_entries; - - for(i=0; ix_snd_able[i]) - { - x->x_snd_able[i] = 0; - } - } -} - -static void post_netreceive_fetch_all_parameters(t_post_netreceive *x, t_float nr_sended_para) -{ - int nrsp=(int)nr_sended_para; - t_atom *ap=x->x_atbuf+x->x_min_send_entries; - - if(nrsp <= 0) - nrsp = 1; - if(nrsp > (x->x_max_send_entries - x->x_min_send_entries)) - nrsp = (x->x_max_send_entries - x->x_min_send_entries); - outlet_anything(x->x_obj.ob_outlet, x->x_send, nrsp+1, x->x_atbuf); -} - -static void post_netreceive_free(t_post_netreceive *x) -{ - freebytes(x->x_snd_able, x->x_max_send_entries * sizeof(char)); - freebytes(x->x_send_entries, x->x_max_send_entries * sizeof(t_symbol *)); - freebytes(x->x_atbuf, (x->x_max_send_entries+2) * sizeof(t_atom)); - freebytes(x->x_plus_entries, x->x_max_send_entries * sizeof(t_symbol *)); -} - -static void *post_netreceive_new(t_float fmin, t_float fmax) -{ - t_post_netreceive *x = (t_post_netreceive *)pd_new(post_netreceive_class); - int i, min = (int)fmin, max = (int)fmax; - t_atom *ap; - - if(min < 0) - min = 0; - if(max <= 0) - max = 80; - x->x_min_send_entries = min; - x->x_max_send_entries = max; - x->x_atbuf = (t_atom *)getbytes((x->x_max_send_entries+2) * sizeof(t_atom)); - x->x_snd_able = (char *)getbytes(x->x_max_send_entries * sizeof(char)); - x->x_send_entries = (t_symbol **)getbytes(x->x_max_send_entries * sizeof(t_symbol *)); - x->x_plus_entries = (t_symbol **)getbytes(x->x_max_send_entries * sizeof(t_symbol *)); - x->x_set = gensym("set"); - x->x_setall = gensym("set_all_parameters"); - x->x_send = gensym("send"); - ap = x->x_atbuf; - SETSYMBOL(ap, x->x_setall); - ap++; - for(i=1; i<=max; i++) - { - SETFLOAT(ap, 0.0); - ap++; - } - for(i=0; ix_snd_able[i] = 0; - x->x_plus_entries[i] = x->x_set; - } - outlet_new(&x->x_obj, &s_list); - return (x); -} - -void post_netreceive_setup(void) -{ - post_netreceive_class = class_new(gensym("post_netreceive"), (t_newmethod)post_netreceive_new, - (t_method)post_netreceive_free, sizeof(t_post_netreceive), 0, A_DEFFLOAT, A_DEFFLOAT, 0); - class_addlist(post_netreceive_class, post_netreceive_list); - class_addmethod(post_netreceive_class, (t_method)post_netreceive_set_item_name, gensym("set_item_name"), A_GIMME, 0); - class_addmethod(post_netreceive_class, (t_method)post_netreceive_all_parameters, gensym("all_parameters"), A_GIMME, 0); - class_addmethod(post_netreceive_class, (t_method)post_netreceive_set_all_parameters, gensym("set_all_parameters"), A_GIMME, 0); - class_addmethod(post_netreceive_class, (t_method)post_netreceive_fetch_all_parameters, gensym("fetch_all_parameters"), A_DEFFLOAT, 0); - class_addmethod(post_netreceive_class, (t_method)post_netreceive_clear, gensym("clear"), 0); - class_sethelpsymbol(post_netreceive_class, gensym("iemhelp/help-post_netreceive")); -} +/* For information on usage and redistribution, and for a DISCLAIMER OF ALL +* WARRANTIES, see the file, "LICENSE.txt," in this distribution. + +iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2004 */ + +#ifdef NT +#pragma warning( disable : 4244 ) +#pragma warning( disable : 4305 ) +#endif + +#include "m_pd.h" +#include "iemlib.h" +#include +#include +#include +#include + +/* ------------------------ post_netreceive ---------------------------- */ +static t_class *post_netreceive_class; + +typedef struct _post_netreceive +{ + t_object x_obj; + int x_max_send_entries; + int x_min_send_entries; + char *x_snd_able; + t_symbol **x_send_entries; + t_symbol **x_plus_entries; + t_symbol *x_set; + t_atom x_at[2]; + t_atom *x_atbuf; + t_symbol *x_send; + t_symbol *x_setall; +} t_post_netreceive; + +static void post_netreceive_list(t_post_netreceive *x, t_symbol *s, int ac, t_atom *av) +{ + int identifier_index = (int)atom_getintarg(0, ac, av); + t_symbol *sender=0; + + if((identifier_index >= x->x_min_send_entries) && (identifier_index < x->x_max_send_entries)) + { + if(x->x_snd_able[identifier_index] == 1) + { + sender = x->x_send_entries[identifier_index]; + if(sender->s_thing) + { + if(ac == 2) + pd_float(sender->s_thing, atom_getfloatarg(1, ac, av)); + else + pd_list(sender->s_thing, &s_list, ac-1, av+1); + } + } + else if(x->x_snd_able[identifier_index] == 2) + { + sender = x->x_send_entries[identifier_index]; + if(sender->s_thing) + { + typedmess(sender->s_thing, x->x_plus_entries[identifier_index], ac-1, av+1); + } + } + if(IS_A_FLOAT(av,1)) + SETFLOAT(x->x_atbuf+identifier_index+1, atom_getfloatarg(1, ac, av)); + else if(IS_A_SYMBOL(av,1)) + SETSYMBOL(x->x_atbuf+identifier_index+1, atom_getsymbolarg(1, ac, av)); + } +} + +/*static void post_netreceive_set_item_name(t_post_netreceive *x, t_symbol *snd, t_float findex) +{ +int index = (int)findex; + + if((index >= 0) && (index < x->x_max_send_entries)) + { + x->x_send_entries[index] = snd; + x->x_snd_able[index] = 1; + } +}*/ + +static void post_netreceive_set_item_name(t_post_netreceive *x, t_symbol *s, int ac, t_atom *av) +{ + if(ac == 2) + { + int identifier_index = (int)atom_getintarg(1, ac, av); + + if((identifier_index >= x->x_min_send_entries) && (identifier_index < x->x_max_send_entries)) + { + x->x_send_entries[identifier_index] = atom_getsymbolarg(0, ac, av); + x->x_snd_able[identifier_index] = 1; + } + } + else if(ac >= 3) + { + int identifier_index = (int)atom_getintarg(2, ac, av); + + if((identifier_index >= 0) && (identifier_index < x->x_max_send_entries)) + { + x->x_send_entries[identifier_index] = atom_getsymbolarg(1, ac, av); + x->x_snd_able[identifier_index] = 2; + x->x_plus_entries[identifier_index] = atom_getsymbolarg(0, ac, av); + } + } +} + +static void post_netreceive_all_parameters(t_post_netreceive *x, t_symbol *s, int ac, t_atom *av) +{ + int i, min = x->x_min_send_entries, max = x->x_max_send_entries; + t_symbol *sendname=0; + + if(min > ac) + min = ac; + if(max > ac) + max = ac; + for(i=min; ix_snd_able[i] == 1) + { + sendname = x->x_send_entries[i]; + if(sendname->s_thing) + { + pd_float(sendname->s_thing, atom_getfloatarg(i, ac, av)); + } + } + else if(x->x_snd_able[i] == 2) + { + sendname = x->x_send_entries[i]; + if(sendname->s_thing) + { + typedmess(sendname->s_thing, x->x_plus_entries[i], 1, av+i); + } + } + if(IS_A_FLOAT(av,i)) + SETFLOAT(x->x_atbuf+i+1, atom_getfloatarg(i, ac, av)); + else if(IS_A_SYMBOL(av,i)) + SETSYMBOL(x->x_atbuf+i+1, atom_getsymbolarg(i, ac, av)); + } +} + +static void post_netreceive_set_all_parameters(t_post_netreceive *x, t_symbol *s, int ac, t_atom *av) +{ + int i, min = x->x_min_send_entries, max = x->x_max_send_entries; + t_symbol *sendname; + + if(min > ac) + min = ac; + if(max > ac) + max = ac; + for(i=min; ix_snd_able[i]) + { + sendname = x->x_send_entries[i]; + if(sendname->s_thing) + { + typedmess(sendname->s_thing, x->x_set, 1, av+i); + } + } + } +} + +static void post_netreceive_clear(t_post_netreceive *x) +{ + int i, max = x->x_max_send_entries; + + for(i=0; ix_snd_able[i]) + { + x->x_snd_able[i] = 0; + } + } +} + +static void post_netreceive_fetch_all_parameters(t_post_netreceive *x, t_float nr_sended_para) +{ + int nrsp=(int)nr_sended_para; + t_atom *ap=x->x_atbuf+x->x_min_send_entries; + + if(nrsp <= 0) + nrsp = 1; + if(nrsp > (x->x_max_send_entries - x->x_min_send_entries)) + nrsp = (x->x_max_send_entries - x->x_min_send_entries); + outlet_anything(x->x_obj.ob_outlet, x->x_send, nrsp+1, x->x_atbuf); +} + +static void post_netreceive_free(t_post_netreceive *x) +{ + freebytes(x->x_snd_able, x->x_max_send_entries * sizeof(char)); + freebytes(x->x_send_entries, x->x_max_send_entries * sizeof(t_symbol *)); + freebytes(x->x_atbuf, (x->x_max_send_entries+2) * sizeof(t_atom)); + freebytes(x->x_plus_entries, x->x_max_send_entries * sizeof(t_symbol *)); +} + +static void *post_netreceive_new(t_float fmin, t_float fmax) +{ + t_post_netreceive *x = (t_post_netreceive *)pd_new(post_netreceive_class); + int i, min = (int)fmin, max = (int)fmax; + t_atom *ap; + + if(min < 0) + min = 0; + if(max <= 0) + max = 80; + x->x_min_send_entries = min; + x->x_max_send_entries = max; + x->x_atbuf = (t_atom *)getbytes((x->x_max_send_entries+2) * sizeof(t_atom)); + x->x_snd_able = (char *)getbytes(x->x_max_send_entries * sizeof(char)); + x->x_send_entries = (t_symbol **)getbytes(x->x_max_send_entries * sizeof(t_symbol *)); + x->x_plus_entries = (t_symbol **)getbytes(x->x_max_send_entries * sizeof(t_symbol *)); + x->x_set = gensym("set"); + x->x_setall = gensym("set_all_parameters"); + x->x_send = gensym("send"); + ap = x->x_atbuf; + SETSYMBOL(ap, x->x_setall); + ap++; + for(i=1; i<=max; i++) + { + SETFLOAT(ap, 0.0); + ap++; + } + for(i=0; ix_snd_able[i] = 0; + x->x_plus_entries[i] = x->x_set; + } + outlet_new(&x->x_obj, &s_list); + return (x); +} + +void post_netreceive_setup(void) +{ + post_netreceive_class = class_new(gensym("post_netreceive"), (t_newmethod)post_netreceive_new, + (t_method)post_netreceive_free, sizeof(t_post_netreceive), 0, A_DEFFLOAT, A_DEFFLOAT, 0); + class_addlist(post_netreceive_class, post_netreceive_list); + class_addmethod(post_netreceive_class, (t_method)post_netreceive_set_item_name, gensym("set_item_name"), A_GIMME, 0); + class_addmethod(post_netreceive_class, (t_method)post_netreceive_all_parameters, gensym("all_parameters"), A_GIMME, 0); + class_addmethod(post_netreceive_class, (t_method)post_netreceive_set_all_parameters, gensym("set_all_parameters"), A_GIMME, 0); + class_addmethod(post_netreceive_class, (t_method)post_netreceive_fetch_all_parameters, gensym("fetch_all_parameters"), A_DEFFLOAT, 0); + class_addmethod(post_netreceive_class, (t_method)post_netreceive_clear, gensym("clear"), 0); + class_sethelpsymbol(post_netreceive_class, gensym("iemhelp/help-post_netreceive")); +} -- cgit v1.2.1