/* --------------------------- k_receive ----------------------------------- */ /* */ /* */ /* Most of the source is copied from the receive code from pd in the file x_connective.c */ /* Therefore the licence for this object is the same as PD. */ /* */ /* ---------------------------------------------------------------------------- */ #include "m_pd.h" #include #include #include static char *version = "k_receive v0.1, written by Kjetil S. Matheussen, k.s.matheussen@notam02.no"; static t_class *k_receive_class; typedef struct _k_receive { t_object x_obj; t_symbol *x_sym; } t_k_receive; static void k_receive_bang(t_k_receive *x) { outlet_bang(x->x_obj.ob_outlet); } static void k_receive_float(t_k_receive *x, t_float f) { outlet_float(x->x_obj.ob_outlet, f); } static void k_receive_symbol(t_k_receive *x, t_symbol *s) { outlet_symbol(x->x_obj.ob_outlet, s); } static void k_receive_pointer(t_k_receive *x, t_gpointer *gp) { outlet_pointer(x->x_obj.ob_outlet, gp); } static void k_receive_list(t_k_receive *x, t_symbol *s, int argc, t_atom *argv) { outlet_list(x->x_obj.ob_outlet, s, argc, argv); } static void k_receive_anything(t_k_receive *x, t_symbol *s, int argc, t_atom *argv) { outlet_anything(x->x_obj.ob_outlet, s, argc, argv); } static void k_receive_set(t_k_receive *x, t_symbol *s) { pd_unbind(&x->x_obj.ob_pd, x->x_sym); x->x_sym = s; pd_bind(&x->x_obj.ob_pd, s); } static void *k_receive_new(t_symbol *s) { t_k_receive *x = (t_k_receive *)pd_new(k_receive_class); x->x_sym = s; pd_bind(&x->x_obj.ob_pd, s); outlet_new(&x->x_obj, 0); return (x); } static void k_receive_free(t_k_receive *x) { pd_unbind(&x->x_obj.ob_pd, x->x_sym); } void k_receive_setup(void) { k_receive_class = class_new(gensym("k_receive"), (t_newmethod)k_receive_new, (t_method)k_receive_free, sizeof(t_k_receive), 0, A_DEFSYM, 0); class_addcreator((t_newmethod)k_receive_new, gensym("k_r"), A_DEFSYM, 0); class_addbang(k_receive_class, k_receive_bang); class_addfloat(k_receive_class, (t_method)k_receive_float); class_addsymbol(k_receive_class, k_receive_symbol); class_addpointer(k_receive_class, k_receive_pointer); class_addlist(k_receive_class, k_receive_list); class_addanything(k_receive_class, k_receive_anything); class_addmethod(k_receive_class, (t_method)k_receive_set, gensym("set"),A_SYMBOL, 0); post(version); }