aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--desiredata/src/builtins.c295
1 files changed, 142 insertions, 153 deletions
diff --git a/desiredata/src/builtins.c b/desiredata/src/builtins.c
index b1547ab9..c50d22eb 100644
--- a/desiredata/src/builtins.c
+++ b/desiredata/src/builtins.c
@@ -76,7 +76,7 @@ static t_class *C##_class; \
static void *C##_new() { \
t_object *x = (t_object *)pd_new(C##_class); \
outlet_new(x, &s_float); return x;} \
-static void C##_float(t_object *x, t_float a) {outlet_float(x->outlet, EXPR);}
+static void C##_float(t_object *x, t_float a) {x->outlet->send(EXPR);}
#define FUNC1DECL(C,SYM) \
C##_class = class_new2(SYM,C##_new,0,sizeof(t_object),0,""); \
class_addfloat(C##_class, (t_method)C##_float); \
@@ -109,7 +109,7 @@ static void openpanel_bang(t_openpanel *x) {
static void openpanel_symbol(t_openpanel *x, t_symbol *s) {
sys_vgui("pdtk_openpanel {%s} {%s}\n", x->s->name, (s && s->name) ? s->name : "\"\"");
}
-static void openpanel_callback(t_openpanel *x, t_symbol *s) {outlet_symbol(x->outlet, s);}
+static void openpanel_callback(t_openpanel *x, t_symbol *s) {x->outlet->send(s);}
static void openpanel_path(t_openpanel *x, t_symbol *s) {x->path=s;}
static void openpanel_free(t_openpanel *x) {pd_unbind(x, x->s);}
static void openpanel_setup() {
@@ -140,7 +140,7 @@ static void savepanel_bang(t_savepanel *x) {
static void savepanel_symbol(t_savepanel *x, t_symbol *s) {
sys_vgui("pdtk_savepanel {%s} {%s}\n", x->s->name, (s && s->name) ? s->name : "\"\"");
}
-static void savepanel_callback(t_savepanel *x, t_symbol *s) {outlet_symbol(x->outlet, s);}
+static void savepanel_callback(t_savepanel *x, t_symbol *s) {x->outlet->send(s);}
static void savepanel_free(t_savepanel *x) {pd_unbind(x, x->s);}
static void savepanel_setup() {
t_class *c = savepanel_class = class_new2("savepanel",savepanel_new,savepanel_free,sizeof(t_savepanel),0,"S");
@@ -160,7 +160,7 @@ static void *key_new() {
pd_bind(x, key_sym);
return x;
}
-static void key_float(t_key *x, t_floatarg f) {outlet_float(x->outlet, f);}
+static void key_float(t_key *x, t_floatarg f) {x->outlet->send(f);}
struct t_keyup : t_object {};
static void *keyup_new() {
@@ -169,7 +169,7 @@ static void *keyup_new() {
pd_bind(x, keyup_sym);
return x;
}
-static void keyup_float(t_keyup *x, t_floatarg f) {outlet_float(x->outlet, f);}
+static void keyup_float(t_keyup *x, t_floatarg f) {x->outlet->send(f);}
struct t_keyname : t_object {};
static void *keyname_new() {
@@ -180,8 +180,8 @@ static void *keyname_new() {
return x;
}
static void keyname_list(t_keyname *x, t_symbol *s, int ac, t_atom *av) {
- outlet_symbol(x->out(1), atom_getsymbolarg(1, ac, av));
- outlet_float( x->out(0), atom_getfloatarg( 0, ac, av));
+ x->out(1)->send(atom_getsymbolarg(1, ac, av));
+ x->out(0)->send(atom_getfloatarg( 0, ac, av));
}
static void key_free( t_key *x) {pd_unbind(x, key_sym);}
static void keyup_free( t_keyup *x) {pd_unbind(x, keyup_sym);}
@@ -246,14 +246,14 @@ static void netsend_connect(t_netsend *x, t_symbol *hostname, t_floatarg fportno
return;
}
x->fd = sockfd;
- outlet_float(x->outlet, 1);
+ x->outlet->send(1.);
}
static void netsend_disconnect(t_netsend *x) {
if (x->fd < 0) return;
sys_closesocket(x->fd);
x->fd = -1;
- outlet_float(x->outlet, 0);
+ x->outlet->send(0.);
}
static void netsend_send(t_netsend *x, t_symbol *s, int argc, t_atom *argv) {
if (x->fd < 0) {error("netsend: not connected"); return;}
@@ -311,7 +311,7 @@ struct t_netreceive : t_object {
t_socketreceiver *sr;
};
static void netreceive_notify(t_netreceive *x) {
- outlet_float(x->connectout, --x->nconnections);
+ x->connectout->send(--x->nconnections);
}
static void netreceive_doit(t_netreceive *x, t_binbuf *b) {
int natom = binbuf_getnatom(b);
@@ -326,7 +326,7 @@ static void netreceive_doit(t_netreceive *x, t_binbuf *b) {
}
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 x->msgout->send(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);
}
@@ -341,7 +341,7 @@ static void netreceive_connectpoll(t_netreceive *x) {
t_socketreceiver *y = socketreceiver_new((t_pd *)x, fd,
(t_socketnotifier)netreceive_notify, x->msgout?(t_socketreceivefn)netreceive_doit:0, 0);
sys_addpollfn(fd, (t_fdpollfn)socketreceiver_read, y);
- outlet_float(x->connectout, ++x->nconnections);
+ x->connectout->send(++x->nconnections);
y->next = x->sr;
x->sr = y;
}
@@ -501,7 +501,7 @@ static void qlist_donext(t_qlist *x, int drop, int automatic) {
end:
x->onset = 0x7fffffff;
- outlet_bang(x->out(1));
+ x->out(1)->send();
x->whenclockset = 0;
}
static void qlist_next(t_qlist *x, t_floatarg drop) {qlist_donext(x, drop != 0, 0);}
@@ -595,7 +595,7 @@ static void textfile_bang(t_textfile *x) {
else outlet_list(x->outlet, 0, onset2-onset, ap);
} else {
x->onset = 0x7fffffff;
- outlet_bang(x->out(1));
+ x->out(1)->send();
}
}
@@ -750,8 +750,8 @@ static t_pd *list_length_new() {
outlet_new(x, &s_float);
return x;
}
-static void list_length_list( t_list_length *x, t_symbol *s, int argc, t_atom *argv) {outlet_float(x->outlet, (float)argc);}
-static void list_length_anything(t_list_length *x, t_symbol *s, int argc, t_atom *argv) {outlet_float(x->outlet, (float)argc+1);}
+static void list_length_list( t_list_length *x, t_symbol *s, int argc, t_atom *argv) {x->outlet->send(float(argc));}
+static void list_length_anything(t_list_length *x, t_symbol *s, int argc, t_atom *argv) {x->outlet->send(float(argc+1));}
static void *list_new(t_pd *dummy, t_symbol *s, int argc, t_atom *argv) {
t_pd *newest = 0; /* hide global var */
@@ -811,7 +811,7 @@ static void random_bang(t_random *x) {
x->state = randval = randval * 472940017 + 832416023;
nval = (int)((double)range * (double)randval * (1./4294967296.));
if (nval >= range) nval = (int)(range-1);
- outlet_float(x->outlet, nval);
+ x->outlet->send(nval);
}
static void random_seed(t_random *x, float f, float glob) {x->state = (int)f;}
static void random_setup() {
@@ -828,7 +828,7 @@ static void *loadbang_new() {
return x;
}
static void loadbang_loadbang(t_loadbang *x) {
- if (!sys_noloadbang) outlet_bang(x->outlet);
+ if (!sys_noloadbang) x->outlet->send();
}
static void loadbang_setup() {
loadbang_class = class_new2("loadbang",loadbang_new,0,sizeof(t_loadbang),CLASS_NOINLET,"");
@@ -900,13 +900,13 @@ static void cputime_bang2(t_cputime *x) {
((kerneltime.QuadPart - x->kerneltime.QuadPart) +
(usertime.QuadPart - x->usertime.QuadPart)) : 0;
#endif
- outlet_float(x->outlet, elapsedcpu);
+ x->outlet->send(elapsedcpu);
}
static void realtime_bang(t_realtime *x) {x->setrealtime = sys_getrealtime();}
static void timer_bang(t_timer *x ) {x->settime = clock_getsystime();}
-static void realtime_bang2(t_realtime *x) {outlet_float(x->outlet, (sys_getrealtime() - x->setrealtime) * 1000.);}
-static void timer_bang2(t_timer *x ) {outlet_float(x->outlet, clock_gettimesince(x->settime));}
+static void realtime_bang2(t_realtime *x) {x->outlet->send((sys_getrealtime() - x->setrealtime) * 1000.);}
+static void timer_bang2(t_timer *x ) {x->outlet->send(clock_gettimesince(x->settime));}
static void *cputime_new() {
t_cputime *x = (t_cputime *)pd_new(cputime_class);
@@ -992,7 +992,7 @@ static void *macro_new(t_symbol *s) {
return x;
}
-static void macro_bang(t_macro *x) {outlet_bang(x->bangout);}
+static void macro_bang(t_macro *x) {x->bangout->send();}
static void macro_send(t_macro *x, t_symbol *s, int argc, t_atom *argv) {
std::ostringstream t;
@@ -1093,7 +1093,7 @@ static void any_bang(t_any *x) {
t_atom *outv; int outc = x->alist->n;
ATOMS_ALLOCA(outv, outc);
alist_toatoms(x->alist, outv);
- if (!binbuf_getnatom(x->alist)) {outlet_bang(x->outlet);return;}
+ if (!binbuf_getnatom(x->alist)) {x->outlet->send();return;}
if (outv[0].a_type == A_FLOAT) {outlet_anything(x->outlet, &s_list, outc, outv);}
if (outv[0].a_type == A_SYMBOL) {outlet_anything(x->outlet, outv[0].a_symbol, outc-1, outv+1);}
ATOMS_FREEA(outv, outc);
@@ -1135,7 +1135,7 @@ static void *binop_new(t_class *floatclass, t_floatarg f) {
#define BINOP(NAME,EXPR) \
static t_class *NAME##_class; \
static void *NAME##_new(t_floatarg f) {return binop_new(NAME##_class, f);} \
-static void NAME##_bang(t_binop *x) {float a=x->f1,b=x->f2; outlet_float(x->outlet,(EXPR));} \
+static void NAME##_bang(t_binop *x) {float a=x->f1,b=x->f2; x->outlet->send(EXPR);} \
static void NAME##_float(t_binop *x, t_float f) {x->f1=f; NAME##_bang(x);}
BINOP(binop_plus,a+b)
@@ -1197,8 +1197,8 @@ static void *clip_new(t_floatarg f2, t_floatarg f3) {
outlet_new(x, &s_float);
return x;
}
-static void clip_bang( t_clip *x) { outlet_float(x->outlet, clip(x->f1,x->f2,x->f3));}
-static void clip_float(t_clip *x, t_float f) {x->f1 = f; outlet_float(x->outlet, clip(x->f1,x->f2,x->f3));}
+static void clip_bang( t_clip *x) { x->outlet->send(clip(x->f1,x->f2,x->f3));}
+static void clip_float(t_clip *x, t_float f) {x->f1 = f; x->outlet->send(clip(x->f1,x->f2,x->f3));}
void arithmetic_setup() {
t_symbol *s = gensym("operators");
@@ -1258,20 +1258,20 @@ void arithmetic_setup() {
class_addbang(clip_class, clip_bang);
}
-static t_class *pdint_class; struct t_pdint : t_object {t_float f;};
-static t_class *pdfloat_class; struct t_pdfloat : t_object {t_float f;};
-static t_class *pdsymbol_class; struct t_pdsymbol : t_object {t_symbol *s;};
+static t_class *pdint_class; struct t_pdint : t_object {t_float v;};
+static t_class *pdfloat_class; struct t_pdfloat : t_object {t_float v;};
+static t_class *pdsymbol_class; struct t_pdsymbol : t_object {t_symbol *v;};
static t_class *bang_class; struct t_bang : t_object {};
-static void pdint_bang(t_pdint *x) {outlet_float(x->outlet, (t_float)(int)x->f);}
-static void pdint_float(t_pdint *x, t_float f) {x->f = f; pdint_bang(x);}
+static void pdint_bang(t_pdint *x) {x->outlet->send(t_float(int(x->v)));}
+static void pdint_float(t_pdint *x, t_float v) {x->v = v; pdint_bang(x);}
-static void pdfloat_bang(t_pdfloat *x) {outlet_float(x->outlet, x->f);}
-static void pdfloat_float(t_pdfloat *x, t_float f) {x->f=f; pdfloat_bang(x);}
+static void pdfloat_bang(t_pdfloat *x) {x->outlet->send(x->v);}
+static void pdfloat_float(t_pdfloat *x, t_float v) {x->v=v; pdfloat_bang(x);}
-static void pdsymbol_bang(t_pdsymbol *x) {outlet_symbol(x->outlet, x->s);}
-static void pdsymbol_symbol( t_pdsymbol *x, t_symbol *s ) {x->s=s; pdsymbol_bang(x);}
-static void pdsymbol_anything(t_pdsymbol *x, t_symbol *s, int ac, t_atom *av) {x->s=s; pdsymbol_bang(x);}
+static void pdsymbol_bang(t_pdsymbol *x) {x->outlet->send(x->v);}
+static void pdsymbol_symbol( t_pdsymbol *x, t_symbol *v ) {x->v=v; pdsymbol_bang(x);}
+static void pdsymbol_anything(t_pdsymbol *x, t_symbol *v, int ac, t_atom *av) {x->v=v; pdsymbol_bang(x);}
/* For "list" message don't just output "list"; if empty, we want to bang the symbol and
if it starts with a symbol, we output that. Otherwise it's not clear what we should do
@@ -1286,21 +1286,18 @@ static void pdsymbol_list(t_pdsymbol *x, t_symbol *s, int ac, t_atom *av) {
}
#endif
-static void *pdint_new(t_floatarg f) {
- t_pdint *x = (t_pdint *)pd_new(pdint_class);
- x->f = f; outlet_new(x, &s_float); floatinlet_new(x, &x->f);
+static void *pdint_new(t_floatarg v) {
+ t_pdint *x = (t_pdint *) pd_new(pdint_class ); x->v=v; outlet_new(x,&s_float); floatinlet_new(x,&x->v);
return x;
}
-static void *pdfloat_new(t_pd *dummy, t_float f) {
- t_pdfloat *x = (t_pdfloat *)pd_new(pdfloat_class);
- x->f = f; outlet_new(x, &s_float); floatinlet_new(x, &x->f);
+static void *pdfloat_new(t_pd *dummy, t_float v) {
+ t_pdfloat *x = (t_pdfloat *)pd_new(pdfloat_class); x->v=v; outlet_new(x,&s_float); floatinlet_new(x,&x->v);
pd_set_newest((t_pd *)x);
return x;
}
static void *pdfloat_new2(t_floatarg f) {return pdfloat_new(0, f);}
-static void *pdsymbol_new(t_pd *dummy, t_symbol *s) {
- t_pdsymbol *x = (t_pdsymbol *)pd_new(pdsymbol_class);
- x->s = s; outlet_new(x, &s_symbol);symbolinlet_new(x, &x->s);
+static void *pdsymbol_new(t_pd *dummy, t_symbol *v) {
+ t_pdsymbol *x = (t_pdsymbol *)pd_new(pdsymbol_class); x->v=v; outlet_new(x, &s_symbol); symbolinlet_new(x, &x->v);
pd_set_newest((t_pd *)x);
return x;
}
@@ -1311,7 +1308,7 @@ static void *bang_new(t_pd *dummy) {
return x;
}
static void *bang_new2(t_bang f) {return bang_new(0);}
-static void bang_bang(t_bang *x) {outlet_bang(x->outlet);}
+static void bang_bang(t_bang *x) {x->outlet->send();}
void misc_setup() {
pdint_class = class_new2("int",pdint_new,0,sizeof(t_pdint),0,"F");
@@ -1347,12 +1344,12 @@ static void send_pointer( t_send *x, t_gpointer *gp) { if (x
static void send_list( t_send *x, t_symbol *s, int argc, t_atom *argv) {if (x->sym->thing) pd_list(x->sym->thing,s,argc,argv);}
static void send_anything(t_send *x, t_symbol *s, int argc, t_atom *argv) {if (x->sym->thing) typedmess(x->sym->thing,s,argc,argv);}
-static void receive_bang( t_receive *x) { outlet_bang(x->outlet);}
-static void receive_float( t_receive *x, t_float f) { outlet_float(x->outlet, f);}
-static void receive_symbol( t_receive *x, t_symbol *s) { outlet_symbol(x->outlet, s);}
-static void receive_pointer( t_receive *x, t_gpointer *gp) { outlet_pointer(x->outlet, gp);}
-static void receive_list( t_receive *x, t_symbol *s, int argc, t_atom *argv) { outlet_list(x->outlet, s, argc, argv);}
-static void receive_anything(t_receive *x, t_symbol *s, int argc, t_atom *argv) {outlet_anything(x->outlet, s, argc, argv);}
+static void receive_bang( t_receive *x) { x->outlet->send();}
+static void receive_float( t_receive *x, t_float v) { x->outlet->send(v);}
+static void receive_symbol( t_receive *x, t_symbol *v) { x->outlet->send(v);}
+static void receive_pointer( t_receive *x, t_gpointer *v) { x->outlet->send(v);}
+static void receive_list( t_receive *x, t_symbol *s, int argc, t_atom *argv) {x->outlet->send(argc,argv);}
+static void receive_anything(t_receive *x, t_symbol *s, int argc, t_atom *argv) {x->outlet->send(s,argc,argv);}
static void *receive_new(t_symbol *s) {
t_receive *x = (t_receive *)pd_new(receive_class);
x->sym = s;
@@ -1403,12 +1400,12 @@ struct t_select : t_object {
#define select_each(e,x) for (t_selectelement *e = x->vec;e;e=0) for (int nelement = x->nelement; nelement--; e++)
static void select_float(t_select *x, t_float f) {
- select_each(e,x) if (e->a.a_type==A_FLOAT && e->a.a_float==f) {outlet_bang(e->out); return;}
- outlet_float(x->rejectout, f);
+ select_each(e,x) if (e->a.a_type==A_FLOAT && e->a.a_float==f) {e->out->send(); return;}
+ x->rejectout->send(f);
}
static void select_symbol(t_select *x, t_symbol *s) {
- select_each(e,x) if (e->a.a_type==A_SYMBOL && e->a.a_symbol==s) {outlet_bang(e->out); return;}
- outlet_symbol(x->rejectout, s);
+ select_each(e,x) if (e->a.a_type==A_SYMBOL && e->a.a_symbol==s) {e->out->send(); return;}
+ x->rejectout->send(s);
}
static void select_free(t_select *x) {free(x->vec);}
static void *select_new(t_symbol *s, int argc, t_atom *argv) {
@@ -1459,8 +1456,8 @@ static void route_anything(t_route *x, t_symbol *sel, int argc, t_atom *argv) {
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 outlet_atom(e->out,&argv[0]);
+ else if (argc == 0) e->out->send();
+ else e->out->send(&argv[0]);
} /* tb } */
return;
}
@@ -1477,12 +1474,12 @@ static void route_list(t_route *x, t_symbol *sel, int argc, t_atom *argv) {
else {
argc--; argv++;
if (argc > 1) outlet_list(e->out, 0, argc, argv);
- else if (argc == 0) outlet_bang(e->out);
- else outlet_atom(e->out,&argv[0]);
+ else if (argc == 0) e->out->send();
+ else e->out->send(&argv[0]);
}
return;
} else if (e->a.a_type == A_SYMBOL && e->a.a_symbol == &s_float) {
- outlet_float(e->out, argv[0].a_float);
+ e->out->send(argv[0].a_float);
return;
}
} else { /* symbol arguments */
@@ -1492,13 +1489,13 @@ static void route_list(t_route *x, t_symbol *sel, int argc, t_atom *argv) {
else outlet_list(e->out, 0, argc, argv);
return;
}
- } else if (argc==0) {route_eachr(e,x) {if (e->a.a_symbol==&s_bang ) {outlet_bang(e->out ); return;}}
- } else if (argv[0].a_type==A_FLOAT) {route_eachr(e,x) {if (e->a.a_symbol==&s_float ) {outlet_atom(e->out,&argv[0]); return;}}
- } else if (argv[0].a_type==A_SYMBOL) {route_eachr(e,x) {if (e->a.a_symbol==&s_symbol ) {outlet_atom(e->out,&argv[0]); return;}}
- } else if (argv[0].a_type==A_POINTER){route_eachr(e,x) {if (e->a.a_symbol==&s_pointer) {outlet_atom(e->out,&argv[0]); return;}}
+ } else if (argc==0) {route_eachr(e,x) {if (e->a.a_symbol==&s_bang ) {e->out->send( ); return;}}
+ } else if (argv[0].a_type==A_FLOAT) {route_eachr(e,x) {if (e->a.a_symbol==&s_float ) {e->out->send(&argv[0]); return;}}
+ } else if (argv[0].a_type==A_SYMBOL) {route_eachr(e,x) {if (e->a.a_symbol==&s_symbol ) {e->out->send(&argv[0]); return;}}
+ } else if (argv[0].a_type==A_POINTER){route_eachr(e,x) {if (e->a.a_symbol==&s_pointer) {e->out->send(&argv[0]); return;}}
}
}
- if (!argc) outlet_bang(x->rejectout); else outlet_list(x->rejectout, 0, argc, argv);
+ if (!argc) x->rejectout->send(); else outlet_list(x->rejectout, 0, argc, argv);
}
static void route_free(t_route *x) {free(x->vec);}
@@ -1659,9 +1656,9 @@ static void *unpack_new(t_symbol *s, int argc, t_atom *argv) {
}
static void unpack_list(t_unpack *x, t_symbol *s, int argc, t_atom *argv) {
if (argc > x->n) argc = x->n;
- //for (int i=argc-1; i>=0; i--) outlet_atom(x->vec[i],&argv[i]);
+ //for (int i=argc-1; i>=0; i--) x->vec[i]->send(&argv[i]);
for (int i=argc-1; i>=0; i--) {
- if (x->vat[i]==A_ATOM || x->vat[i]==argv[i].a_type) outlet_atom(x->vec[i],&argv[i]);
+ if (x->vat[i]==A_ATOM || x->vat[i]==argv[i].a_type) x->vec[i]->send(&argv[i]);
else error("type mismatch");
}
}
@@ -1724,27 +1721,26 @@ static void *trigger_new(t_symbol *s, int argc, t_atom *argv) {
static void trigger_list(t_trigger *x, t_symbol *s, int argc, t_atom *argv) {
t_triggerout *u = x->vec+x->n;
for (int i = x->n; u--, i--;) {
- if (u->type == 'f') outlet_float(u->outlet, argc ? atom_getfloat(argv) : 0);
- else if (u->type == 'b') outlet_bang(u->outlet);
- else if (u->type == 's') outlet_symbol(u->outlet, argc ? atom_getsymbol(argv) : &s_symbol);
+ if (u->type == 'f') u->outlet->send(argc ? atom_getfloat(argv) : 0);
+ else if (u->type == 'b') u->outlet->send();
+ else if (u->type == 's') u->outlet->send(argc ? atom_getsymbol(argv) : &s_symbol);
else if (u->type == 'p') {
- if (!argc || argv->a_type != 'p') error("unpack: bad pointer");
- else outlet_pointer(u->outlet, argv->a_pointer);
- } else outlet_list(u->outlet, &s_list, argc, argv);
+ if (!argc || argv->a_type != 'p') error("unpack: bad pointer"); else u->outlet->send(argv->a_pointer);
+ } else u->outlet->send(argc,argv);
}
}
static void trigger_anything(t_trigger *x, t_symbol *s, int argc, t_atom *argv) {
t_triggerout *u = x->vec+x->n;
for (int i = x->n; u--, i--;) {
- if (u->type == 'b') outlet_bang(u->outlet);
- else if (u->type == 'a') outlet_anything(u->outlet, s, argc, argv);
+ if (u->type == 'b') u->outlet->send();
+ else if (u->type == 'a') u->outlet->send(s,argc,argv);
else error("trigger: can only convert 's' to 'b' or 'a'", s->name);
}
}
-static void trigger_bang(t_trigger *x) {trigger_list(x, 0, 0, 0);}
-static void trigger_pointer(t_trigger *x, t_gpointer *gp) {t_atom at; SETPOINTER(&at, gp); trigger_list(x, 0, 1, &at);}
-static void trigger_float(t_trigger *x, t_float f) { t_atom at; SETFLOAT(&at, f); trigger_list(x, 0, 1, &at);}
-static void trigger_symbol(t_trigger *x, t_symbol *s) { t_atom at; SETSYMBOL(&at, s); trigger_list(x, 0, 1, &at);}
+static void trigger_bang(t_trigger *x) {trigger_list(x,0,0,0 );}
+static void trigger_pointer(t_trigger *x, t_gpointer *gp) {t_atom at; SETPOINTER(&at, gp); trigger_list(x,0,1,&at);}
+static void trigger_float(t_trigger *x, t_float f) { t_atom at; SETFLOAT(&at, f); trigger_list(x,0,1,&at);}
+static void trigger_symbol(t_trigger *x, t_symbol *s) { t_atom at; SETSYMBOL(&at, s); trigger_list(x,0,1,&at);}
static void trigger_free(t_trigger *x) {free(x->vec);}
static void trigger_setup() {
t_class *c = trigger_class = class_new2("trigger",trigger_new,trigger_free,sizeof(t_trigger),0,"*");
@@ -1766,12 +1762,12 @@ static void *spigot_new(t_floatarg f) {
x->state = f;
return x;
}
-static void spigot_bang( t_spigot *x) { if (x->state) outlet_bang(x->outlet);}
-static void spigot_pointer( t_spigot *x, t_gpointer *gp) { if (x->state) outlet_pointer(x->outlet, gp);}
-static void spigot_float( t_spigot *x, t_float f) { if (x->state) outlet_float(x->outlet, f);}
-static void spigot_symbol( t_spigot *x, t_symbol *s) { if (x->state) outlet_symbol(x->outlet, s);}
-static void spigot_list( t_spigot *x, t_symbol *s, int argc, t_atom *argv) {if (x->state) outlet_list(x->outlet, s, argc, argv);}
-static void spigot_anything(t_spigot *x, t_symbol *s, int argc, t_atom *argv) {if (x->state) outlet_anything(x->outlet, s, argc, argv);}
+static void spigot_bang( t_spigot *x) { if (x->state) x->outlet->send();}
+static void spigot_pointer( t_spigot *x, t_gpointer *v) { if (x->state) x->outlet->send(v);}
+static void spigot_float( t_spigot *x, t_float v) { if (x->state) x->outlet->send(v);}
+static void spigot_symbol( t_spigot *x, t_symbol *v) { if (x->state) x->outlet->send(v);}
+static void spigot_list( t_spigot *x, t_symbol *s, int argc, t_atom *argv) {if (x->state) x->outlet->send( argc,argv);}
+static void spigot_anything(t_spigot *x, t_symbol *s, int argc, t_atom *argv) {if (x->state) x->outlet->send(s,argc,argv);}
static void spigot_setup() {
t_class *c = spigot_class = class_new2("spigot",spigot_new,0,sizeof(t_spigot),0,"F");
class_addbang(c, spigot_bang);
@@ -1792,7 +1788,7 @@ static void *moses_new(t_floatarg f) {
x->y = f;
return x;
}
-static void moses_float(t_moses *x, t_float f) {outlet_float(x->out(f>=x->y), f);}
+static void moses_float(t_moses *x, t_float v) {x->out(v>=x->y)->send(v);}
static void moses_setup() {
moses_class = class_new2("moses",moses_new,0,sizeof(t_moses),0,"F");
class_addfloat(moses_class, moses_float);
@@ -1809,8 +1805,8 @@ static void *until_new() {
x->run = 0;
return x;
}
-static void until_bang(t_until *x) { x->run=1; x->count=-1; while (x->run && x->count) {x->count--; outlet_bang(x->outlet);}}
-static void until_float(t_until *x, t_float f) {x->run=1; x->count=(int)f; while (x->run && x->count) {x->count--; outlet_bang(x->outlet);}}
+static void until_bang(t_until *x) { x->run=1; x->count=-1; while (x->run && x->count) {x->count--; x->outlet->send();}}
+static void until_float(t_until *x, t_float f) {x->run=1; x->count=(int)f; while (x->run && x->count) {x->count--; x->outlet->send();}}
static void until_bang2(t_until *x) {x->run = 0;}
static void until_setup() {
until_class = class_new2("until",until_new,0,sizeof(t_until),0,"");
@@ -1830,8 +1826,8 @@ static void *makefilename_new(t_symbol *s) {
}
/* doesn't do any typechecking or even counting the % signs properly */
-static void makefilename_float(t_makefilename *x, t_floatarg f) {outlet_symbol(x->outlet,symprintf(x->format->name,(int)f));}
-static void makefilename_symbol(t_makefilename *x, t_symbol *s) {outlet_symbol(x->outlet,symprintf(x->format->name,s->name));}
+static void makefilename_float(t_makefilename *x, t_floatarg f) {x->outlet->send(symprintf(x->format->name,(int)f));}
+static void makefilename_symbol(t_makefilename *x, t_symbol *s) {x->outlet->send(symprintf(x->format->name,s->name));}
static void makefilename_set(t_makefilename *x, t_symbol *s) {x->format = s;}
static void makefilename_setup() {
@@ -1856,8 +1852,8 @@ static void *swap_new(t_floatarg f) {
return x;
}
static void swap_bang(t_swap *x) {
- outlet_float(x->out(1), x->f1);
- outlet_float(x->out(0), x->f2);
+ x->out(1)->send(x->f1);
+ x->out(0)->send(x->f2);
}
static void swap_float(t_swap *x, t_float f) {
x->f1 = f;
@@ -1878,11 +1874,11 @@ static void *change_new(t_floatarg f) {
outlet_new(x, &s_float);
return x;
}
-static void change_bang(t_change *x) {outlet_float(x->outlet, x->f);}
+static void change_bang(t_change *x) {x->outlet->send(x->f);}
static void change_float(t_change *x, t_float f) {
if (f != x->f) {
x->f = f;
- outlet_float(x->outlet, x->f);
+ x->outlet->send(x->f);
}
}
static void change_set(t_change *x, t_float f) {x->f = f;}
@@ -1935,7 +1931,7 @@ static void *value_new(t_symbol *s) {
outlet_new(x, &s_float);
return x;
}
-static void value_bang(t_value *x) {outlet_float(x->outlet, *x->floatstar);}
+static void value_bang(t_value *x) {x->outlet->send(*x->floatstar);}
static void value_float(t_value *x, t_float f) {*x->floatstar = f;}
static void value_ff(t_value *x) {value_release(x->sym);}
static void value_setup() {
@@ -1963,8 +1959,8 @@ struct t_notein : t_object {t_float ch;};
struct t_ctlin : t_object {t_float ch; t_float ctlno;};
static void midiin_list(t_midiin *x, t_symbol *s, int ac, t_atom *av) {
- outlet_float(x->out(1), atom_getfloatarg(1, ac, av) + 1);
- outlet_float(x->out(0), atom_getfloatarg(0, ac, av));
+ x->out(1)->send(atom_getfloatarg(1,ac,av) + 1);
+ x->out(0)->send(atom_getfloatarg(0,ac,av));
}
void inmidi_byte(int portno, int byte) {
if ( midiin_sym->thing) {t_atom at[2]; SETFLOAT(at, byte); SETFLOAT(at+1, portno+1); pd_list( midiin_sym->thing, 0, 2, at);}
@@ -1977,9 +1973,9 @@ static void notein_list(t_notein *x, t_symbol *s, int argc, t_atom *argv) {
float pitch = atom_getfloatarg(0, argc, argv);
float velo = atom_getfloatarg(1, argc, argv);
float channel = atom_getfloatarg(2, argc, argv);
- if (x->ch) {if (channel != x->ch) return;} else outlet_float(x->out(2), channel);
- outlet_float(x->out(1), velo);
- outlet_float(x->out(0), pitch);
+ if (x->ch) {if (channel != x->ch) return;} else x->out(2)->send(channel);
+ x->out(1)->send(velo);
+ x->out(0)->send(pitch);
}
void inmidi_noteon(int portno, int channel, int pitch, int velo) {
@@ -2035,9 +2031,9 @@ static void ctlin_list(t_ctlin *x, t_symbol *s, int argc, t_atom *argv) {
t_float channel = atom_getfloatarg(2, argc, argv);
if (x->ctlno >= 0 && x->ctlno != ctlnumber) return;
if (x->ch > 0 && x->ch != channel) return;
- if (x->ch == 0) outlet_float(x->out(2), channel);
- if (x->ctlno < 0) outlet_float(x->out(1), ctlnumber);
- outlet_float(x->out(0), value);
+ if (x->ch == 0) x->out(2)->send(channel);
+ if (x->ctlno < 0) x->out(1)->send(ctlnumber);
+ x->out(0)->send(value);
}
static void midiin_free(t_midiin *x) {pd_unbind(x, midiin_sym);}
@@ -2066,20 +2062,17 @@ static void *midi2_new(t_class *cl, t_floatarg ch) {
static void midi2_list(t_midi2 *x, t_symbol *s, int argc, t_atom *argv) {
float value = atom_getfloatarg(0, argc, argv);
float channel = atom_getfloatarg(1, argc, argv);
- if (x->ch) {if (channel != x->ch) return;} else outlet_float(x->out(1), channel);
- outlet_float(x->out(0), value);
+ if (x->ch) {if (channel != x->ch) return;} else x->out(1)->send(channel);
+ x->out(0)->send(value);
}
static t_symbol *pgmin_sym, *bendin_sym, *touchin_sym;
static t_class *pgmin_class, *bendin_class, *touchin_class;
struct t_pgmin : t_midi2 {};
struct t_bendin : t_midi2 {};
struct t_touchin : t_midi2 {};
-static void *pgmin_new(t_floatarg f) {
- t_pgmin *x = (t_pgmin *) midi2_new(pgmin_class ,f); pd_bind(x, pgmin_sym); return x;}
-static void *bendin_new(t_floatarg f) {
- t_bendin *x = (t_bendin *) midi2_new(bendin_class ,f); pd_bind(x, bendin_sym); return x;}
-static void *touchin_new(t_floatarg f) {
- t_touchin *x = (t_touchin *)midi2_new(touchin_class,f); pd_bind(x, touchin_sym); return x;}
+static void *pgmin_new(t_floatarg f) { t_pgmin *x = (t_pgmin *) midi2_new(pgmin_class ,f);pd_bind(x, pgmin_sym);return x;}
+static void *bendin_new(t_floatarg f) { t_bendin *x = (t_bendin *) midi2_new(bendin_class ,f);pd_bind(x, bendin_sym);return x;}
+static void *touchin_new(t_floatarg f) {t_touchin *x = (t_touchin *)midi2_new(touchin_class,f);pd_bind(x,touchin_sym);return x;}
static void pgmin_free( t_pgmin *x) {pd_unbind(x, pgmin_sym);}
static void bendin_free( t_bendin *x) {pd_unbind(x, bendin_sym);}
static void touchin_free(t_touchin *x) {pd_unbind(x, touchin_sym);}
@@ -2116,9 +2109,9 @@ static void *polytouchin_new(t_floatarg f) {
}
static void polytouchin_list(t_polytouchin *x, t_symbol *s, int argc, t_atom *argv) {
t_float channel = atom_getfloatarg(2, argc, argv);
- if (x->ch) {if (channel != x->ch) return;} else outlet_float(x->out(2), channel);
- outlet_float(x->out(1), atom_getfloatarg(0, argc, argv)); /*pitch*/
- outlet_float(x->out(0), atom_getfloatarg(1, argc, argv)); /*value*/
+ if (x->ch) {if (channel != x->ch) return;} else x->out(2)->send(channel);
+ x->out(1)->send(atom_getfloatarg(0, argc, argv)); /*pitch*/
+ x->out(0)->send(atom_getfloatarg(1, argc, argv)); /*value*/
}
static void polytouchin_free(t_polytouchin *x) {pd_unbind(x, polytouchin_sym);}
static void polytouchin_setup() {
@@ -2150,8 +2143,8 @@ static void *midiclkin_new(t_floatarg f) {
return x;
}
static void midiclkin_list(t_midiclkin *x, t_symbol *s, int argc, t_atom *argv) {
- outlet_float(x->out(1), atom_getfloatarg(1, argc, argv)); /*count*/
- outlet_float(x->out(0), atom_getfloatarg(0, argc, argv)); /*value*/
+ x->out(1)->send(atom_getfloatarg(1, argc, argv)); /*count*/
+ x->out(0)->send(atom_getfloatarg(0, argc, argv)); /*value*/
}
static void midiclkin_free(t_midiclkin *x) {pd_unbind(x, midiclkin_sym);}
static void midiclkin_setup() {
@@ -2187,8 +2180,8 @@ static void *midirealtimein_new() {
return x;
}
static void midirealtimein_list(t_midirealtimein *x, t_symbol *s, int argc, t_atom *argv) {
- outlet_float(x->out(1), atom_getfloatarg(0, argc, argv)); /*portno*/
- outlet_float(x->out(0), atom_getfloatarg(1, argc, argv)); /*byte*/
+ x->out(1)->send(atom_getfloatarg(0, argc, argv)); /*portno*/
+ x->out(0)->send(atom_getfloatarg(1, argc, argv)); /*byte*/
}
static void midirealtimein_free(t_midirealtimein *x) {pd_unbind(x, midirealtimein_sym);}
static void midirealtimein_setup() {
@@ -2326,8 +2319,8 @@ static void *makenote_new(t_floatarg velo, t_floatarg dur) {
static void makenote_tick(t_hang *hang) {
t_makenote *x = hang->owner;
t_hang *h2, *h3;
- outlet_float(x->out(1), 0);
- outlet_float(x->out(0), hang->pitch);
+ x->out(1)->send(0.);
+ x->out(0)->send(hang->pitch);
if (x->hang == hang) x->hang = hang->next;
else for (h2 = x->hang; (h3 = h2->next); h2 = h3) {
if (h3 == hang) {
@@ -2340,8 +2333,8 @@ static void makenote_tick(t_hang *hang) {
}
static void makenote_float(t_makenote *x, t_float f) {
if (!x->velo) return;
- outlet_float(x->out(1), x->velo);
- outlet_float(x->out(0), f);
+ x->out(1)->send(x->velo);
+ x->out(0)->send(f);
t_hang *hang = (t_hang *)getbytes(sizeof *hang);
hang->next = x->hang;
x->hang = hang;
@@ -2353,8 +2346,8 @@ static void makenote_float(t_makenote *x, t_float f) {
static void makenote_stop(t_makenote *x) {
t_hang *hang;
while ((hang = x->hang)) {
- outlet_float(x->out(1), 0);
- outlet_float(x->out(0), hang->pitch);
+ x->out(1)->send(0.);
+ x->out(0)->send(hang->pitch);
x->hang = hang->next;
clock_free(hang->clock);
free(hang);
@@ -2388,8 +2381,8 @@ static void *stripnote_new() {
}
static void stripnote_float(t_stripnote *x, t_float f) {
if (!x->velo) return;
- outlet_float(x->out(1), x->velo);
- outlet_float(x->out(0), f);
+ x->out(1)->send(x->velo);
+ x->out(0)->send(f);
}
static void stripnote_setup() {
stripnote_class = class_new2("stripnote",stripnote_new,0,sizeof(t_stripnote),0,"");
@@ -2440,20 +2433,16 @@ static void poly_float(t_poly *x, t_float f) {
firstoff = v, serialoff = v->serial, offindex = i;
}
if (firstoff) {
- outlet_float(x->out(2), x->vel);
- outlet_float(x->out(1), firstoff->pitch = f);
- outlet_float(x->out(0), offindex+1);
+ x->out(2)->send(x->vel);
+ x->out(1)->send(firstoff->pitch = f);
+ x->out(0)->send(offindex+1);
firstoff->used = 1;
firstoff->serial = x->serial++;
}
/* if none, steal one */
else if (firston && x->steal) {
- outlet_float(x->out(2), 0);
- outlet_float(x->out(1), firston->pitch);
- outlet_float(x->out(0), onindex+1);
- outlet_float(x->out(2), x->vel);
- outlet_float(x->out(1), firston->pitch = f);
- outlet_float(x->out(0), onindex+1);
+ x->out(2)->send(0.); x->out(1)->send(firston->pitch ); x->out(0)->send(onindex+1);
+ x->out(2)->send(x->vel); x->out(1)->send(firston->pitch = f); x->out(0)->send(onindex+1);
firston->serial = x->serial++;
}
} else { /* note off. Turn off oldest match */
@@ -2463,18 +2452,18 @@ static void poly_float(t_poly *x, t_float f) {
if (firston) {
firston->used = 0;
firston->serial = x->serial++;
- outlet_float(x->out(2), 0);
- outlet_float(x->out(1), firston->pitch);
- outlet_float(x->out(0), onindex+1);
+ x->out(2)->send(0.);
+ x->out(1)->send(firston->pitch);
+ x->out(0)->send(onindex+1);
}
}
}
static void poly_stop(t_poly *x) {
t_voice *v = x->vec;
for (int i = 0; i < x->n; i++, v++) if (v->used) {
- outlet_float(x->out(2), 0L);
- outlet_float(x->out(1), v->pitch);
- outlet_float(x->out(0), i+1);
+ x->out(2)->send(0.);
+ x->out(1)->send(v->pitch);
+ x->out(0)->send(i+1);
v->used = 0;
v->serial = x->serial++;
}
@@ -2537,7 +2526,7 @@ static void bag_float(t_bag *x, t_float f) {
static void bag_flush(t_bag *x) {
t_bagelem *bagelem;
while ((bagelem = x->first)) {
- outlet_float(x->outlet, bagelem->value);
+ x->outlet->send(bagelem->value);
x->first = bagelem->next;
free(bagelem);
}
@@ -2603,7 +2592,7 @@ static void delay_bang(t_delay *x) {clock_delay(x->clock, x->deltime);}
static void delay_stop(t_delay *x) {clock_unset(x->clock);}
static void delay_ft1(t_delay *x, t_floatarg g) {x->deltime = max(0.f,g);}
static void delay_float(t_delay *x, t_float f) {delay_ft1(x, f); delay_bang(x);}
-static void delay_tick(t_delay *x) {outlet_bang(x->outlet);}
+static void delay_tick(t_delay *x) {x->outlet->send();}
static void delay_free(t_delay *x) {clock_free(x->clock);}
static void *delay_new(t_floatarg f) {
t_delay *x = (t_delay *)pd_new(delay_class);
@@ -2630,7 +2619,7 @@ struct t_metro : t_object {
};
static void metro_tick(t_metro *x) {
x->hit = 0;
- outlet_bang(x->outlet);
+ x->outlet->send();
if (!x->hit) clock_delay(x->clock, x->deltime);
}
static void metro_float(t_metro *x, t_float f) {
@@ -2674,9 +2663,9 @@ static void line_tick(t_line *x) {
double timenow = clock_getsystime();
double msectogo = - clock_gettimesince(x->targettime);
if (msectogo < 1E-9) {
- outlet_float(x->outlet, x->targetval);
+ x->outlet->send(x->targetval);
} else {
- outlet_float(x->outlet, x->setval + x->oneovertimediff * (timenow-x->prevtime) * (x->targetval-x->setval));
+ x->outlet->send(x->setval + x->oneovertimediff * (timenow-x->prevtime) * (x->targetval-x->setval));
clock_delay(x->clock, (x->grain > msectogo ? msectogo : x->grain));
}
}
@@ -2695,7 +2684,7 @@ static void line_float(t_line *x, t_float f) {
} else {
clock_unset(x->clock);
x->targetval = x->setval = f;
- outlet_float(x->outlet, f);
+ x->outlet->send(f);
}
x->gotinlet = 0;
}
@@ -2810,9 +2799,9 @@ static void hang_tick(t_hang2 *h) {
t_word *w = h->vec + x->n-1;
for (int i = x->n; i--; p--, w--) {
switch (p->a_type) {
- case A_FLOAT: outlet_float( x->out(i), w->w_float ); break;
- case A_SYMBOL: outlet_symbol( x->out(i), w->w_symbol ); break;
- case A_POINTER:outlet_pointer(x->out(i), w->w_gpointer); break;
+ case A_FLOAT: x->out(i)->send(w->w_float ); break;
+ case A_SYMBOL: x->out(i)->send(w->w_symbol ); break;
+ case A_POINTER:x->out(i)->send(w->w_gpointer); break;
default:{}
}
}
@@ -2879,7 +2868,7 @@ void unpost_printhook (const char *s) {
for (;;) {
p = strchr(d,'\n');
if (!p) break;
- outlet_symbol(current_unpost->self->o1,gensym2(d,p-d));
+ current_unpost->self->o1->send(gensym2(d,p-d));
d=p+1;
}
if (d!=dd) {
@@ -2913,7 +2902,7 @@ void unparse_list (t_unparse *x, t_symbol *s, int argc, t_atom *argv) {
o << ' ';
atom_ostream(argv+i,o);
}
- outlet_symbol(x->outlet,gensym(o.str().data()+1));
+ x->outlet->send(gensym(o.str().data()+1));
}
struct t_parse : t_object {};