Update of /cvsroot/pure-data/pd/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20736
Modified Files: Tag: desiredata m_class.c Log Message: shorter code again
Index: m_class.c =================================================================== RCS file: /cvsroot/pure-data/pd/src/m_class.c,v retrieving revision 1.3.4.7.2.22.2.3 retrieving revision 1.3.4.7.2.22.2.4 diff -C2 -d -r1.3.4.7.2.22.2.3 -r1.3.4.7.2.22.2.4 *** m_class.c 8 Dec 2006 04:51:28 -0000 1.3.4.7.2.22.2.3 --- m_class.c 8 Dec 2006 05:13:02 -0000 1.3.4.7.2.22.2.4 *************** *** 41,96 **** }
! static void pd_defaultbang(t_pd *x) ! { ! if (*(*x)->c_listmethod != pd_defaultlist) ! (*(*x)->c_listmethod)(x, 0, 0, 0); ! else (*(*x)->c_anymethod)(x, &s_bang, 0, 0); }
! static void pd_defaultpointer(t_pd *x, t_gpointer *gp) ! { ! if (*(*x)->c_listmethod != pd_defaultlist) ! { ! t_atom at; ! SETPOINTER(&at, gp); ! (*(*x)->c_listmethod)(x, 0, 1, &at); ! } ! else ! { ! t_atom at; ! SETPOINTER(&at, gp); ! (*(*x)->c_anymethod)(x, &s_pointer, 1, &at); } }
! static void pd_defaultfloat(t_pd *x, t_float f) ! { ! if (*(*x)->c_listmethod != pd_defaultlist) ! { ! t_atom at; ! SETFLOAT(&at, f); ! (*(*x)->c_listmethod)(x, 0, 1, &at); ! } ! else ! { ! t_atom at; ! SETFLOAT(&at, f); ! (*(*x)->c_anymethod)(x, &s_float, 1, &at); } }
! static void pd_defaultsymbol(t_pd *x, t_symbol *s) ! { ! if (*(*x)->c_listmethod != pd_defaultlist) ! { ! t_atom at; ! SETSYMBOL(&at, s); ! (*(*x)->c_listmethod)(x, 0, 1, &at); ! } ! else ! { ! t_atom at; ! SETSYMBOL(&at, s); ! (*(*x)->c_anymethod)(x, &s_symbol, 1, &at); } } --- 41,74 ---- }
! static void pd_defaultbang(t_pd *x) { ! if ((*x)->c_listmethod != pd_defaultlist) ! (*x)->c_listmethod(x, 0, 0, 0); ! else (*x)->c_anymethod(x, &s_bang, 0, 0); }
! static void pd_defaultpointer(t_pd *x, t_gpointer *gp) { ! t_atom at; SETPOINTER(&at, gp); ! if ((*x)->c_listmethod != pd_defaultlist) { ! (*x)->c_listmethod(x, 0, 1, &at); ! } else { ! (*x)->c_anymethod(x, &s_pointer, 1, &at); } }
! static void pd_defaultfloat(t_pd *x, t_float f) { ! t_atom at; SETFLOAT(&at, f); ! if (*(*x)->c_listmethod != pd_defaultlist) { ! (*x)->c_listmethod(x, 0, 1, &at); ! } else { ! (*x)->c_anymethod(x, &s_float, 1, &at); } }
! static void pd_defaultsymbol(t_pd *x, t_symbol *s) { ! t_atom at; SETSYMBOL(&at, s); ! if ((*x)->c_listmethod != pd_defaultlist) { ! (*x)->c_listmethod(x, 0, 1, &at); ! } else { ! (*x)->c_anymethod(x, &s_symbol, 1, &at); } } *************** *** 99,132 **** static void class_nosavefn(t_gobj *z, t_binbuf *b);
! /* handle "list" messages to Pds without explicit list methods defined. */ ! static void pd_defaultlist(t_pd *x, t_symbol *s, int argc, t_atom *argv) ! { ! /* a list with no elements is handled by the 'bang' method if ! one exists. */ ! if (argc == 0 && *(*x)->c_bangmethod != pd_defaultbang) ! { ! (*(*x)->c_bangmethod)(x); return; } ! /* a list with one element which is a number can be handled by a ! "float" method if any is defined; same for "symbol", "pointer". */ ! if (argc == 1) ! { ! if (argv->a_type == A_FLOAT && ! *(*x)->c_floatmethod != pd_defaultfloat) ! { ! (*(*x)->c_floatmethod)(x, argv->a_w.w_float); return; } ! else if (argv->a_type == A_SYMBOL && ! *(*x)->c_symbolmethod != pd_defaultsymbol) ! { ! (*(*x)->c_symbolmethod)(x, argv->a_w.w_symbol); return; } ! else if (argv->a_type == A_POINTER && ! *(*x)->c_pointermethod != pd_defaultpointer) ! { ! (*(*x)->c_pointermethod)(x, argv->a_w.w_gpointer); return; } --- 77,100 ---- static void class_nosavefn(t_gobj *z, t_binbuf *b);
! /* handle "list" messages to Pds without explicit list methods defined. */ ! static void pd_defaultlist(t_pd *x, t_symbol *s, int argc, t_atom *argv) { ! /* a list with no elements is handled by the 'bang' method if one exists. */ ! if (argc == 0 && *(*x)->c_bangmethod != pd_defaultbang) { ! (*x)->c_bangmethod(x); return; } ! /* a list with one element which is a number can be handled by a ! "float" method if any is defined; same for "symbol", "pointer". */ ! if (argc == 1) { ! if (argv->a_type == A_FLOAT && *(*x)->c_floatmethod != pd_defaultfloat) { ! (*x)->c_floatmethod(x, argv->a_w.w_float); return; } ! if (argv->a_type == A_SYMBOL && *(*x)->c_symbolmethod != pd_defaultsymbol) { ! (*x)->c_symbolmethod(x, argv->a_w.w_symbol); return; } ! if (argv->a_type == A_POINTER && *(*x)->c_pointermethod != pd_defaultpointer) { ! (*x)->c_pointermethod(x, argv->a_w.w_gpointer); return; } *************** *** 134,138 **** /* Next try for an "anything" method */ if ((*x)->c_anymethod != pd_defaultanything) ! (*(*x)->c_anymethod)(x, &s_list, argc, argv);
/* if the object is patchable (i.e., can have proper inlets) --- 102,106 ---- /* Next try for an "anything" method */ if ((*x)->c_anymethod != pd_defaultanything) ! (*x)->c_anymethod(x, &s_list, argc, argv);
/* if the object is patchable (i.e., can have proper inlets) *************** *** 320,324 **** else if (sel == &s_float) {if (argtype!='f' || *fmt) goto phooey; class_doaddfloat(c,fn);} else if (sel == &s_symbol) {if (argtype!='s' || *fmt) goto phooey; class_addsymbol(c, fn);} ! else if (sel == &s_list) {if (argtype!='*') goto phooey; class_addlist(c, fn);} else if (sel == &s_anything) {if (argtype != A_GIMME) goto phooey; class_addanything(c, fn);} else { --- 288,292 ---- else if (sel == &s_float) {if (argtype!='f' || *fmt) goto phooey; class_doaddfloat(c,fn);} else if (sel == &s_symbol) {if (argtype!='s' || *fmt) goto phooey; class_addsymbol(c, fn);} ! else if (sel == &s_list) {if (argtype!='*') goto phooey; class_addlist(c, fn);} else if (sel == &s_anything) {if (argtype != A_GIMME) goto phooey; class_addanything(c, fn);} else { *************** *** 326,330 **** c->c_nmethod * sizeof(*c->c_methods), (c->c_nmethod + 1) * sizeof(*c->c_methods)); ! m = c->c_methods + c->c_nmethod; c->c_nmethod++; m->me_name = sel; --- 294,298 ---- c->c_nmethod * sizeof(*c->c_methods), (c->c_nmethod + 1) * sizeof(*c->c_methods)); ! m = c->c_methods + c->c_nmethod; c->c_nmethod++; m->me_name = sel; *************** *** 334,348 **** t_atomtype t; switch(argtype) { ! case 'f': t=A_FLOAT; break; ! case 's': t=A_SYMBOL; break; ! case 'p': t=A_POINTER; break; ! case ';': t=A_SEMI; break; ! case ',': t=A_COMMA; break; ! case 'F': t=A_DEFFLOAT; break; ! case 'S': t=A_DEFSYMBOL; break; ! case '$': t=A_DOLLAR; break; ! case '@': t=A_DOLLSYM; break; ! case '*': t=A_GIMME; break; ! case '!': t=A_CANT; break; default: goto phooey; }; --- 302,316 ---- t_atomtype t; switch(argtype) { ! case 'f': t=A_FLOAT; break; ! case 's': t=A_SYMBOL; break; ! case 'p': t=A_POINTER; break; ! case ';': t=A_SEMI; break; ! case ',': t=A_COMMA; break; ! case 'F': t=A_DEFFLOAT; break; ! case 'S': t=A_DEFSYMBOL;break; ! case '$': t=A_DOLLAR; break; ! case '@': t=A_DOLLSYM; break; ! case '*': t=A_GIMME; break; ! case '!': t=A_CANT; break; default: goto phooey; }; *************** *** 380,452 ****
/* Instead of these, see the "class_addfloat", etc., macros in m_pd.h */ ! void class_addbang(t_class *c, t_method fn) ! { ! c->c_bangmethod = (t_bangmethod)fn; ! } ! ! void class_addpointer(t_class *c, t_method fn) ! { ! c->c_pointermethod = (t_pointermethod)fn; ! } ! ! void class_doaddfloat(t_class *c, t_method fn) ! { ! c->c_floatmethod = (t_floatmethod)fn; ! } ! ! void class_addsymbol(t_class *c, t_method fn) ! { ! c->c_symbolmethod = (t_symbolmethod)fn; ! } ! ! void class_addlist(t_class *c, t_method fn) ! { ! c->c_listmethod = (t_listmethod)fn; ! } ! ! void class_addanything(t_class *c, t_method fn) ! { ! c->c_anymethod = (t_anymethod)fn; ! } ! ! void class_setparentwidget(t_class *c, t_parentwidgetbehavior *pw) ! { ! c->c_pwb = pw; ! } ! ! char *class_getname(t_class *c) ! { ! return (c->c_name->s_name); ! } ! ! char *class_gethelpname(t_class *c) ! { ! return (c->c_helpname->s_name); ! } ! ! void class_sethelpsymbol(t_class *c, t_symbol *s) ! { ! c->c_helpname = s; ! } ! ! t_parentwidgetbehavior *pd_getparentwidget(t_pd *x) ! { ! return ((*x)->c_pwb); ! }
! void class_setdrawcommand(t_class *c) ! { ! c->c_drawcommand = 1; ! }
! int class_isdrawcommand(t_class *c) ! { ! return (c->c_drawcommand); ! }
! void class_setnotice(t_class *c, t_notice notice) ! { ! c->c_notice = notice; ! }
static void pd_floatforsignal(t_pd *x, t_float f) --- 348,368 ----
/* Instead of these, see the "class_addfloat", etc., macros in m_pd.h */ ! void class_addbang( t_class *c, t_method fn) { c->c_bangmethod = (t_bangmethod)fn;} ! void class_addpointer( t_class *c, t_method fn) {c->c_pointermethod = (t_pointermethod)fn;} ! void class_doaddfloat( t_class *c, t_method fn) { c->c_floatmethod = (t_floatmethod)fn;} ! void class_addsymbol( t_class *c, t_method fn) {c->c_symbolmethod = (t_symbolmethod)fn;} ! void class_addlist( t_class *c, t_method fn) {c->c_listmethod = (t_listmethod)fn;} ! void class_addanything(t_class *c, t_method fn) { c->c_anymethod = (t_anymethod)fn;}
! void class_setparentwidget(t_class *c, t_parentwidgetbehavior *pw) {c->c_pwb = pw;} ! char *class_getname(t_class *c) {return c->c_name->s_name;} ! char *class_gethelpname(t_class *c) {return c->c_helpname->s_name;} ! void class_sethelpsymbol(t_class *c, t_symbol *s) {c->c_helpname = s;}
! t_parentwidgetbehavior *pd_getparentwidget(t_pd *x) {return (*x)->c_pwb;}
! void class_setdrawcommand(t_class *c) {c->c_drawcommand = 1;} ! int class_isdrawcommand( t_class *c) {return c->c_drawcommand;} ! void class_setnotice(t_class *c, t_notice notice) {c->c_notice = notice;}
static void pd_floatforsignal(t_pd *x, t_float f) *************** *** 472,499 **** }
! void class_set_extern_dir(t_symbol *s) ! { ! class_extern_dir = s; ! } ! ! char *class_gethelpdir(t_class *c) ! { ! return (c->c_externdir->s_name); ! }
! static void class_nosavefn(t_gobj *z, t_binbuf *b) ! { bug("save function called but not defined"); }
! void class_setsavefn(t_class *c, t_savefn f) ! { ! c->c_savefn = f; ! } ! ! t_savefn class_getsavefn(t_class *c) ! { ! return (c->c_savefn); ! }
/* ---------------- the symbol table ------------------------ */ --- 388,400 ---- }
! void class_set_extern_dir(t_symbol *s) {class_extern_dir = s;} ! char *class_gethelpdir(t_class *c) {return c->c_externdir->s_name;}
! static void class_nosavefn(t_gobj *z, t_binbuf *b) { bug("save function called but not defined"); }
! void class_setsavefn(t_class *c, t_savefn f) {c->c_savefn = f;} ! t_savefn class_getsavefn(t_class *c) {return c->c_savefn;}
/* ---------------- the symbol table ------------------------ */ *************** *** 716,733 **** typedef void(*t_messgimme)(t_pd *x, t_symbol *s, int argc, t_atom *argv);
! typedef t_pd *(*t_fun0)( ! t_floatarg d1, t_floatarg d2, t_floatarg d3, t_floatarg d4, t_floatarg d5); ! typedef t_pd *(*t_fun1)(t_int i1, ! t_floatarg d1, t_floatarg d2, t_floatarg d3, t_floatarg d4, t_floatarg d5); ! typedef t_pd *(*t_fun2)(t_int i1, t_int i2, ! t_floatarg d1, t_floatarg d2, t_floatarg d3, t_floatarg d4, t_floatarg d5); ! typedef t_pd *(*t_fun3)(t_int i1, t_int i2, t_int i3, ! t_floatarg d1, t_floatarg d2, t_floatarg d3, t_floatarg d4, t_floatarg d5); ! typedef t_pd *(*t_fun4)(t_int i1, t_int i2, t_int i3, t_int i4, ! t_floatarg d1, t_floatarg d2, t_floatarg d3, t_floatarg d4, t_floatarg d5); ! typedef t_pd *(*t_fun5)(t_int i1, t_int i2, t_int i3, t_int i4, t_int i5, ! t_floatarg d1, t_floatarg d2, t_floatarg d3, t_floatarg d4, t_floatarg d5); ! typedef t_pd *(*t_fun6)(t_int i1, t_int i2, t_int i3, t_int i4, t_int i5, t_int i6, ! t_floatarg d1, t_floatarg d2, t_floatarg d3, t_floatarg d4, t_floatarg d5);
void pd_typedmess(t_pd *x, t_symbol *s, int argc, t_atom *argv) --- 617,629 ---- typedef void(*t_messgimme)(t_pd *x, t_symbol *s, int argc, t_atom *argv);
! #define REST t_floatarg d1, t_floatarg d2, t_floatarg d3, t_floatarg d4, t_floatarg d5 ! typedef t_pd *(*t_fun0)(REST); ! typedef t_pd *(*t_fun1)(t_int i1, REST); ! typedef t_pd *(*t_fun2)(t_int i1, t_int i2, REST); ! typedef t_pd *(*t_fun3)(t_int i1, t_int i2, t_int i3, REST); ! typedef t_pd *(*t_fun4)(t_int i1, t_int i2, t_int i3, t_int i4, REST); ! typedef t_pd *(*t_fun5)(t_int i1, t_int i2, t_int i3, t_int i4, t_int i5, REST); ! typedef t_pd *(*t_fun6)(t_int i1, t_int i2, t_int i3, t_int i4, t_int i5, t_int i6, REST); ! #undef REST
void pd_typedmess(t_pd *x, t_symbol *s, int argc, t_atom *argv)