static void list_cat_anything(t_list_cat *x, t_symbol *s, int argc, t_atom *argv) { t_atom *outv; int outc = x->x_alist.l_n + argc + 1; XL_ATOMS_ALLOCA(outv, outc); SETSYMBOL(outv + x->x_alist.l_n, s); atoms_copy(argc, argv, outv + x->x_alist.l_n + 1); if (x->x_alist.l_npointer) { t_alist y; alist_clone(&x->x_alist, &y); alist_toatoms(&y, outv); outlet_list(x->x_obj.ob_outlet, &s_list, outc, outv); alist_clear(&y); } else { alist_toatoms(&x->x_alist, outv); outlet_list(x->x_obj.ob_outlet, &s_list, outc, outv); } if (x->x_alist.l_n <= 1) alist_anything(&x->x_alist, s, outc, outv); else alist_list(&x->x_alist, s, outc, outv); XL_ATOMS_FREEA(outv, outc); }
static void prepender_list(t_prepender *x, t_symbol *s, int argc, t_atom *argv) { t_atom *outv; if(x->x_id.a_type == A_FLOAT) { ATOMS_ALLOCA(outv, argc + 1); atoms_copy(argc, argv, outv + 1); *outv = x->x_id; argc++; outlet_list(x->x_obj.ob_outlet, &s_list, argc, outv); } else { ATOMS_ALLOCA(outv, argc); atoms_copy(argc, argv, outv); outlet_anything(x->x_obj.ob_outlet, x->x_id.a_w.w_symbol, argc, outv); } ATOMS_FREEA(outv, argc); }
static void list_split_anything(t_list_split *x, t_symbol *s, int argc, t_atom *argv) { t_atom *outv; XL_ATOMS_ALLOCA(outv, argc+1); SETSYMBOL(outv, s); atoms_copy(argc, argv, outv + 1); list_split_list(x, &s_list, argc+1, outv); XL_ATOMS_FREEA(outv, argc+1); }
static void proxy_any(t_proxy *x, t_symbol *s, int argc, t_atom *argv) { t_atom *outv; if(x->id.a_type == A_FLOAT) { ATOMS_ALLOCA(outv, argc + 2); atoms_copy(argc, argv, outv + 2); argc += 2; SETSYMBOL(outv+1, s); *outv = x->id; outlet_list(x->x->x_obj.ob_outlet, &s_list, argc, outv); } else { ATOMS_ALLOCA(outv, argc + 1); atoms_copy(argc, argv, outv + 1); argc++; SETSYMBOL(outv, s); outlet_anything(x->x->x_obj.ob_outlet, x->id.a_w.w_symbol, argc, outv); } ATOMS_FREEA(outv, argc); }
struct sys * sys_copy(struct sys *sys) { struct sys *copy; int i; copy = malloc(sizeof(struct sys)); memcpy(copy, sys, sizeof(struct sys)); copy->graph = graph_copy(sys->graph); copy->sel = sel_copy(sys->sel); copy->visible = sel_copy(sys->visible); copy->frames = malloc(copy->nframesalloc * sizeof(struct frame)); for (i = 0; i < sys_get_frame_count(sys); i++) copy->frames[i].atoms = atoms_copy(sys->frames[i].atoms); return (copy); }
static void list_prepend_list(t_list_prepend *x, t_symbol *s, int argc, t_atom *argv) { t_atom *outv; int outc = x->x_alist.l_n + argc; XL_ATOMS_ALLOCA(outv, outc); atoms_copy(argc, argv, outv + x->x_alist.l_n); if (x->x_alist.l_npointer) { t_alist y; alist_clone(&x->x_alist, &y); alist_toatoms(&y, outv); outlet_list(x->x_obj.ob_outlet, &s_list, outc, outv); alist_clear(&y); } else { alist_toatoms(&x->x_alist, outv); outlet_list(x->x_obj.ob_outlet, &s_list, outc, outv); } XL_ATOMS_FREEA(outv, outc); }
static void list_append_anything(t_list_append *x, t_symbol *s, int argc, t_atom *argv) { t_atom *outv; int n, outc = x->x_alist.l_n + argc + 1; ATOMS_ALLOCA(outv, outc); SETSYMBOL(outv, s); atoms_copy(argc, argv, outv + 1); if (x->x_alist.l_npointer) { t_alist y; alist_clone(&x->x_alist, &y); alist_toatoms(&y, outv + 1 + argc); outlet_list(x->x_obj.ob_outlet, &s_list, outc, outv); alist_clear(&y); } else { alist_toatoms(&x->x_alist, outv + 1 + argc); outlet_list(x->x_obj.ob_outlet, &s_list, outc, outv); } ATOMS_FREEA(outv, outc); }