1 /* Copyright (c) 1997-1999 Miller Puckette.
2 * For information on usage and redistribution, and for a DISCLAIMER OF ALL
3 * WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
5 /* interface objects */
9 /* -------------------------- print ------------------------------ */
10 static t_class
*print_class
;
18 static void *print_new(t_symbol
*s
)
20 t_print
*x
= (t_print
*)pd_new(print_class
);
21 if (*s
->s_name
) x
->x_sym
= s
;
22 else x
->x_sym
= gensym("");
26 static void print_bang(t_print
*x
)
28 post("%sbang", x
->x_sym
->s_name
);
31 static void print_pointer(t_print
*x
, t_gpointer
*gp
)
36 post("%s(gpointer)", x
->x_sym
->s_name
);
39 static void print_float(t_print
*x
, t_float f
)
41 post("%s%g", x
->x_sym
->s_name
, f
);
44 static void print_list(t_print
*x
, t_symbol
*s
, int argc
, t_atom
*argv
)
52 if (argc
&& argv
->a_type
!= A_SYMBOL
) startpost("%s:", x
->x_sym
->s_name
);
53 else startpost("%s%s", x
->x_sym
->s_name
,
54 (argc
> 1 ? s_list
.s_name
: (argc
== 1 ? s_symbol
.s_name
:
60 static void print_anything(t_print
*x
, t_symbol
*s
, int argc
, t_atom
*argv
)
66 startpost("%s%s", x
->x_sym
->s_name
, s
->s_name
);
71 static void print_setup(void)
73 print_class
= class_new(gensym("print"), (t_newmethod
)print_new
, 0,
74 sizeof(t_print
), 0, A_DEFSYM
, 0);
75 class_addbang(print_class
, print_bang
);
76 class_addfloat(print_class
, print_float
);
77 class_addpointer(print_class
, print_pointer
);
78 class_addlist(print_class
, print_list
);
79 class_addanything(print_class
, print_anything
);
84 void x_interface_setup(void)