Update of /cvsroot/pure-data/pd/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28699
Modified Files: Tag: desiredata m_class.c Log Message: .
Index: m_class.c =================================================================== RCS file: /cvsroot/pure-data/pd/src/m_class.c,v retrieving revision 1.3.4.7.2.22.2.5 retrieving revision 1.3.4.7.2.22.2.6 diff -C2 -d -r1.3.4.7.2.22.2.5 -r1.3.4.7.2.22.2.6 *** m_class.c 8 Dec 2006 05:28:38 -0000 1.3.4.7.2.22.2.5 --- m_class.c 8 Dec 2006 05:34:26 -0000 1.3.4.7.2.22.2.6 *************** *** 206,224 **** called back (and the new method explicitly takes care of this.) */
! void class_addcreator(t_newmethod newmethod, t_symbol *s, ! t_atomtype type1, ...) ! { va_list ap; t_atomtype vec[MAXPDARG+1], *vp = vec; int count = 0; *vp = type1; - va_start(ap, type1); ! while (*vp) ! { ! if (count == MAXPDARG) ! { ! error("class %s: sorry: only %d creation args allowed", ! s->s_name, MAXPDARG); break; } --- 206,218 ---- called back (and the new method explicitly takes care of this.) */
! void class_addcreator(t_newmethod newmethod, t_symbol *s, t_atomtype type1, ...) { va_list ap; t_atomtype vec[MAXPDARG+1], *vp = vec; int count = 0; *vp = type1; va_start(ap, type1); ! while (*vp) { ! if (count == MAXPDARG) { ! error("class %s: sorry: only %d creation args allowed", s->s_name, MAXPDARG); break; } *************** *** 226,230 **** count++; *vp = va_arg(ap, t_atomtype); ! } va_end(ap); class_addmethod(pd_objectmaker, (t_method)newmethod, s, --- 220,224 ---- count++; *vp = va_arg(ap, t_atomtype); ! } va_end(ap); class_addmethod(pd_objectmaker, (t_method)newmethod, s, *************** *** 246,265 **** }
! void class_addmethod2(t_class *c, t_method fn, t_symbol *sel, const char *fmt) ! { t_methodentry *m; int argtype = *fmt++; int nargs; ! /* "signal" method specifies that we take audio signals but ! that we don't want automatic float to signal conversion. This ! is obsolete; you should now use the CLASS_MAINSIGNALIN macro. */ ! if (sel == &s_signal) ! { ! if (c->c_floatsignalin) ! post("warning: signal method overrides class_mainsignalin"); c->c_floatsignalin = -1; } ! /* check for special cases. "Pointer" is missing here so that ! pd_objectmaker's pointer method can be typechecked differently. */ if (sel == &s_bang) {if (argtype) goto phooey; class_addbang(c, fn);} else if (sel == &s_float) {if (argtype!='f' || *fmt) goto phooey; class_doaddfloat(c,fn);} --- 240,256 ---- }
! void class_addmethod2(t_class *c, t_method fn, t_symbol *sel, const char *fmt) { t_methodentry *m; int argtype = *fmt++; int nargs; ! /* "signal" method specifies that we take audio signals but ! that we don't want automatic float to signal conversion. This ! is obsolete; you should now use the CLASS_MAINSIGNALIN macro. */ ! if (sel == &s_signal) { ! if (c->c_floatsignalin) post("warning: signal method overrides class_mainsignalin"); c->c_floatsignalin = -1; } ! /* check for special cases. "Pointer" is missing here so that ! pd_objectmaker's pointer method can be typechecked differently. */ if (sel == &s_bang) {if (argtype) goto phooey; class_addbang(c, fn);} else if (sel == &s_float) {if (argtype!='f' || *fmt) goto phooey; class_doaddfloat(c,fn);} *************** *** 449,453 **** pthread_mutex_unlock(&hash_lock); #endif ! return (sym2); }
--- 440,444 ---- pthread_mutex_unlock(&hash_lock); #endif ! return sym2; }
*************** *** 584,591 **** /* This is externally available, but note that it might later disappear; the whole "newest" thing is a hack which needs to be redesigned. */ ! t_pd *pd_newest(void) ! { ! return (newest); ! }
/* horribly, we need prototypes for each of the artificial function --- 575,579 ---- /* This is externally available, but note that it might later disappear; the whole "newest" thing is a hack which needs to be redesigned. */ ! t_pd *pd_newest(void) {return newest;}
/* horribly, we need prototypes for each of the artificial function *************** *** 624,637 **** return; } ! if (s == &s_bang) { ! c->c_bangmethod(x); ! return; ! } ! if (s == &s_list) { ! c->c_listmethod(x, s, argc, argv); ! return; ! } if (s == &s_symbol) { ! c->c_symbolmethod(x, argc && argv->a_type==A_SYMBOL ? argv->a_w.w_symbol : &s_); return; } --- 612,619 ---- return; } ! if (s == &s_bang) {c->c_bangmethod(x); return;} ! if (s == &s_list) {c->c_listmethod(x,s,argc,argv); return;} if (s == &s_symbol) { ! c->c_symbolmethod(x, argc && argv->a_type==A_SYMBOL ? argv->a_w.w_symbol : &s_); return; } *************** *** 711,716 **** }
! void pd_vmess(t_pd *x, t_symbol *sel, char *fmt, ...) ! { va_list ap; t_atom arg[MAXPDARG], *at =arg; --- 693,697 ---- }
! void pd_vmess(t_pd *x, t_symbol *sel, char *fmt, ...) { va_list ap; t_atom arg[MAXPDARG], *at =arg; *************** *** 719,734 ****
va_start(ap, fmt); ! while (1) ! { ! if (nargs > MAXPDARG) ! { pd_error(x, "pd_vmess: only %d allowed", MAXPDARG); break; } ! switch(*fp++) ! { case 'f': SETFLOAT(at, va_arg(ap, double)); break; case 's': SETSYMBOL(at, va_arg(ap, t_symbol *)); break; ! case 'i': SETFLOAT(at, va_arg(ap, t_int)); break; case 'p': SETPOINTER(at, va_arg(ap, t_gpointer *)); break; default: goto done; --- 700,712 ----
va_start(ap, fmt); ! while (1) { ! if (nargs > MAXPDARG) { pd_error(x, "pd_vmess: only %d allowed", MAXPDARG); break; } ! switch(*fp++) { case 'f': SETFLOAT(at, va_arg(ap, double)); break; case 's': SETSYMBOL(at, va_arg(ap, t_symbol *)); break; ! case 'i': SETFLOAT(at, va_arg(ap, t_int)); break; case 'p': SETPOINTER(at, va_arg(ap, t_gpointer *)); break; default: goto done; *************** *** 742,796 **** }
! void pd_forwardmess(t_pd *x, int argc, t_atom *argv) ! { ! if (argc) ! { t_atomtype t = argv->a_type; if (t == A_SYMBOL) pd_typedmess(x, argv->a_w.w_symbol, argc-1, argv+1); ! else if (t == A_POINTER) ! { ! if (argc == 1) pd_pointer(x, argv->a_w.w_gpointer); ! else pd_list(x, &s_list, argc, argv); } ! else if (t == A_FLOAT) ! { ! if (argc == 1) pd_float(x, argv->a_w.w_float); ! else pd_list(x, &s_list, argc, argv); } else bug("pd_forwardmess"); } - }
void nullfn(void) {}
! t_gotfn getfn(t_pd *x, t_symbol *s) ! { t_class *c = *x; t_methodentry *m; int i; ! ! for (i = c->c_nmethod, m = c->c_methods; i--; m++) ! if (m->me_name == s) return(m->me_fun); pd_error(x, "%s: no method for message '%s'", c->c_name->s_name, s->s_name); return((t_gotfn)nullfn); }
! t_gotfn zgetfn(t_pd *x, t_symbol *s) ! { t_class *c = *x; t_methodentry *m; int i; ! ! for (i = c->c_nmethod, m = c->c_methods; i--; m++) ! if (m->me_name == s) return(m->me_fun); ! return(0); }
! ! void class_settip(t_class *x,t_symbol* s) ! { ! x->c_firsttip = s; ! }
/* ---------------------------------------------------------------- */ --- 720,757 ---- }
! void pd_forwardmess(t_pd *x, int argc, t_atom *argv) { ! if (argc) { t_atomtype t = argv->a_type; if (t == A_SYMBOL) pd_typedmess(x, argv->a_w.w_symbol, argc-1, argv+1); ! else if (t == A_POINTER) { ! if (argc == 1) pd_pointer(x, argv->a_w.w_gpointer); else pd_list(x, &s_list, argc, argv); } ! else if (t == A_FLOAT) { ! if (argc == 1) pd_float(x, argv->a_w.w_float); else pd_list(x, &s_list, argc, argv); } else bug("pd_forwardmess"); } }
void nullfn(void) {}
! t_gotfn getfn(t_pd *x, t_symbol *s) { t_class *c = *x; t_methodentry *m; int i; ! for (i = c->c_nmethod, m = c->c_methods; i--; m++) if (m->me_name == s) return m->me_fun; pd_error(x, "%s: no method for message '%s'", c->c_name->s_name, s->s_name); return((t_gotfn)nullfn); }
! t_gotfn zgetfn(t_pd *x, t_symbol *s) { t_class *c = *x; t_methodentry *m; int i; ! for (i = c->c_nmethod, m = c->c_methods; i--; m++) if (m->me_name == s) return m->me_fun; ! return 0; }
! void class_settip(t_class *x,t_symbol* s) {x->c_firsttip = s;}
/* ---------------------------------------------------------------- */