Commit ac61e201 authored by Jonathan Wilkes's avatar Jonathan Wilkes

port from Pd Vanilla: list inlets to convert atoms and bangs correctly

commit: 35e2c09bde4729c702e647f27690417bd362fab7
parent eaabf42b
...@@ -78,12 +78,16 @@ static void inlet_wrong(t_inlet *x, t_symbol *s) ...@@ -78,12 +78,16 @@ static void inlet_wrong(t_inlet *x, t_symbol *s)
x->i_symfrom->s_name, s->s_name); x->i_symfrom->s_name, s->s_name);
} }
static void inlet_list(t_inlet *x, t_symbol *s, int argc, t_atom *argv);
/* LATER figure out how to make these efficient: */ /* LATER figure out how to make these efficient: */
static void inlet_bang(t_inlet *x) static void inlet_bang(t_inlet *x)
{ {
if (x->i_symfrom == &s_bang) if (x->i_symfrom == &s_bang)
pd_vmess(x->i_dest, x->i_symto, ""); pd_vmess(x->i_dest, x->i_symto, "");
else if (!x->i_symfrom) pd_bang(x->i_dest); else if (!x->i_symfrom) pd_bang(x->i_dest);
else if (x->i_symfrom == &s_list)
inlet_list(x, &s_bang, 0, 0);
else inlet_wrong(x, &s_bang); else inlet_wrong(x, &s_bang);
} }
...@@ -92,6 +96,12 @@ static void inlet_pointer(t_inlet *x, t_gpointer *gp) ...@@ -92,6 +96,12 @@ static void inlet_pointer(t_inlet *x, t_gpointer *gp)
if (x->i_symfrom == &s_pointer) if (x->i_symfrom == &s_pointer)
pd_vmess(x->i_dest, x->i_symto, "p", gp); pd_vmess(x->i_dest, x->i_symto, "p", gp);
else if (!x->i_symfrom) pd_pointer(x->i_dest, gp); else if (!x->i_symfrom) pd_pointer(x->i_dest, gp);
else if (x->i_symfrom == &s_list)
{
t_atom a;
SETPOINTER(&a, gp);
inlet_list(x, &s_pointer, 1, &a);
}
else inlet_wrong(x, &s_pointer); else inlet_wrong(x, &s_pointer);
} }
...@@ -103,6 +113,12 @@ static void inlet_float(t_inlet *x, t_float f) ...@@ -103,6 +113,12 @@ static void inlet_float(t_inlet *x, t_float f)
x->i_un.iu_floatsignalvalue = f; x->i_un.iu_floatsignalvalue = f;
else if (!x->i_symfrom) else if (!x->i_symfrom)
pd_float(x->i_dest, f); pd_float(x->i_dest, f);
else if (x->i_symfrom == &s_list)
{
t_atom a;
SETFLOAT(&a, f);
inlet_list(x, &s_float, 1, &a);
}
else inlet_wrong(x, &s_float); else inlet_wrong(x, &s_float);
} }
...@@ -111,6 +127,12 @@ static void inlet_symbol(t_inlet *x, t_symbol *s) ...@@ -111,6 +127,12 @@ static void inlet_symbol(t_inlet *x, t_symbol *s)
if (x->i_symfrom == &s_symbol) if (x->i_symfrom == &s_symbol)
pd_vmess(x->i_dest, x->i_symto, "s", s); pd_vmess(x->i_dest, x->i_symto, "s", s);
else if (!x->i_symfrom) pd_symbol(x->i_dest, s); else if (!x->i_symfrom) pd_symbol(x->i_dest, s);
else if (x->i_symfrom == &s_list)
{
t_atom a;
SETSYMBOL(&a, s);
inlet_list(x, &s_symbol, 1, &a);
}
else inlet_wrong(x, &s_symbol); else inlet_wrong(x, &s_symbol);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment