Update of /cvsroot/pure-data/pd/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22628
Modified Files: Tag: desiredata builtins.c Log Message: [select] supports mixed floats and symbols
Index: builtins.c =================================================================== RCS file: /cvsroot/pure-data/pd/src/Attic/builtins.c,v retrieving revision 1.1.2.40 retrieving revision 1.1.2.41 diff -C2 -d -r1.1.2.40 -r1.1.2.41 *** builtins.c 20 Jul 2007 06:33:21 -0000 1.1.2.40 --- builtins.c 20 Jul 2007 07:28:59 -0000 1.1.2.41 *************** *** 1307,1315 **** static t_class *sel2_class; struct t_selectelement { ! t_word e_w; t_outlet *out; }; struct t_sel2 : t_object { - t_atomtype type; t_int nelement; t_selectelement *vec; --- 1307,1314 ---- static t_class *sel2_class; struct t_selectelement { ! t_atom a; t_outlet *out; }; struct t_sel2 : t_object { t_int nelement; t_selectelement *vec; *************** *** 1319,1327 ****
static void sel2_float(t_sel2 *x, t_float f) { ! if (x->type == A_FLOAT) {select_each(e,x) if (e->e_w.w_float==f) {outlet_bang(e->out); return;}} outlet_float(x->rejectout, f); } static void sel2_symbol(t_sel2 *x, t_symbol *s) { ! if (x->type == A_SYMBOL) {select_each(e,x) if (e->e_w.w_symbol==s) {outlet_bang(e->out); return;}} outlet_symbol(x->rejectout, s); } --- 1318,1326 ----
static void sel2_float(t_sel2 *x, t_float f) { ! select_each(e,x) if (e->a.a_type==A_FLOAT ) if (e->a.a_float==f) {outlet_bang(e->out); return;} outlet_float(x->rejectout, f); } static void sel2_symbol(t_sel2 *x, t_symbol *s) { ! select_each(e,x) if (e->a.a_type==A_SYMBOL) if (e->a.a_symbol==s) {outlet_bang(e->out); return;} outlet_symbol(x->rejectout, s); } *************** *** 1338,1346 **** x->atom = *argv; outlet_new(x, &s_bang); ! if (argv->a_type == A_FLOAT) { ! floatinlet_new(x, &x->atom.a_float); outlet_new(x, &s_float); ! } else { ! symbolinlet_new(x, &x->atom.a_symbol); outlet_new(x, &s_symbol); ! } return x; } else { --- 1337,1342 ---- x->atom = *argv; outlet_new(x, &s_bang); ! if (argv->a_type == A_FLOAT) {floatinlet_new(x, &x->atom.a_float ); outlet_new(x, &s_float);} ! else {symbolinlet_new(x, &x->atom.a_symbol); outlet_new(x, &s_symbol);} return x; } else { *************** *** 1348,1358 **** x->nelement = argc; x->vec = (t_selectelement *)getbytes(argc * sizeof(*x->vec)); - x->type = argv[0].a_type; t_selectelement *e = x->vec; for (int n = 0; n < argc; n++, e++) { e->out = outlet_new(x, &s_bang); ! if ((x->type = argv->a_type) == A_FLOAT) ! e->e_w.w_float = atom_getfloatarg(n, argc, argv); ! else e->e_w.w_symbol = atom_getsymbolarg(n, argc, argv); } x->rejectout = outlet_new(x, &s_float); --- 1344,1351 ---- x->nelement = argc; x->vec = (t_selectelement *)getbytes(argc * sizeof(*x->vec)); t_selectelement *e = x->vec; for (int n = 0; n < argc; n++, e++) { e->out = outlet_new(x, &s_bang); ! e->a = argv[n]; } x->rejectout = outlet_new(x, &s_float);