Update of /cvsroot/pure-data/pd/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6221
Modified Files: Tag: desiredata builtins.c Log Message: added macros select_each, a_float, a_symbol
Index: builtins.c =================================================================== RCS file: /cvsroot/pure-data/pd/src/Attic/builtins.c,v retrieving revision 1.1.2.15 retrieving revision 1.1.2.16 diff -C2 -d -r1.1.2.15 -r1.1.2.16 *** builtins.c 9 Jan 2007 22:13:01 -0000 1.1.2.15 --- builtins.c 11 Jan 2007 20:32:06 -0000 1.1.2.16 *************** *** 5,10 **** see the file "LICENSE.txt" in this distribution. */
- /* misc. */ - #define PD_PLUSPLUS_FACE #include "desire.h" --- 5,8 ---- *************** *** 49,52 **** --- 47,53 ---- #endif
+ #define a_float a_w.w_float + #define a_symbol a_w.w_symbol + #define LIST_NGETBYTE 100 /* bigger that this we use alloc, not alloca */
*************** *** 332,338 **** if (at[msg].a_type == A_FLOAT) { if (emsg > msg + 1) outlet_list(x->msgout, 0, emsg-msg, at + msg); ! else outlet_float(x->msgout, at[msg].a_w.w_float); } else if (at[msg].a_type == A_SYMBOL) ! outlet_anything(x->msgout, at[msg].a_w.w_symbol, emsg-msg-1, at + msg + 1); } nodice: --- 333,339 ---- if (at[msg].a_type == A_FLOAT) { if (emsg > msg + 1) outlet_list(x->msgout, 0, emsg-msg, at + msg); ! else outlet_float(x->msgout, at[msg].a_float); } else if (at[msg].a_type == A_SYMBOL) ! outlet_anything(x->msgout, at[msg].a_symbol, emsg-msg-1, at + msg + 1); } nodice: *************** *** 477,481 **** x->onset = onset2; if (automatic) { ! clock_delay(x->clock, x->clockdelay = ap->a_w.w_float * x->tempo); x->whenclockset = clock_getsystime(); } else outlet_list(x->outlet, 0, onset2-onset, ap); --- 478,482 ---- x->onset = onset2; if (automatic) { ! clock_delay(x->clock, x->clockdelay = ap->a_float * x->tempo); x->whenclockset = clock_getsystime(); } else outlet_list(x->outlet, 0, onset2-onset, ap); *************** *** 489,494 **** if (!target) { if (ap->a_type != A_SYMBOL) continue; ! else if (!(target = ap->a_w.w_symbol->thing)) { ! error("qlist: %s: no such object", ap->a_w.w_symbol->name); continue; } --- 490,495 ---- if (!target) { if (ap->a_type != A_SYMBOL) continue; ! else if (!(target = ap->a_symbol->thing)) { ! error("qlist: %s: no such object", ap->a_symbol->name); continue; } *************** *** 505,509 **** if (!drop) { if (ap->a_type == A_FLOAT) typedmess(target, &s_list, count, ap); ! else if (ap->a_type == A_SYMBOL) typedmess(target, ap->a_w.w_symbol, count-1, ap+1); } if (x->reentered) return; --- 506,510 ---- if (!drop) { if (ap->a_type == A_FLOAT) typedmess(target, &s_list, count, ap); ! else if (ap->a_type == A_SYMBOL) typedmess(target, ap->a_symbol, count-1, ap+1); } if (x->reentered) return; *************** *** 603,607 **** x->onset = onset2; if (ap->a_type == A_SYMBOL) ! outlet_anything(x->outlet, ap->a_w.w_symbol, onset2-onset-1, ap+1); else outlet_list(x->outlet, 0, onset2-onset, ap); } else { --- 604,608 ---- x->onset = onset2; if (ap->a_type == A_SYMBOL) ! outlet_anything(x->outlet, ap->a_symbol, onset2-onset-1, ap+1); else outlet_list(x->outlet, 0, onset2-onset, ap); } else { *************** *** 795,799 **** static void list_trim_list(t_list_trim *x, t_symbol *s, int argc, t_atom *argv) { if (argc < 1 || argv[0].a_type != A_SYMBOL) outlet_list(x->outlet, &s_list, argc, argv); ! else outlet_anything(x->outlet, argv[0].a_w.w_symbol, argc-1, argv+1); } static void list_trim_anything(t_list_trim *x, t_symbol *s, int argc, t_atom *argv) { --- 796,800 ---- static void list_trim_list(t_list_trim *x, t_symbol *s, int argc, t_atom *argv) { if (argc < 1 || argv[0].a_type != A_SYMBOL) outlet_list(x->outlet, &s_list, argc, argv); ! else outlet_anything(x->outlet, argv[0].a_symbol, argc-1, argv+1); } static void list_trim_anything(t_list_trim *x, t_symbol *s, int argc, t_atom *argv) { *************** *** 831,835 **** if (!argc || argv[0].a_type != A_SYMBOL) newest = list_append_new(s, argc, argv); else { ! t_symbol *s2 = argv[0].a_w.w_symbol; if (s2 == gensym("append")) newest = list_append_new(s, argc-1, argv+1); else if (s2 == gensym("prepend")) newest = list_prepend_new(s, argc-1, argv+1); --- 832,836 ---- if (!argc || argv[0].a_type != A_SYMBOL) newest = list_append_new(s, argc, argv); else { ! t_symbol *s2 = argv[0].a_symbol; if (s2 == gensym("append")) newest = list_append_new(s, argc-1, argv+1); else if (s2 == gensym("prepend")) newest = list_prepend_new(s, argc-1, argv+1); *************** *** 1280,1284 **** static void pdsymbol_list(t_pdsymbol *x, t_symbol *s, int ac, t_atom *av) { if (!ac) pdsymbol_bang(x); ! else if (av->a_type == A_SYMBOL) pdsymbol_symbol(x, av->a_w.w_symbol); else pdsymbol_anything(x, s, ac, av); } --- 1281,1285 ---- static void pdsymbol_list(t_pdsymbol *x, t_symbol *s, int ac, t_atom *av) { if (!ac) pdsymbol_bang(x); ! else if (av->a_type == A_SYMBOL) pdsymbol_symbol(x, av->a_symbol); else pdsymbol_anything(x, s, ac, av); } *************** *** 1388,1400 **** }; static void sel1_float(t_sel1 *x, t_float f) { ! if (x->atom.a_type==A_FLOAT && f == x->atom.a_w.w_float) outlet_bang(x->out(0)); else outlet_float(x->out(1),f); } static void sel1_symbol(t_sel1 *x, t_symbol *s) { ! if (x->atom.a_type==A_SYMBOL && s == x->atom.a_w.w_symbol) outlet_bang(x->out(0)); else outlet_symbol(x->out(1),s); } static t_class *sel2_class; struct t_selectelement { t_word e_w; ! t_outlet *e_outlet; }; struct t_sel2 : t_object { --- 1389,1401 ---- }; static void sel1_float(t_sel1 *x, t_float f) { ! if (x->atom.a_type==A_FLOAT && f == x->atom.a_float) outlet_bang(x->out(0)); else outlet_float(x->out(1),f); } static void sel1_symbol(t_sel1 *x, t_symbol *s) { ! if (x->atom.a_type==A_SYMBOL && s == x->atom.a_symbol) outlet_bang(x->out(0)); else outlet_symbol(x->out(1),s); } static t_class *sel2_class; struct t_selectelement { t_word e_w; ! t_outlet *out; }; struct t_sel2 : t_object { *************** *** 1404,1425 **** t_outlet *rejectout; }; static void sel2_float(t_sel2 *x, t_float f) { ! if (x->type == A_FLOAT) { ! t_selectelement *e = x->vec; ! for (int nelement = x->nelement; nelement--; e++) if (e->e_w.w_float == f) { ! outlet_bang(e->e_outlet); ! return; ! } ! } outlet_float(x->rejectout, f); } static void sel2_symbol(t_sel2 *x, t_symbol *s) { ! if (x->type == A_SYMBOL) { ! t_selectelement *e = x->vec; ! for (int nelement = x->nelement; nelement--; e++) if (e->e_w.w_symbol == s) { ! outlet_bang(e->e_outlet); ! return; ! } ! } outlet_symbol(x->rejectout, s); } --- 1405,1416 ---- t_outlet *rejectout; }; + #define select_each(e,x) for (t_selectelement *e = x->vec;e;e=0) for (int nelement = x->nelement; nelement--; e++) + 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); } *************** *** 1437,1443 **** outlet_new(x, &s_bang); if (argv->a_type == A_FLOAT) { ! floatinlet_new(x, &x->atom.a_w.w_float); outlet_new(x, &s_float); } else { ! symbolinlet_new(x, &x->atom.a_w.w_symbol); outlet_new(x, &s_symbol); } return x; --- 1428,1434 ---- 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; *************** *** 1449,1453 **** t_selectelement *e = x->vec; for (int n = 0; n < argc; n++, e++) { ! e->e_outlet = outlet_new(x, &s_bang); if ((x->type = argv->a_type) == A_FLOAT) e->e_w.w_float = atom_getfloatarg(n, argc, argv); --- 1440,1444 ---- 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); *************** *** 1474,1478 **** struct t_routeelement { t_word e_w; ! t_outlet *e_outlet; }; struct t_route : t_object { --- 1465,1469 ---- struct t_routeelement { t_word e_w; ! t_outlet *out; }; struct t_route : t_object { *************** *** 1487,1497 **** for (int n = x->n; n--; e++) if (e->e_w.w_symbol == sel) { if (argc > 0 && argv[0].a_type == A_SYMBOL) ! outlet_anything(e->e_outlet, argv[0].a_w.w_symbol, argc-1, argv+1); else { /* tb {: avoid 1 element lists */ ! if (argc > 1) outlet_list(e->e_outlet, 0, argc, argv); ! else if (argc == 0) outlet_bang(e->e_outlet); ! else if (argv[0].a_type == A_FLOAT) outlet_float( e->e_outlet, argv[0].a_w.w_float); ! else if (argv[0].a_type == A_SYMBOL) outlet_symbol( e->e_outlet, argv[0].a_w.w_symbol); ! else if (argv[0].a_type == A_POINTER) outlet_pointer(e->e_outlet, argv[0].a_w.w_gpointer); } /* tb } */ return; --- 1478,1488 ---- for (int n = x->n; n--; e++) if (e->e_w.w_symbol == sel) { if (argc > 0 && argv[0].a_type == A_SYMBOL) ! outlet_anything(e->out, argv[0].a_symbol, argc-1, argv+1); else { /* tb {: avoid 1 element lists */ ! if (argc > 1) outlet_list(e->out, 0, argc, argv); ! else if (argc == 0) outlet_bang(e->out); ! else if (argv[0].a_type == A_FLOAT) outlet_float( e->out, argv[0].a_float); ! else if (argv[0].a_type == A_SYMBOL) outlet_symbol( e->out, argv[0].a_symbol); ! else if (argv[0].a_type == A_POINTER) outlet_pointer(e->out, argv[0].a_w.w_gpointer); } /* tb } */ return; *************** *** 1509,1520 **** for (int n = x->n; n--; e++) if (e->e_w.w_float == f) { if (argc > 1 && argv[1].a_type == A_SYMBOL) ! outlet_anything(e->e_outlet, argv[1].a_w.w_symbol, argc-2, argv+2); ! else /* outlet_list(e->e_outlet, 0, argc-1, argv+1); */ { /* tb {: avoid 1 element lists */ argc -= 1, argv+=1; ! if (argc > 1) outlet_list(e->e_outlet, 0, argc, argv); ! else if (argc == 0) outlet_bang(e->e_outlet); ! else if (argv[0].a_type == A_FLOAT) outlet_float( e->e_outlet, argv[0].a_w.w_float); ! else if (argv[0].a_type == A_SYMBOL) outlet_symbol( e->e_outlet, argv[0].a_w.w_symbol); ! else if (argv[0].a_type == A_POINTER) outlet_pointer(e->e_outlet, argv[0].a_w.w_gpointer); } /* tb } */ return; --- 1500,1511 ---- for (int n = x->n; n--; e++) if (e->e_w.w_float == f) { if (argc > 1 && argv[1].a_type == A_SYMBOL) ! outlet_anything(e->out, argv[1].a_symbol, argc-2, argv+2); ! else /* outlet_list(e->out, 0, argc-1, argv+1); */ { /* tb {: avoid 1 element lists */ argc -= 1, argv+=1; ! if (argc > 1) outlet_list(e->out, 0, argc, argv); ! else if (argc == 0) outlet_bang(e->out); ! else if (argv[0].a_type == A_FLOAT) outlet_float( e->out, argv[0].a_float); ! else if (argv[0].a_type == A_SYMBOL) outlet_symbol( e->out, argv[0].a_symbol); ! else if (argv[0].a_type == A_POINTER) outlet_pointer(e->out, argv[0].a_w.w_gpointer); } /* tb } */ return; *************** *** 1524,1529 **** route_eachr(e,x) { if (e->e_w.w_symbol == &s_list) { ! if (argv[0].a_type==A_SYMBOL) outlet_anything(e->e_outlet, argv[0].a_w.w_symbol, argc-1, argv+1); ! else outlet_list(e->e_outlet, 0, argc, argv); return; } --- 1515,1520 ---- route_eachr(e,x) { if (e->e_w.w_symbol == &s_list) { ! if (argv[0].a_type==A_SYMBOL) outlet_anything(e->out, argv[0].a_symbol, argc-1, argv+1); ! else outlet_list(e->out, 0, argc, argv); return; } *************** *** 1531,1543 **** } else if (argc == 0) { route_eachr(e,x) { ! if (e->e_w.w_symbol == &s_bang) {outlet_bang(e->e_outlet); return;} } } else if (argv[0].a_type == A_FLOAT) { route_eachr(e,x) { ! if (e->e_w.w_symbol == &s_float) {outlet_float(e->e_outlet, argv[0].a_w.w_float); return;} } } else { route_eachr(e,x) { ! if (e->e_w.w_symbol == &s_symbol) {outlet_symbol(e->e_outlet, argv[0].a_w.w_symbol); return;} } } --- 1522,1534 ---- } else if (argc == 0) { route_eachr(e,x) { ! if (e->e_w.w_symbol == &s_bang) {outlet_bang(e->out); return;} } } else if (argv[0].a_type == A_FLOAT) { route_eachr(e,x) { ! if (e->e_w.w_symbol == &s_float) {outlet_float(e->out, argv[0].a_float); return;} } } else { route_eachr(e,x) { ! if (e->e_w.w_symbol == &s_symbol) {outlet_symbol(e->out, argv[0].a_symbol); return;} } } *************** *** 1560,1564 **** t_routeelement *e = x->vec; for (int n = 0; n < argc; n++, e++) { ! e->e_outlet = outlet_new(x, &s_list); if (x->type == A_FLOAT) e->e_w.w_float = atom_getfloatarg( n, argc, argv); else e->e_w.w_symbol = atom_getsymbolarg(n, argc, argv); --- 1551,1555 ---- t_routeelement *e = x->vec; for (int n = 0; n < argc; n++, e++) { ! e->out = outlet_new(x, &s_list); if (x->type == A_FLOAT) e->e_w.w_float = atom_getfloatarg( n, argc, argv); else e->e_w.w_symbol = atom_getsymbolarg(n, argc, argv); *************** *** 1596,1600 **** int i; for (i = argc, ap = argv; i--; ap++) ! if (ap->a_type == A_SYMBOL && *ap->a_w.w_symbol->name == 'p') nptr++; t_gpointer *gp = x->gpointer = (t_gpointer *)t_getbytes(nptr * sizeof (*gp)); --- 1587,1591 ---- int i; for (i = argc, ap = argv; i--; ap++) ! if (ap->a_type == A_SYMBOL && *ap->a_symbol->name == 'p') nptr++; t_gpointer *gp = x->gpointer = (t_gpointer *)t_getbytes(nptr * sizeof (*gp)); *************** *** 1603,1612 **** if (ap->a_type == A_FLOAT) { *vp = *ap; ! if (i) floatinlet_new(x, &vp->a_w.w_float); } else if (ap->a_type == A_SYMBOL) { ! char c = *ap->a_w.w_symbol->name; if (c == 's') { SETSYMBOL(vp, &s_symbol); ! if (i) symbolinlet_new(x, &vp->a_w.w_symbol); } else if (c == 'p') { vp->a_type = A_POINTER; --- 1594,1603 ---- if (ap->a_type == A_FLOAT) { *vp = *ap; ! if (i) floatinlet_new(x, &vp->a_float); } else if (ap->a_type == A_SYMBOL) { ! char c = *ap->a_symbol->name; if (c == 's') { SETSYMBOL(vp, &s_symbol); ! if (i) symbolinlet_new(x, &vp->a_symbol); } else if (c == 'p') { vp->a_type = A_POINTER; *************** *** 1616,1622 **** gp++; } else { ! if (c != 'f') pd_error(x, "pack: %s: bad type", ap->a_w.w_symbol->name); SETFLOAT(vp, 0); ! if (i) floatinlet_new(x, &vp->a_w.w_float); } } --- 1607,1613 ---- gp++; } else { ! if (c != 'f') pd_error(x, "pack: %s: bad type", ap->a_symbol->name); SETFLOAT(vp, 0); ! if (i) floatinlet_new(x, &vp->a_float); } } *************** *** 1660,1664 **** static void pack_float(t_pack *x, t_float f) { if (x->vec->a_type == A_FLOAT) { ! x->vec->a_w.w_float = f; pack_bang(x); } else pd_error(x, "pack_float: wrong type"); --- 1651,1655 ---- static void pack_float(t_pack *x, t_float f) { if (x->vec->a_type == A_FLOAT) { ! x->vec->a_float = f; pack_bang(x); } else pd_error(x, "pack_float: wrong type"); *************** *** 1666,1670 **** static void pack_symbol(t_pack *x, t_symbol *s) { if (x->vec->a_type == A_SYMBOL) { ! x->vec->a_w.w_symbol = s; pack_bang(x); } else pd_error(x, "pack_symbol: wrong type"); --- 1657,1661 ---- static void pack_symbol(t_pack *x, t_symbol *s) { if (x->vec->a_type == A_SYMBOL) { ! x->vec->a_symbol = s; pack_bang(x); } else pd_error(x, "pack_symbol: wrong type"); *************** *** 1721,1725 **** t_atomtype type = ap->a_type; if (type == A_SYMBOL) { ! char c = *ap->a_w.w_symbol->name; if (c == 's') { u->type = A_SYMBOL; --- 1712,1716 ---- t_atomtype type = ap->a_type; if (type == A_SYMBOL) { ! char c = *ap->a_symbol->name; if (c == 's') { u->type = A_SYMBOL; *************** *** 1729,1733 **** u->outlet = outlet_new(x, &s_pointer); } else { ! if (c != 'f') pd_error(x, "unpack: %s: bad type", ap->a_w.w_symbol->name); u->type = A_FLOAT; u->outlet = outlet_new(x, &s_float); --- 1720,1724 ---- u->outlet = outlet_new(x, &s_pointer); } else { ! if (c != 'f') pd_error(x, "unpack: %s: bad type", ap->a_symbol->name); u->type = A_FLOAT; u->outlet = outlet_new(x, &s_float); *************** *** 1747,1752 **** t_atomtype type = u->type; if (type != ap->a_type) pd_error(x, "unpack: type mismatch"); ! else if (type == A_FLOAT) outlet_float( u->outlet, ap->a_w.w_float); ! else if (type == A_SYMBOL)outlet_symbol( u->outlet, ap->a_w.w_symbol); else outlet_pointer(u->outlet, ap->a_w.w_gpointer); } --- 1738,1743 ---- t_atomtype type = u->type; if (type != ap->a_type) pd_error(x, "unpack: type mismatch"); ! else if (type == A_FLOAT) outlet_float( u->outlet, ap->a_float); ! else if (type == A_SYMBOL)outlet_symbol( u->outlet, ap->a_symbol); else outlet_pointer(u->outlet, ap->a_w.w_gpointer); } *************** *** 1797,1801 **** t_atomtype thistype = ap->a_type; char c; ! if (thistype == TR_SYMBOL) c = ap->a_w.w_symbol->name[0]; else if (thistype == TR_FLOAT) c = 'f'; else c = 0; --- 1788,1792 ---- t_atomtype thistype = ap->a_type; char c; ! if (thistype == TR_SYMBOL) c = ap->a_symbol->name[0]; else if (thistype == TR_FLOAT) c = 'f'; else c = 0; *************** *** 1807,1811 **** else if (c == 'a') u->type = TR_ANYTHING, u->outlet = outlet_new(x, &s_symbol); else { ! pd_error(x, "trigger: %s: bad type", ap->a_w.w_symbol->name); u->type = TR_FLOAT, u->outlet = outlet_new(x, &s_float); } --- 1798,1802 ---- else if (c == 'a') u->type = TR_ANYTHING, u->outlet = outlet_new(x, &s_symbol); else { ! pd_error(x, "trigger: %s: bad type", ap->a_symbol->name); u->type = TR_FLOAT, u->outlet = outlet_new(x, &s_float); } *************** *** 2989,2993 **** post("pipe: %s: bad time delay value", stupid); deltime = 0; ! } else deltime = argv[argc-1].a_w.w_float; argc--; } --- 2980,2984 ---- post("pipe: %s: bad time delay value", stupid); deltime = 0; ! } else deltime = argv[argc-1].a_float; argc--; } *************** *** 3001,3005 **** vec = x->vec = (t_pipeout *)getbytes(argc * sizeof(*x->vec)); for (i = argc, ap = argv; i--; ap++) ! if (ap->a_type == A_SYMBOL && *ap->a_w.w_symbol->name == 'p') nptr++; gp = x->gp = (t_gpointer *)t_getbytes(nptr * sizeof (*gp)); --- 2992,2996 ---- vec = x->vec = (t_pipeout *)getbytes(argc * sizeof(*x->vec)); for (i = argc, ap = argv; i--; ap++) ! if (ap->a_type == A_SYMBOL && *ap->a_symbol->name == 'p') nptr++; gp = x->gp = (t_gpointer *)t_getbytes(nptr * sizeof (*gp)); *************** *** 3009,3019 **** vp->a = *ap; outlet_new(x, &s_float); ! if (i) floatinlet_new(x, &vp->a.a_w.w_float); } else if (ap->a_type == A_SYMBOL) { ! char c = *ap->a_w.w_symbol->name; if (c == 's') { SETSYMBOL(&vp->a, &s_symbol); outlet_new(x, &s_symbol); ! if (i) symbolinlet_new(x, &vp->a.a_w.w_symbol); } else if (c == 'p') { vp->a.a_type = A_POINTER; --- 3000,3010 ---- vp->a = *ap; outlet_new(x, &s_float); ! if (i) floatinlet_new(x, &vp->a.a_float); } else if (ap->a_type == A_SYMBOL) { ! char c = *ap->a_symbol->name; if (c == 's') { SETSYMBOL(&vp->a, &s_symbol); outlet_new(x, &s_symbol); ! if (i) symbolinlet_new(x, &vp->a.a_symbol); } else if (c == 'p') { vp->a.a_type = A_POINTER; *************** *** 3024,3031 **** gp++; } else { ! if (c != 'f') error("pack: %s: bad type", ap->a_w.w_symbol->name); SETFLOAT(&vp->a, 0); outlet_new(x, &s_float); ! if (i) floatinlet_new(x, &vp->a.a_w.w_float); } } --- 3015,3022 ---- gp++; } else { ! if (c != 'f') error("pack: %s: bad type", ap->a_symbol->name); SETFLOAT(&vp->a, 0); outlet_new(x, &s_float); ! if (i) floatinlet_new(x, &vp->a.a_float); } } *************** *** 3081,3086 **** for (i = 0, gp = x->gp, p = x->vec, ap = av; i < ac; i++, p++, ap++) { switch (p->a.a_type) { ! case A_FLOAT: p->a.a_w.w_float = atom_getfloat(ap); break; ! case A_SYMBOL: p->a.a_w.w_symbol = atom_getsymbol(ap); break; case A_POINTER: gpointer_unset(gp); --- 3072,3077 ---- for (i = 0, gp = x->gp, p = x->vec, ap = av; i < ac; i++, p++, ap++) { switch (p->a.a_type) { ! case A_FLOAT: p->a.a_float = atom_getfloat(ap); break; ! case A_SYMBOL: p->a.a_symbol = atom_getsymbol(ap); break; case A_POINTER: gpointer_unset(gp);