diff --git a/pd/src/x_array.c b/pd/src/x_array.c index 67471549dee81f54c40c34301c77b346941328c4..5457bcb58f1a2e3db2359840efe18512d126c267 100644 --- a/pd/src/x_array.c +++ b/pd/src/x_array.c @@ -227,7 +227,23 @@ static void array_define_send(t_glist *x, t_symbol *s) pd_pointer(s->s_thing, &gp); gpointer_unset(&gp); } - else bug("array_define_anything"); + else bug("array_define_send"); +} + +static void array_define_bang(t_glist *x) +{ + t_glist *gl = (x->gl_list ? pd_checkglist(&x->gl_list->g_pd) : 0); + if (gl && gl->gl_list && pd_class(&gl->gl_list->g_pd) == garray_class) + { + t_gpointer gp; + gpointer_init(&gp); + gpointer_setglist(&gp, gl, + //garray_getscalar((t_garray *)gl->gl_list)); + (t_gobj *)gl->gl_list); + outlet_pointer(x->gl_obj.ob_outlet, &gp); + gpointer_unset(&gp); + } + else bug("array_define_bang"); } /* just forward any messages to the garray */ @@ -864,6 +880,7 @@ void x_array_setup(void ) canvas_add_for_class(array_define_class); class_addmethod(array_define_class, (t_method)array_define_send, gensym("send"), A_SYMBOL, 0); + class_addbang(array_define_class, array_define_bang); class_addanything(array_define_class, array_define_anything); class_sethelpsymbol(array_define_class, gensym("array-object")); class_setsavefn(array_define_class, array_define_save); diff --git a/pd/src/x_scalar.c b/pd/src/x_scalar.c index 61a6cf1f45fa6476215d38051f8dfaa654f7bbeb..95187b700795dd9f5231d636de8efa3fb8d41b85 100644 --- a/pd/src/x_scalar.c +++ b/pd/src/x_scalar.c @@ -111,6 +111,19 @@ static void scalar_define_send(t_glist *x, t_symbol *s) else bug("scalar_define_send"); } +static void scalar_define_bang(t_glist *x) +{ + if (x->gl_list && pd_class(&x->gl_list->g_pd) == scalar_class) + { + t_gpointer gp; + gpointer_init(&gp); + gpointer_setglist(&gp, x, (t_gobj *)&x->gl_list->g_pd); + outlet_pointer(x->gl_obj.ob_outlet, &gp); + gpointer_unset(&gp); + } + else bug("scalar_define_bang"); +} + /* set to a list, used to restore from scalar_define_save()s below */ static void scalar_define_set(t_glist *x, t_symbol *s, int argc, t_atom *argv) { @@ -180,6 +193,7 @@ void x_scalar_setup(void ) canvas_add_for_class(scalar_define_class); class_addmethod(scalar_define_class, (t_method)scalar_define_send, gensym("send"), A_SYMBOL, 0); + class_addbang(scalar_define_class, (t_method)scalar_define_bang); class_addmethod(scalar_define_class, (t_method)scalar_define_set, gensym("set"), A_GIMME, 0); class_sethelpsymbol(scalar_define_class, gensym("scalar-object"));