diff --git a/pd/src/x_interface.c b/pd/src/x_interface.c index bfb69df38ccd1a179c50b50b510dad75cbb302ae..79c204023160b6b36e782d9fd6690fb9f122bb39 100644 --- a/pd/src/x_interface.c +++ b/pd/src/x_interface.c @@ -325,6 +325,12 @@ typedef struct _objectinfo { t_canvas *x_canvas; } t_objectinfo; +static t_class *debuginfo_class; + +typedef struct _debuginfo { + t_object x_obj; +} t_debuginfo; + /* used by all the *info objects */ static int info_to_console = 0; @@ -1623,12 +1629,43 @@ void objectinfo_setup(void) post("stable objectinfo methods: class"); } +void debuginfo_print(t_debuginfo *x) +{ + info_print((t_text *)x); +} + + /* replace incoming message's selector with zero and output it */ +void debuginfo_nullselector(t_debuginfo *x, t_symbol *s, int argc, + t_atom *argv) +{ + info_out((t_text *)x, 0, argc, argv); +} + +void *debuginfo_new(void) +{ + t_debuginfo *x = (t_debuginfo *)pd_new(debuginfo_class); + outlet_new(&x->x_obj, &s_anything); + return (void *)x; +} + +void debuginfo_setup(void) +{ + debuginfo_class = class_new(gensym("debuginfo"), + (t_newmethod)debuginfo_new, 0, sizeof(t_debuginfo), + CLASS_DEFAULT, 0); + class_addmethod(debuginfo_class, (t_method)debuginfo_nullselector, + gensym("null-selector"), A_GIMME, 0); + class_addmethod(debuginfo_class, (t_method)debuginfo_print, + gensym("print"), A_GIMME, 0); +} + void x_interface_setup(void) { - print_setup(); - unpost_setup(); canvasinfo_setup(); - pdinfo_setup(); classinfo_setup(); + debuginfo_setup(); objectinfo_setup(); + pdinfo_setup(); + print_setup(); + unpost_setup(); }