diff options
Diffstat (limited to 'src/paramCustom.c')
-rw-r--r-- | src/paramCustom.c | 203 |
1 files changed, 0 insertions, 203 deletions
diff --git a/src/paramCustom.c b/src/paramCustom.c deleted file mode 100644 index 4f6c9c2..0000000 --- a/src/paramCustom.c +++ /dev/null @@ -1,203 +0,0 @@ - - -#include "tof.h" -#include "param.h" - -static t_class *paramCustom_class; -static t_class *paramCustom_receive_class; -struct _paramCustom_receive; - -typedef struct _paramCustom { - t_object x_obj; - t_param* param; - t_outlet* outlet; - t_outlet* outlet2; - t_binbuf* bb; - t_symbol* receive; - struct _paramCustom_receive* r; - int nopresets; -} t_paramCustom; - -typedef struct _paramCustom_receive -{ - t_object x_obj; - t_paramCustom *owner; -} t_paramCustom_receive; - - - -static void paramCustom_bang(t_paramCustom *x) -{ - /* - outlet_anything(x->outlet, x->selector, x->ac, x->av); - - if(x->selector != &s_bang ) tof_send_anything_prepend(x->send,x->selector,x->ac,x->av,x->set_s ); - */ -} -/* - -static void paramClass_loadbang(t_paramClass *x) -{ - if (!sys_noloadbang && !x->noloadbang) - paramClass_bang(x); -} -*/ - -static void paramCustom_anything(t_paramCustom *x, t_symbol *selector, int argc, t_atom *argv) -{ - if (x->bb) { - if ((selector != &s_bang)) { - int ac = argc + 2; - t_atom *av = getbytes(ac*sizeof(*av)); - tof_copy_atoms(argv,av+2,argc); - SETSYMBOL(av, x->param->path); - SETSYMBOL(av+1, selector); - binbuf_add(x->bb, ac, av); - binbuf_addsemi(x->bb); - freebytes(av, ac*sizeof(*av)); - } - } else { - pd_error(x,"No save triggered"); - } -} - - - - -// DECONSTRUCTOR - -static void paramCustom_free(t_paramCustom *x) -{ - - if (x->receive) pd_unbind(&x->r->x_obj.ob_pd, x->receive); - - if (x->param) param_unregister(x->param); - - -} - -// SPECIAL PARAM GET FUNCTION -/* -static void paramClass_get(t_paramClass *x, t_symbol** s, int* ac, t_atom** av) { - *s = x->selector; - *ac = x->ac; - *av = x->av; -} -*/ - -// SPECIAL PARAM SAVE FUNCTION -static void paramCustom_save(t_paramCustom *x, t_binbuf* bb, int f) { - - // f = -1 for the main save file - // f => 0 if it is a preset - if ( f >= 0 && x->nopresets) return; - - - if ( !x->bb ) { - - x->bb = bb; - // TRIGGER OUTPUT - outlet_bang(x->outlet); - x->bb = NULL; - - } else { - pd_error(x,"paramCustom is already saving"); - } - -} - - - -static void paramCustom_receive_anything(t_paramCustom_receive *r, t_symbol *s, int ac, t_atom *av){ - - outlet_anything(r->owner->outlet2,s,ac,av); - - -} - - - -// CONSTRUCTOR -static void* paramCustom_new(t_symbol *s, int ac, t_atom *av) -{ - t_paramCustom *x = (t_paramCustom *)pd_new(paramCustom_class); - - - // GET THE CURRENT CANVAS - t_canvas* canvas=tof_get_canvas(); - - // GET THE NAME - t_symbol* name = param_get_name(ac,av); - - if (!name) return NULL; - - t_symbol* path = param_get_path(canvas,name); - t_symbol* root = tof_get_dollarzero(tof_get_root_canvas(canvas)); - - // FIND THE NO PRESET TAG: /nps - x->nopresets = tof_find_tag('/',gensym("/nps"), ac-1, av+1); - - - - x->param = param_register(x,root,path, NULL,\ - (t_paramSaveMethod) paramCustom_save,NULL); - - if (!x->param) return NULL; - - - - int l = strlen(path->s_name) + strlen(root->s_name) + 2; - char* receiver = getbytes( l * sizeof(*receiver)); - strcat(receiver,root->s_name); - strcat(receiver,path->s_name); - x->receive = gensym(receiver); - //strcat(receiver,"_"); - // x->send = gensym(receiver); - freebytes(receiver, l * sizeof(*receiver)); - - #ifdef PARAMDEBUG - post("receive:%s",x->receive->s_name); - //post("send:%s",x->send->s_name); - #endif - - - x->bb = NULL; - - - // Set up receive proxy - t_paramCustom_receive *r = (t_paramCustom_receive *)pd_new(paramCustom_receive_class); - x->r = r; - r->owner = x; - - // BIND RECEIVER - pd_bind(&r->x_obj.ob_pd, x->receive ); - - - - - // CREATE INLETS AND OUTLETS - //inlet_new((t_object *)x, (t_pd *)p, 0, 0); - x->outlet = outlet_new(&x->x_obj, &s_list); - x->outlet2 = outlet_new(&x->x_obj, &s_list); - - return (x); -} - -void paramCustom_setup(void) -{ - paramCustom_class = class_new(gensym("paramCustom"), - (t_newmethod)paramCustom_new, (t_method)paramCustom_free, - sizeof(t_paramCustom), 0, A_GIMME, 0); - - - class_addanything(paramCustom_class, paramCustom_anything); - class_addbang(paramCustom_class, paramCustom_bang); - - //class_addmethod(param_class, (t_method)paramClass_loadbang, gensym("loadbang"), 0); - - paramCustom_receive_class = class_new(gensym("_paramCustom_receive"), - 0, 0, sizeof(t_paramCustom_receive), CLASS_PD | CLASS_NOINLET, 0); - - class_addanything(paramCustom_receive_class, paramCustom_receive_anything); - -} |