//FSUBR int f_setq(int arglist){ int arg1,arg2; arg1 = car(arglist); arg2 = eval(cadr(arglist)); bindsym(arg1,arg2); return(T); }
void bindfunc1(char *name, int addr){ int sym,val; sym = makesym(name); val = freshcell(); SET_TAG(val,FUNC); SET_BIND(val,addr); SET_CDR(val,0); bindsym(sym,val); }
void bindfunc(char *name, tag tag, int(*func)(int)){ int sym,val; sym = makesym(name); val = freshcell(); SET_TAG(val,tag); SET_SUBR(val,func); SET_CDR(val,0); bindsym(sym,val); }
//--FSUBR----------- int f_setq(int arglist){ int arg1,arg2; checkarg(LEN2_TEST, "setq", arglist); checkarg(SYMBOL_TEST, "setq", car(arglist)); arg1 = car(arglist); arg2 = eval(cadr(arglist)); bindsym(arg1,arg2); return(T); }
void bind(int lambda, int arglist){ int arg1,arg2; EP = E; while(!(IS_NIL(lambda))){ arg1 = car(lambda); arg2 = car(arglist); bindsym(arg1,arg2); lambda = cdr(lambda); arglist = cdr(arglist); } }
void bindfunc(char *name, tag tag, int func){ int sym,val; sym = makesym(name); val = freshcell(); SET_TAG(val,tag); switch(tag){ case SUBR: case FSUBR: SET_SUBR(val,func); break; case LAMBDA: SET_BIND(val,func); break; } SET_CDR(val,0); bindsym(sym,val); }
static void *breakpoints_new(t_symbol *s,int argc,t_atom* argv) { t_breakpoints *x = (t_breakpoints *)pd_new(breakpoints_class); x->borderwidth = 1; x->state = 0; x->x_f = 0; x->args = STATES; x->finalvalues = getbytes( x->args*sizeof(t_float)); x->duration = getbytes( x->args*sizeof(t_float)); #ifdef DEBUG post("finalvalues %x",x->finalvalues); #endif /* widget */ x->w.grabbed = 0; x->resizing = 0; x->resizeable = 0; x->w.glist = (t_glist*) canvas_getcurrent(); x->w.width = 200; if (argc) x->w.width = atom_getfloat(argv++),argc--; x->w.height = 140; if (argc) x->w.height = atom_getfloat(argv++),argc--; t_float initialDuration = 100; if (argc) initialDuration = atom_getfloat(argv++),argc--; x->r_sym = &s_; if (argc) { t_symbol* n; n = atom_getsymbol(argv++); bindsym(&x->x_obj.ob_pd,x->r_sym,n); x->r_sym = n; argc--; } #ifdef DEBUG post("recv %s",x->r_sym->s_name); #endif x->s_sym = &s_; if (argc) x->s_sym = atom_getsymbol(argv++),argc--; #ifdef DEBUG post("send %s",x->s_sym->s_name); #endif x->d_sym = &s_; if (argc) x->d_sym = atom_getsymbol(argv++),argc--; #ifdef DEBUG post("send %s",x->d_sym->s_name); #endif x->c_sym = &s_; if (argc) x->c_sym = atom_getsymbol(argv++),argc--; #ifdef DEBUG post("change %s",x->d_sym->s_name); #endif if (argc>2) breakpoints_init(x,argc,argv); else { t_atom a[5]; SETFLOAT(a,0); SETFLOAT(a+1,50); SETFLOAT(a+2,1); SETFLOAT(a+3,50); SETFLOAT(a+4,0); breakpoints_init(x,5,a); } x->x_val = 0.0; x->x_state = NONE; x->sustain_state = SUSTAIN; x->x_freeze = 0; breakpoints_totaldur(x,initialDuration); //outlet_new(&x->x_obj, gensym("signal")); outlet_new(&x->x_obj, &s_float); x->out2 = outlet_new(&x->x_obj, &s_float); x->out3 = outlet_new(&x->x_obj, &s_bang); x->x_clock = clock_new(x, (t_method) breakpoints_tick); return (x); }