3
/*--------------- vvplus ---------------*/
7
static t_class *vvplus_class;
8
static t_class *vvplus_scal_class;
10
typedef struct _vvplus
22
static void vvplus_lst2(t_vvplus *x, t_symbol *s, int argc, t_atom *argv)
26
freebytes(x->buf2, x->n2 * sizeof(t_float));
28
x->buf2=(t_float *)getbytes(sizeof(t_float)*x->n2);
31
while(argc--)*fp++=atom_getfloat(argv++);
34
static void vvplus_lst(t_vvplus *x, t_symbol *s, int argc, t_atom *argv)
42
freebytes(x->buf1, x->n1 * sizeof(t_float));
44
x->buf1=(t_float *)getbytes(sizeof(t_float)*x->n1);
47
while(argc--)*fp++=atom_getfloat(argv++);
51
outlet_float(x->x_obj.ob_outlet, *x->buf1+*x->buf2);
60
ap = (t_atom *)getbytes(sizeof(t_atom)*n);
71
ap = (t_atom *)getbytes(sizeof(t_atom)*n);
85
post("scalar multiplication: truncating vectors to the same length");
86
if (x->n2<x->n1)n=x->n2;
88
ap = (t_atom *)getbytes(sizeof(t_atom)*n);
92
SETFLOAT(a, *fp+++*fp2++);
96
outlet_list(x->x_obj.ob_outlet, gensym("list"), n, ap);
97
freebytes(ap, sizeof(t_atom)*n);
99
static void vvplus_free(t_vvplus *x)
101
freebytes(x->buf1, sizeof(t_float)*x->n1);
102
freebytes(x->buf2, sizeof(t_float)*x->n2);
105
static void *vvplus_new(t_symbol *s, int argc, t_atom *argv)
110
x = (t_vvplus *)pd_new(vvplus_class);
111
inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("list"), gensym(""));
112
} else x = (t_vvplus *)pd_new(vvplus_scal_class);
114
outlet_new(&x->x_obj, 0);
117
x->buf1 =(t_float*)getbytes(sizeof(t_float));
120
if (argc)vvplus_lst2(x, gensym("list"), argc, argv);
123
x->buf2 =(t_float*)getbytes(sizeof(t_float));
127
if (argc==1)floatinlet_new(&x->x_obj, x->buf2);
132
void vvplus_setup(void)
134
vvplus_class = class_new(gensym("vvplus"), (t_newmethod)vvplus_new,
135
(t_method)vvplus_free, sizeof(t_vvplus), 0, A_GIMME, 0);
136
class_addcreator((t_newmethod)vvplus_new, gensym("vv+"), A_GIMME, 0);
137
class_addlist(vvplus_class, vvplus_lst);
138
class_addmethod (vvplus_class, (t_method)vvplus_lst2, gensym(""), A_GIMME, 0);
139
vvplus_scal_class = class_new(gensym("vv+"), 0, (t_method)vvplus_free,
140
sizeof(t_vvplus), 0, 0);
141
class_addlist(vvplus_scal_class, vvplus_lst);