Update of /cvsroot/pure-data/externals/iemlib/src/iemlib2 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29541/iemlib2
Modified Files: add2_comma.c bpe.c dollarg.c exp_inc.c float24.c iem_anything_kernel.c iem_append_kernel.c iem_i_route.c iem_pbank_csv.c iem_prepend_kernel.c iem_receive_kernel.c iem_route.c iem_sel_any.c iem_send_kernel.c iemlib.h iemlib2.c init.c list2send.c makefile makefile_win mergefilename.c modulo_counter.c post_netreceive.c pre_inlet.c prepend_ascii.c prepend_kernel.c round_zero.c sigLFO_noise.c sigfade.c sigiem_blocksize.c sigiem_samplerate.c sigm2f.c speedlim.c splitfilename.c stripfilename.c toggle_mess.c transf_fader.c unsymbol.c wrap.c Log Message: updated to release-1.16
Index: sigLFO_noise.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/sigLFO_noise.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** sigLFO_noise.c 18 May 2004 21:33:33 -0000 1.1.1.1 --- sigLFO_noise.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,129 **** ! /* Copyright (c) 1997-2003 Miller Puckette. ! * For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ------------------------ LFO_noise~ ----------------------------- */ ! ! static t_class *sigLFO_noise_class; ! ! typedef struct _sigLFO_noise ! { ! t_object x_obj; ! double x_range; ! double x_rcp_range; ! unsigned int x_state; ! float x_fact; ! float x_incr; ! float x_y1; ! float x_y2; ! float x_phase; ! } t_sigLFO_noise; ! ! static int sigLFO_noise_makeseed(void) ! { ! static unsigned int sigLFO_noise_nextseed = 1489853723; ! ! sigLFO_noise_nextseed = sigLFO_noise_nextseed * 435898247 + 938284287; ! return(sigLFO_noise_nextseed & 0x7fffffff); ! } ! ! static float sigLFO_noise_new_rand(t_sigLFO_noise *x) ! { ! unsigned int state = x->x_state; ! double new_val, range = x->x_range; ! ! x->x_state = state = state * 472940017 + 832416023; ! new_val = range * ((double)state) * (1./4294967296.); ! if(new_val >= range) ! new_val = range-1; ! new_val -= 32767.0; ! return(new_val*(1.0/32767.0)); ! } ! ! static void *sigLFO_noise_new(t_float freq) ! { ! t_sigLFO_noise *x = (t_sigLFO_noise *)pd_new(sigLFO_noise_class); ! ! x->x_range = 65535.0; ! x->x_rcp_range = (double)x->x_range * (1.0/4294967296.0); ! x->x_state = sigLFO_noise_makeseed(); ! x->x_fact = 2. / 44100.0; ! x->x_incr = freq * x->x_fact; ! if(x->x_incr < 0.0) ! x->x_incr = 0.0; ! else if(x->x_incr > 0.1) ! x->x_incr = 0.1; ! x->x_y1 = sigLFO_noise_new_rand(x); ! x->x_y2 = sigLFO_noise_new_rand(x); ! x->x_phase = 0.0; ! outlet_new(&x->x_obj, gensym("signal")); ! return (x); ! } ! ! static t_int *sigLFO_noise_perform(t_int *w) ! { ! t_float *out = (t_float *)(w[1]); ! t_sigLFO_noise *x = (t_sigLFO_noise *)(w[2]); ! int n = (int)(w[3]); ! float phase = x->x_phase; ! float x_y1 = x->x_y1; ! float x_y2 = x->x_y2; ! float incr = x->x_incr; ! ! while(n--) ! { ! if(phase > 1.0) ! { ! x_y1 = x_y2; ! x_y2 = sigLFO_noise_new_rand(x); ! phase -= 1.0; ! } ! *out++ = (x_y2 - x_y1) * phase + x_y1; ! phase += incr; ! } ! x->x_phase = phase; ! x->x_y1 = x_y1; ! x->x_y2 = x_y2; ! return (w+4); ! } ! ! static void sigLFO_noise_float(t_sigLFO_noise *x, t_float freq) ! { ! x->x_incr = freq * x->x_fact; ! if(x->x_incr < 0.0) ! x->x_incr = 0.0; ! else if(x->x_incr > 0.1) ! x->x_incr = 0.1; ! } ! ! static void sigLFO_noise_dsp(t_sigLFO_noise *x, t_signal **sp) ! { ! x->x_fact = 2. / sp[0]->s_sr; ! dsp_add(sigLFO_noise_perform, 3, sp[0]->s_vec, x, sp[0]->s_n); ! } ! ! void sigLFO_noise_setup(void) ! { ! sigLFO_noise_class = class_new(gensym("LFO_noise~"), ! (t_newmethod)sigLFO_noise_new, 0, ! sizeof(t_sigLFO_noise), 0, A_DEFFLOAT, 0); ! class_addmethod(sigLFO_noise_class, (t_method)sigLFO_noise_dsp, ! gensym("dsp"), 0); ! class_addfloat(sigLFO_noise_class, (t_method)sigLFO_noise_float); ! class_sethelpsymbol(sigLFO_noise_class, gensym("iemhelp/help-LFO_noise~")); ! } ! --- 1,128 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! ! /* -------------------- LFO_noise~ --------------------- */ ! /* ---- outputs a 2 point interpolated white noise ----- */ ! /* -- with lower cutoff frequency than 0.5 samplerate -- */ ! ! static t_class *sigLFO_noise_class; ! ! typedef struct _sigLFO_noise ! { ! t_object x_obj; ! double x_range; ! double x_rcp_range; ! unsigned int x_state; ! float x_fact; ! float x_incr; ! float x_y1; ! float x_y2; ! float x_phase; ! } t_sigLFO_noise; ! ! static int sigLFO_noise_makeseed(void) ! { ! static unsigned int sigLFO_noise_nextseed = 1489853723; ! ! sigLFO_noise_nextseed = sigLFO_noise_nextseed * 435898247 + 938284287; ! return(sigLFO_noise_nextseed & 0x7fffffff); ! } ! ! static float sigLFO_noise_new_rand(t_sigLFO_noise *x) ! { ! unsigned int state = x->x_state; ! double new_val, range = x->x_range; ! ! x->x_state = state = state * 472940017 + 832416023; ! new_val = range * ((double)state) * (1./4294967296.); ! if(new_val >= range) ! new_val = range-1; ! new_val -= 32767.0; ! return(new_val*(1.0/32767.0)); ! } ! ! static void *sigLFO_noise_new(t_float freq) ! { ! t_sigLFO_noise *x = (t_sigLFO_noise *)pd_new(sigLFO_noise_class); ! ! x->x_range = 65535.0; ! x->x_rcp_range = (double)x->x_range * (1.0/4294967296.0); ! x->x_state = sigLFO_noise_makeseed(); ! x->x_fact = 2. / 44100.0; ! x->x_incr = freq * x->x_fact; ! if(x->x_incr < 0.0) ! x->x_incr = 0.0; ! else if(x->x_incr > 0.1) ! x->x_incr = 0.1; ! x->x_y1 = sigLFO_noise_new_rand(x); ! x->x_y2 = sigLFO_noise_new_rand(x); ! x->x_phase = 0.0; ! outlet_new(&x->x_obj, gensym("signal")); ! return (x); ! } ! ! static t_int *sigLFO_noise_perform(t_int *w) ! { ! t_float *out = (t_float *)(w[1]); ! t_sigLFO_noise *x = (t_sigLFO_noise *)(w[2]); ! int n = (int)(w[3]); ! float phase = x->x_phase; ! float x_y1 = x->x_y1; ! float x_y2 = x->x_y2; ! float incr = x->x_incr; ! ! while(n--) ! { ! if(phase > 1.0) ! { ! x_y1 = x_y2; ! x_y2 = sigLFO_noise_new_rand(x); ! phase -= 1.0; ! } ! *out++ = (x_y2 - x_y1) * phase + x_y1; ! phase += incr; ! } ! x->x_phase = phase; ! x->x_y1 = x_y1; ! x->x_y2 = x_y2; ! return (w+4); ! } ! ! static void sigLFO_noise_float(t_sigLFO_noise *x, t_float freq) ! { ! x->x_incr = freq * x->x_fact; ! if(x->x_incr < 0.0) ! x->x_incr = 0.0; ! else if(x->x_incr > 0.1) ! x->x_incr = 0.1; ! } ! ! static void sigLFO_noise_dsp(t_sigLFO_noise *x, t_signal **sp) ! { ! x->x_fact = 2. / sp[0]->s_sr; ! dsp_add(sigLFO_noise_perform, 3, sp[0]->s_vec, x, sp[0]->s_n); ! } ! ! void sigLFO_noise_setup(void) ! { ! sigLFO_noise_class = class_new(gensym("LFO_noise~"), ! (t_newmethod)sigLFO_noise_new, 0, ! sizeof(t_sigLFO_noise), 0, A_DEFFLOAT, 0); ! class_addmethod(sigLFO_noise_class, (t_method)sigLFO_noise_dsp, ! gensym("dsp"), 0); ! class_addfloat(sigLFO_noise_class, (t_method)sigLFO_noise_float); ! class_sethelpsymbol(sigLFO_noise_class, gensym("iemhelp/help-LFO_noise~")); ! }
Index: init.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/init.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** init.c 18 May 2004 21:33:32 -0000 1.1.1.1 --- init.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,203 **** ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ------------------------ init ---------------------------- */ ! static t_class *init_class; ! ! typedef struct _init ! { ! t_object x_obj; ! int x_n; ! int x_ac; ! t_atom *x_at; ! t_symbol *x_sym; ! t_atomtype x_type; ! } t_init; ! ! static void init_bang(t_init *x) ! { ! if(x->x_type == A_FLOAT) ! outlet_float(x->x_obj.ob_outlet, atom_getfloat(x->x_at)); ! else if(x->x_type == A_SYMBOL) ! outlet_symbol(x->x_obj.ob_outlet, atom_getsymbol(x->x_at)); ! else if(x->x_type == A_NULL) ! outlet_bang(x->x_obj.ob_outlet); ! else if(x->x_type == A_COMMA) ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac, x->x_at); ! else if(x->x_type == A_GIMME) ! outlet_list(x->x_obj.ob_outlet, &s_list, x->x_ac, x->x_at); ! else if(x->x_type == A_POINTER) ! outlet_pointer(x->x_obj.ob_outlet, (t_gpointer *)x->x_at->a_w.w_gpointer); ! } ! ! static void init_loadbang(t_init *x) ! { ! if(!sys_noloadbang) ! init_bang(x); ! } ! ! static void init_float(t_init *x, t_float f) ! { ! x->x_ac = 1; ! SETFLOAT(x->x_at, f); ! x->x_sym = &s_float; ! x->x_type = A_FLOAT; ! outlet_float(x->x_obj.ob_outlet, f); ! } ! ! static void init_symbol(t_init *x, t_symbol *s) ! { ! x->x_ac = 1; ! SETSYMBOL(x->x_at, s); ! x->x_sym = &s_symbol; ! x->x_type = A_SYMBOL; ! outlet_symbol(x->x_obj.ob_outlet, s); ! } ! ! static void init_pointer(t_init *x, t_gpointer *gp) ! { ! x->x_ac = 1; ! SETPOINTER(x->x_at, gp); ! x->x_sym = &s_pointer; ! x->x_type = A_POINTER; ! outlet_pointer(x->x_obj.ob_outlet, gp); ! } ! ! static void init_list(t_init *x, t_symbol *s, int ac, t_atom *av) ! { ! t_atom *at; ! ! if(ac > x->x_n) ! { ! if(x->x_at) ! freebytes(x->x_at, x->x_n * sizeof(t_atom)); ! x->x_n = ac; ! x->x_at = (t_atom *)getbytes(x->x_n * sizeof(t_atom)); ! } ! x->x_ac = ac; ! x->x_sym = &s_list; ! at = x->x_at; ! while(ac--) ! *at++ = *av++; ! x->x_type = A_GIMME; ! outlet_list(x->x_obj.ob_outlet, &s_list, x->x_ac, x->x_at); ! } ! ! static void init_anything(t_init *x, t_symbol *s, int ac, t_atom *av) ! { ! t_atom *at; ! ! if(ac > x->x_n) ! { ! if(x->x_at) ! freebytes(x->x_at, x->x_n * sizeof(t_atom)); ! x->x_n = ac; ! x->x_at = (t_atom *)getbytes(x->x_n * sizeof(t_atom)); ! } ! x->x_ac = ac; ! x->x_sym = s; ! at = x->x_at; ! while(ac--) ! *at++ = *av++; ! x->x_type = A_COMMA; ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac, x->x_at); ! } ! ! static void init_free(t_init *x) ! { ! if(x->x_at) ! freebytes(x->x_at, x->x_n * sizeof(t_atom)); ! } ! ! static void *init_new(t_symbol *s, int ac, t_atom *av) ! { ! t_init *x = (t_init *)pd_new(init_class); ! int i; ! ! x->x_type = A_NULL; ! if(!ac) ! { ! x->x_type = A_NULL; ! x->x_sym = &s_bang; ! x->x_n = 1; ! x->x_ac = 0; ! x->x_at = (t_atom *)getbytes(x->x_n * sizeof(t_atom)); ! } ! else if(ac == 1) ! { ! if(IS_A_SYMBOL(av,0)) ! { ! x->x_type = A_COMMA; ! x->x_sym = atom_getsymbol(av); ! x->x_n = 1; ! x->x_ac = 0; ! x->x_at = (t_atom *)getbytes(x->x_n * sizeof(t_atom)); ! } ! else ! { ! if(IS_A_FLOAT(av,0)) ! { ! x->x_type = A_FLOAT; ! x->x_sym = &s_float; ! } ! else if(IS_A_POINTER(av,0)) ! { ! x->x_type = A_POINTER; ! x->x_sym = &s_pointer; ! } ! x->x_n = x->x_ac = 1; ! x->x_at = (t_atom *)getbytes(x->x_n * sizeof(t_atom)); ! x->x_at[0] = *av; ! } ! } ! else ! { ! if(IS_A_SYMBOL(av,0)) ! { ! x->x_type = A_COMMA;/*for anything*/ ! x->x_sym = atom_getsymbol(av++); ! ac--; ! } ! else ! { ! x->x_type = A_GIMME; ! x->x_sym = &s_list; ! } ! x->x_n = x->x_ac = ac; ! x->x_at = (t_atom *)getbytes(x->x_n * sizeof(t_atom)); ! for(i=0; i<ac; i++) ! x->x_at[i] = *av++; ! } ! outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! ! void init_setup(void) ! { ! init_class = class_new(gensym("init"), (t_newmethod)init_new, ! (t_method)init_free, sizeof(t_init), 0, A_GIMME, 0); ! class_addcreator((t_newmethod)init_new, gensym("ii"), A_GIMME, 0); ! class_addmethod(init_class, (t_method)init_loadbang, gensym("loadbang"), 0); ! class_addbang(init_class, (t_method)init_bang); ! class_addanything(init_class, init_anything); ! class_addlist(init_class, init_list); ! class_addpointer(init_class, init_pointer); ! class_addfloat(init_class, (t_method)init_float); ! class_addsymbol(init_class, init_symbol); ! class_sethelpsymbol(init_class, gensym("iemhelp/help-init")); ! } ! --- 1,204 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ------------------------ init ---------------------------- */ ! /* -------- a combination of loadbang and any --------------- */ ! ! static t_class *init_class; ! ! typedef struct _init ! { ! t_object x_obj; ! int x_n; ! int x_ac; ! t_atom *x_at; ! t_symbol *x_sym; ! t_atomtype x_type; ! } t_init; ! ! static void init_bang(t_init *x) ! { ! if(x->x_type == A_FLOAT) ! outlet_float(x->x_obj.ob_outlet, atom_getfloat(x->x_at)); ! else if(x->x_type == A_SYMBOL) ! outlet_symbol(x->x_obj.ob_outlet, atom_getsymbol(x->x_at)); ! else if(x->x_type == A_NULL) ! outlet_bang(x->x_obj.ob_outlet); ! else if(x->x_type == A_COMMA) ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac, x->x_at); ! else if(x->x_type == A_GIMME) ! outlet_list(x->x_obj.ob_outlet, &s_list, x->x_ac, x->x_at); ! else if(x->x_type == A_POINTER) ! outlet_pointer(x->x_obj.ob_outlet, (t_gpointer *)x->x_at->a_w.w_gpointer); ! } ! ! static void init_loadbang(t_init *x) ! { ! if(!sys_noloadbang) ! init_bang(x); ! } ! ! static void init_float(t_init *x, t_float f) ! { ! x->x_ac = 1; ! SETFLOAT(x->x_at, f); ! x->x_sym = &s_float; ! x->x_type = A_FLOAT; ! outlet_float(x->x_obj.ob_outlet, f); ! } ! ! static void init_symbol(t_init *x, t_symbol *s) ! { ! x->x_ac = 1; ! SETSYMBOL(x->x_at, s); ! x->x_sym = &s_symbol; ! x->x_type = A_SYMBOL; ! outlet_symbol(x->x_obj.ob_outlet, s); ! } ! ! static void init_pointer(t_init *x, t_gpointer *gp) ! { ! x->x_ac = 1; ! SETPOINTER(x->x_at, gp); ! x->x_sym = &s_pointer; ! x->x_type = A_POINTER; ! outlet_pointer(x->x_obj.ob_outlet, gp); ! } ! ! static void init_list(t_init *x, t_symbol *s, int ac, t_atom *av) ! { ! t_atom *at; ! ! if(ac > x->x_n) ! { ! if(x->x_at) ! freebytes(x->x_at, x->x_n * sizeof(t_atom)); ! x->x_n = ac; ! x->x_at = (t_atom *)getbytes(x->x_n * sizeof(t_atom)); ! } ! x->x_ac = ac; ! x->x_sym = &s_list; ! at = x->x_at; ! while(ac--) ! *at++ = *av++; ! x->x_type = A_GIMME; ! outlet_list(x->x_obj.ob_outlet, &s_list, x->x_ac, x->x_at); ! } ! ! static void init_anything(t_init *x, t_symbol *s, int ac, t_atom *av) ! { ! t_atom *at; ! ! if(ac > x->x_n) ! { ! if(x->x_at) ! freebytes(x->x_at, x->x_n * sizeof(t_atom)); ! x->x_n = ac; ! x->x_at = (t_atom *)getbytes(x->x_n * sizeof(t_atom)); ! } ! x->x_ac = ac; ! x->x_sym = s; ! at = x->x_at; ! while(ac--) ! *at++ = *av++; ! x->x_type = A_COMMA; ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac, x->x_at); ! } ! ! static void init_free(t_init *x) ! { ! if(x->x_at) ! freebytes(x->x_at, x->x_n * sizeof(t_atom)); ! } ! ! static void *init_new(t_symbol *s, int ac, t_atom *av) ! { ! t_init *x = (t_init *)pd_new(init_class); ! int i; ! ! x->x_type = A_NULL; ! if(!ac) ! { ! x->x_type = A_NULL; ! x->x_sym = &s_bang; ! x->x_n = 1; ! x->x_ac = 0; ! x->x_at = (t_atom *)getbytes(x->x_n * sizeof(t_atom)); ! } ! else if(ac == 1) ! { ! if(IS_A_SYMBOL(av,0)) ! { ! x->x_type = A_COMMA; ! x->x_sym = atom_getsymbol(av); ! x->x_n = 1; ! x->x_ac = 0; ! x->x_at = (t_atom *)getbytes(x->x_n * sizeof(t_atom)); ! } ! else ! { ! if(IS_A_FLOAT(av,0)) ! { ! x->x_type = A_FLOAT; ! x->x_sym = &s_float; ! } ! else if(IS_A_POINTER(av,0)) ! { ! x->x_type = A_POINTER; ! x->x_sym = &s_pointer; ! } ! x->x_n = x->x_ac = 1; ! x->x_at = (t_atom *)getbytes(x->x_n * sizeof(t_atom)); ! x->x_at[0] = *av; ! } ! } ! else ! { ! if(IS_A_SYMBOL(av,0)) ! { ! x->x_type = A_COMMA;/*for anything*/ ! x->x_sym = atom_getsymbol(av++); ! ac--; ! } ! else ! { ! x->x_type = A_GIMME; ! x->x_sym = &s_list; ! } ! x->x_n = x->x_ac = ac; ! x->x_at = (t_atom *)getbytes(x->x_n * sizeof(t_atom)); ! for(i=0; i<ac; i++) ! x->x_at[i] = *av++; ! } ! outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! ! void init_setup(void) ! { ! init_class = class_new(gensym("init"), (t_newmethod)init_new, ! (t_method)init_free, sizeof(t_init), 0, A_GIMME, 0); ! class_addcreator((t_newmethod)init_new, gensym("ii"), A_GIMME, 0); ! class_addmethod(init_class, (t_method)init_loadbang, gensym("loadbang"), 0); ! class_addbang(init_class, (t_method)init_bang); ! class_addanything(init_class, init_anything); ! class_addlist(init_class, init_list); ! class_addpointer(init_class, init_pointer); ! class_addfloat(init_class, (t_method)init_float); ! class_addsymbol(init_class, init_symbol); ! class_sethelpsymbol(init_class, gensym("iemhelp/help-init")); ! }
Index: makefile_win =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/makefile_win,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** makefile_win 9 Mar 2005 17:16:00 -0000 1.2 --- makefile_win 2 Jun 2005 18:25:00 -0000 1.3 *************** *** 28,46 **** --- 28,54 ---- float24.c \ iem_anything_kernel.c \ + iem_anything.c \ iem_append_kernel.c \ + iem_append.c \ iem_i_route.c \ iem_pbank_csv.c \ iem_prepend_kernel.c \ + iem_prepend.c \ iem_receive_kernel.c \ + iem_receive.c \ iem_route.c \ iem_sel_any.c \ iem_send_kernel.c \ + iem_send.c \ init.c \ list2send.c \ mergefilename.c \ modulo_counter.c \ + parentdollarzero.c \ post_netreceive.c \ pre_inlet.c \ prepend_ascii.c \ + protect_against_open.c \ + receive2list.c \ round_zero.c \ sigfade.c \
Index: exp_inc.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/exp_inc.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** exp_inc.c 18 May 2004 21:33:31 -0000 1.1.1.1 --- exp_inc.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,138 **** ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ------------------------ exp_inc ---------------------------- */ ! static t_class *exp_inc_class; ! ! typedef struct _exp_inc ! { ! t_object x_obj; ! float x_initialval; ! float x_currentval; ! float x_mulfactor; ! float x_addincrement; ! float x_min; ! float x_max; ! } t_exp_inc; ! ! static void exp_inc_bang(t_exp_inc *x) ! { ! outlet_float(x->x_obj.ob_outlet, x->x_currentval); ! x->x_currentval = x->x_currentval * x->x_mulfactor + x->x_addincrement; ! if(x->x_currentval < x->x_min) ! x->x_currentval = x->x_min; ! if(x->x_currentval > x->x_max) ! x->x_currentval = x->x_max; ! } ! ! static void exp_inc_reset(t_exp_inc *x) ! { ! x->x_currentval = x->x_initialval; ! if(x->x_currentval < x->x_min) ! x->x_currentval = x->x_min; ! if(x->x_currentval > x->x_max) ! x->x_currentval = x->x_max; ! } ! ! static void exp_inc_float(t_exp_inc *x, t_floatarg f) ! { ! x->x_initialval = (float)f; ! x->x_currentval = x->x_initialval; ! if(x->x_currentval < x->x_min) ! x->x_currentval = x->x_min; ! if(x->x_currentval > x->x_max) ! x->x_currentval = x->x_max; ! } ! ! static void exp_inc_ft1(t_exp_inc *x, t_floatarg f) ! { ! x->x_mulfactor = 1.0 + 0.01*(float)f; ! } ! ! static void exp_inc_ft2(t_exp_inc *x, t_floatarg f) ! { ! x->x_addincrement = (float)f; ! } ! ! static void exp_inc_ft3(t_exp_inc *x, t_floatarg f) ! { ! x->x_min = (float)f; ! if(x->x_currentval < x->x_min) ! x->x_currentval = x->x_min; ! } ! ! static void exp_inc_ft4(t_exp_inc *x, t_floatarg f) ! { ! x->x_max = (float)f; ! if(x->x_currentval > x->x_max) ! x->x_currentval = x->x_max; ! } ! ! static void exp_inc_list(t_exp_inc *x, t_symbol *s, int ac, t_atom *av) ! { ! if((ac == 5)&&IS_A_FLOAT(av,0)&&IS_A_FLOAT(av,1)&&IS_A_FLOAT(av,2) ! &&IS_A_FLOAT(av,3)&&IS_A_FLOAT(av,4)) ! { ! exp_inc_ft4(x, atom_getfloatarg(4, ac, av)); ! exp_inc_ft3(x, atom_getfloatarg(3, ac, av)); ! exp_inc_ft2(x, atom_getfloatarg(2, ac, av)); ! exp_inc_ft1(x, atom_getfloatarg(1, ac, av)); ! exp_inc_float(x, atom_getfloatarg(0, ac, av)); ! } ! } ! ! static void *exp_inc_new(t_symbol *s, int ac, t_atom *av) ! { ! t_exp_inc *x = (t_exp_inc *)pd_new(exp_inc_class); ! ! x->x_currentval = 10.0; ! x->x_mulfactor = 1.0; ! x->x_addincrement = 0.0; ! x->x_min = 0.0; ! x->x_max = 1000.0; ! if((ac == 5)&&IS_A_FLOAT(av,0)&&IS_A_FLOAT(av,1)&&IS_A_FLOAT(av,2) ! &&IS_A_FLOAT(av,3)&&IS_A_FLOAT(av,4)) ! { ! exp_inc_ft4(x, atom_getfloatarg(4, ac, av)); ! exp_inc_ft3(x, atom_getfloatarg(3, ac, av)); ! exp_inc_ft2(x, atom_getfloatarg(2, ac, av)); ! exp_inc_ft1(x, atom_getfloatarg(1, ac, av)); ! exp_inc_float(x, atom_getfloatarg(0, ac, av)); ! } ! outlet_new(&x->x_obj, &s_float); ! inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft1")); ! inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft2")); ! inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft3")); ! inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft4")); ! return (x); ! } ! ! void exp_inc_setup(void) ! { ! exp_inc_class = class_new(gensym("exp_inc"), (t_newmethod)exp_inc_new, ! 0, sizeof(t_exp_inc), 0, A_GIMME, 0); ! class_addbang(exp_inc_class, exp_inc_bang); ! class_addlist(exp_inc_class, (t_method)exp_inc_list); ! class_addmethod(exp_inc_class, (t_method)exp_inc_reset, gensym("reset"), 0); ! class_addfloat(exp_inc_class, (t_method)exp_inc_float); ! class_addmethod(exp_inc_class, (t_method)exp_inc_ft1, gensym("ft1"), A_FLOAT, 0); ! class_addmethod(exp_inc_class, (t_method)exp_inc_ft2, gensym("ft2"), A_FLOAT, 0); ! class_addmethod(exp_inc_class, (t_method)exp_inc_ft3, gensym("ft3"), A_FLOAT, 0); ! class_addmethod(exp_inc_class, (t_method)exp_inc_ft4, gensym("ft4"), A_FLOAT, 0); ! class_sethelpsymbol(exp_inc_class, gensym("iemhelp/help-exp_inc")); ! } ! --- 1,135 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ------------------------ exp_inc ---------------------------- */ ! /* ------- exponetial/linear-incremental-bang-counter ---------- */ ! ! ! static t_class *exp_inc_class; ! ! typedef struct _exp_inc ! { ! t_object x_obj; ! float x_initialval; ! float x_currentval; ! float x_mulfactor; ! float x_addincrement; ! float x_min; ! float x_max; ! } t_exp_inc; ! ! static void exp_inc_bang(t_exp_inc *x) ! { ! outlet_float(x->x_obj.ob_outlet, x->x_currentval); ! x->x_currentval = x->x_currentval * x->x_mulfactor + x->x_addincrement; ! if(x->x_currentval < x->x_min) ! x->x_currentval = x->x_min; ! if(x->x_currentval > x->x_max) ! x->x_currentval = x->x_max; ! } ! ! static void exp_inc_reset(t_exp_inc *x) ! { ! x->x_currentval = x->x_initialval; ! if(x->x_currentval < x->x_min) ! x->x_currentval = x->x_min; ! if(x->x_currentval > x->x_max) ! x->x_currentval = x->x_max; ! } ! ! static void exp_inc_float(t_exp_inc *x, t_floatarg f) ! { ! x->x_initialval = (float)f; ! x->x_currentval = x->x_initialval; ! if(x->x_currentval < x->x_min) ! x->x_currentval = x->x_min; ! if(x->x_currentval > x->x_max) ! x->x_currentval = x->x_max; ! } ! ! static void exp_inc_ft1(t_exp_inc *x, t_floatarg f) ! { ! x->x_mulfactor = 1.0 + 0.01*(float)f; ! } ! ! static void exp_inc_ft2(t_exp_inc *x, t_floatarg f) ! { ! x->x_addincrement = (float)f; ! } ! ! static void exp_inc_ft3(t_exp_inc *x, t_floatarg f) ! { ! x->x_min = (float)f; ! if(x->x_currentval < x->x_min) ! x->x_currentval = x->x_min; ! } ! ! static void exp_inc_ft4(t_exp_inc *x, t_floatarg f) ! { ! x->x_max = (float)f; ! if(x->x_currentval > x->x_max) ! x->x_currentval = x->x_max; ! } ! ! static void exp_inc_list(t_exp_inc *x, t_symbol *s, int ac, t_atom *av) ! { ! if((ac == 5)&&IS_A_FLOAT(av,0)&&IS_A_FLOAT(av,1)&&IS_A_FLOAT(av,2) ! &&IS_A_FLOAT(av,3)&&IS_A_FLOAT(av,4)) ! { ! exp_inc_ft4(x, atom_getfloatarg(4, ac, av)); ! exp_inc_ft3(x, atom_getfloatarg(3, ac, av)); ! exp_inc_ft2(x, atom_getfloatarg(2, ac, av)); ! exp_inc_ft1(x, atom_getfloatarg(1, ac, av)); ! exp_inc_float(x, atom_getfloatarg(0, ac, av)); ! } ! } ! ! static void *exp_inc_new(t_symbol *s, int ac, t_atom *av) ! { ! t_exp_inc *x = (t_exp_inc *)pd_new(exp_inc_class); ! ! x->x_currentval = 10.0; ! x->x_mulfactor = 1.0; ! x->x_addincrement = 0.0; ! x->x_min = 0.0; ! x->x_max = 1000.0; ! if((ac == 5)&&IS_A_FLOAT(av,0)&&IS_A_FLOAT(av,1)&&IS_A_FLOAT(av,2) ! &&IS_A_FLOAT(av,3)&&IS_A_FLOAT(av,4)) ! { ! exp_inc_ft4(x, atom_getfloatarg(4, ac, av)); ! exp_inc_ft3(x, atom_getfloatarg(3, ac, av)); ! exp_inc_ft2(x, atom_getfloatarg(2, ac, av)); ! exp_inc_ft1(x, atom_getfloatarg(1, ac, av)); ! exp_inc_float(x, atom_getfloatarg(0, ac, av)); ! } ! outlet_new(&x->x_obj, &s_float); ! inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft1")); ! inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft2")); ! inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft3")); ! inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft4")); ! return (x); ! } ! ! void exp_inc_setup(void) ! { ! exp_inc_class = class_new(gensym("exp_inc"), (t_newmethod)exp_inc_new, ! 0, sizeof(t_exp_inc), 0, A_GIMME, 0); ! class_addbang(exp_inc_class, exp_inc_bang); ! class_addlist(exp_inc_class, (t_method)exp_inc_list); ! class_addmethod(exp_inc_class, (t_method)exp_inc_reset, gensym("reset"), 0); ! class_addfloat(exp_inc_class, (t_method)exp_inc_float); ! class_addmethod(exp_inc_class, (t_method)exp_inc_ft1, gensym("ft1"), A_FLOAT, 0); ! class_addmethod(exp_inc_class, (t_method)exp_inc_ft2, gensym("ft2"), A_FLOAT, 0); ! class_addmethod(exp_inc_class, (t_method)exp_inc_ft3, gensym("ft3"), A_FLOAT, 0); ! class_addmethod(exp_inc_class, (t_method)exp_inc_ft4, gensym("ft4"), A_FLOAT, 0); ! class_sethelpsymbol(exp_inc_class, gensym("iemhelp/help-exp_inc")); ! }
Index: iem_i_route.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/iem_i_route.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** iem_i_route.c 18 May 2004 21:33:31 -0000 1.1.1.1 --- iem_i_route.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,111 **** ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* -------------------------- iem_i_route ------------------------------ */ ! /* routes a list beginning with a float to an outlet, which are defined by ! first- , last- index and offset-index */ ! ! static t_class *iem_i_route_class; ! ! typedef struct _iem_i_route ! { ! t_object x_obj; ! int x_first_element; ! int x_last_element; ! t_outlet **x_out; ! } t_iem_i_route; ! ! static void iem_i_route_list(t_iem_i_route *x, t_symbol *sel, int argc, t_atom *argv) ! { ! t_outlet **out; ! int first, last, i; ! ! if(!argc) ! return; ! i = (int)atom_getintarg(0, argc, argv); ! first = x->x_first_element; ! last = x->x_last_element; ! out = x->x_out; ! if((i >= first)&&(i <= last)) ! { ! out += i - first; ! if(argc >= 3) ! { ! if(IS_A_FLOAT(argv,1)) ! outlet_list(*out, &s_list, argc-1, argv+1); ! else if(IS_A_SYMBOL(argv,1)) ! outlet_anything(*out, atom_getsymbolarg(1, argc, argv), argc-2, argv+2); ! } ! else if(argc >= 2) ! { ! if(IS_A_FLOAT(argv,1)) ! outlet_float(*out, (float)atom_getfloatarg(1, argc, argv)); ! else if(IS_A_SYMBOL(argv,1)) ! outlet_anything(*out, atom_getsymbolarg(1, argc, argv), 0, argv+2); ! } ! else ! outlet_bang(*out); ! } ! else ! { ! out += last - first + 1; ! outlet_list(*out, &s_list, argc, argv); ! } ! } ! ! static void iem_i_route_free(t_iem_i_route *x) ! { ! freebytes(x->x_out, (x->x_last_element-x->x_first_element+2) * sizeof(t_outlet *)); ! } ! ! static void *iem_i_route_new(t_symbol *s, int argc, t_atom *argv) ! { ! int n, i; ! t_outlet **out; ! t_iem_i_route *x = (t_iem_i_route *)pd_new(iem_i_route_class); ! ! if((argc >= 2)&&IS_A_FLOAT(argv,0)&&IS_A_FLOAT(argv,1)) ! { ! x->x_first_element = (int)atom_getintarg(0, argc, argv); ! x->x_last_element = (int)atom_getintarg(1, argc, argv); ! if((argc >= 3)&&IS_A_FLOAT(argv,2)) ! { ! i = (int)atom_getintarg(2, argc, argv); ! x->x_first_element += i; ! x->x_last_element += i; ! } ! x->x_out = (t_outlet **)getbytes((x->x_last_element-x->x_first_element+2) * sizeof(t_outlet *)); ! n = x->x_last_element - x->x_first_element + 2; ! for(i=0, out=x->x_out; i<n; i++, out++) ! *out = outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! else ! { ! post("iem_i_route-ERROR: needs 3 floats!!"); ! return(0); ! } ! } ! ! void iem_i_route_setup(void) ! { ! iem_i_route_class = class_new(gensym("iem_i_route"), (t_newmethod)iem_i_route_new, ! (t_method)iem_i_route_free, sizeof(t_iem_i_route), 0, A_GIMME, 0); ! class_addcreator((t_newmethod)iem_i_route_new, gensym("iiroute"), A_GIMME, 0); ! class_addlist(iem_i_route_class, iem_i_route_list); ! class_sethelpsymbol(iem_i_route_class, gensym("iemhelp/help-iem_i_route")); ! } --- 1,112 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* -------------------------- iem_i_route ------------------------------ */ ! /* ---- routes a list beginning with a float to an outlet, which is ---- */ ! /* -- defined by the 3 initial arguments first index, last index and --- */ ! /* ---------------------- offset index --------------------------------- */ ! ! static t_class *iem_i_route_class; ! ! typedef struct _iem_i_route ! { ! t_object x_obj; ! int x_first_element; ! int x_last_element; ! t_outlet **x_out; ! } t_iem_i_route; ! ! static void iem_i_route_list(t_iem_i_route *x, t_symbol *sel, int argc, t_atom *argv) ! { ! t_outlet **out; ! int first, last, i; ! ! if(!argc) ! return; ! i = (int)atom_getintarg(0, argc, argv); ! first = x->x_first_element; ! last = x->x_last_element; ! out = x->x_out; ! if((i >= first)&&(i <= last)) ! { ! out += i - first; ! if(argc >= 3) ! { ! if(IS_A_FLOAT(argv,1)) ! outlet_list(*out, &s_list, argc-1, argv+1); ! else if(IS_A_SYMBOL(argv,1)) ! outlet_anything(*out, atom_getsymbolarg(1, argc, argv), argc-2, argv+2); ! } ! else if(argc >= 2) ! { ! if(IS_A_FLOAT(argv,1)) ! outlet_float(*out, (float)atom_getfloatarg(1, argc, argv)); ! else if(IS_A_SYMBOL(argv,1)) ! outlet_anything(*out, atom_getsymbolarg(1, argc, argv), 0, argv+2); ! } ! else ! outlet_bang(*out); ! } ! else ! { ! out += last - first + 1; ! outlet_list(*out, &s_list, argc, argv); ! } ! } ! ! static void iem_i_route_free(t_iem_i_route *x) ! { ! freebytes(x->x_out, (x->x_last_element-x->x_first_element+2) * sizeof(t_outlet *)); ! } ! ! static void *iem_i_route_new(t_symbol *s, int argc, t_atom *argv) ! { ! int n, i; ! t_outlet **out; ! t_iem_i_route *x = (t_iem_i_route *)pd_new(iem_i_route_class); ! ! if((argc >= 2)&&IS_A_FLOAT(argv,0)&&IS_A_FLOAT(argv,1)) ! { ! x->x_first_element = (int)atom_getintarg(0, argc, argv); ! x->x_last_element = (int)atom_getintarg(1, argc, argv); ! if((argc >= 3)&&IS_A_FLOAT(argv,2)) ! { ! i = (int)atom_getintarg(2, argc, argv); ! x->x_first_element += i; ! x->x_last_element += i; ! } ! x->x_out = (t_outlet **)getbytes((x->x_last_element-x->x_first_element+2) * sizeof(t_outlet *)); ! n = x->x_last_element - x->x_first_element + 2; ! for(i=0, out=x->x_out; i<n; i++, out++) ! *out = outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! else ! { ! post("iem_i_route-ERROR: needs 3 floats!!"); ! return(0); ! } ! } ! ! void iem_i_route_setup(void) ! { ! iem_i_route_class = class_new(gensym("iem_i_route"), (t_newmethod)iem_i_route_new, ! (t_method)iem_i_route_free, sizeof(t_iem_i_route), 0, A_GIMME, 0); ! class_addcreator((t_newmethod)iem_i_route_new, gensym("iiroute"), A_GIMME, 0); ! class_addlist(iem_i_route_class, iem_i_route_list); ! class_sethelpsymbol(iem_i_route_class, gensym("iemhelp/help-iem_i_route")); ! }
Index: prepend_ascii.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/prepend_ascii.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** prepend_ascii.c 18 May 2004 21:33:32 -0000 1.1.1.1 --- prepend_ascii.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,127 **** ! /* Copyright (c) 1997-2003 Miller Puckette. ! * For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ------------------------ prepend_ascii ---------------------------- */ ! static t_class *prepend_ascii_class; ! ! typedef struct _prepend_ascii ! { ! t_object x_obj; ! t_atom *x_at; ! int x_size; ! int x_ac; ! t_symbol *x_sym; ! } t_prepend_ascii; ! ! static void prepend_ascii_atcopy(t_atom *src, t_atom *dst, int n) ! { ! while(n--) ! *dst++ = *src++; ! } ! ! static void prepend_ascii_bang(t_prepend_ascii *x) ! { ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac, x->x_at); ! } ! ! static void prepend_ascii_float(t_prepend_ascii *x, t_float f) ! { ! SETFLOAT(x->x_at+x->x_ac, f); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac+1, x->x_at); ! } ! ! static void prepend_ascii_symbol(t_prepend_ascii *x, t_symbol *s) ! { ! SETSYMBOL(x->x_at+x->x_ac, s); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac+1, x->x_at); ! } ! ! static void prepend_ascii_pointer(t_prepend_ascii *x, t_gpointer *gp) ! { ! SETPOINTER(x->x_at+x->x_ac, gp); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac+1, x->x_at); ! } ! ! static void prepend_ascii_list(t_prepend_ascii *x, t_symbol *s, int ac, t_atom *av) ! { ! if((ac+x->x_ac) > x->x_size) ! { ! x->x_at = (t_atom *)resizebytes(x->x_at, x->x_size*sizeof(t_atom), (ac+x->x_ac)*sizeof(t_atom)); ! x->x_size = (ac+x->x_ac); ! } ! prepend_ascii_atcopy(av, x->x_at+x->x_ac, ac); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, ac+x->x_ac, x->x_at); ! } ! ! static void prepend_ascii_anything(t_prepend_ascii *x, t_symbol *s, int ac, t_atom *av) ! { ! if((ac+x->x_ac+1) > x->x_size) ! { ! x->x_at = (t_atom *)resizebytes(x->x_at, x->x_size*sizeof(t_atom), (ac+x->x_ac+1)*sizeof(t_atom)); ! x->x_size = (ac+x->x_ac+1); ! } ! SETSYMBOL(x->x_at+x->x_ac, s); ! prepend_ascii_atcopy(av, x->x_at+x->x_ac+1, ac); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, ac+x->x_ac+1, x->x_at); ! } ! ! static void prepend_ascii_free(t_prepend_ascii *x) ! { ! if(x->x_at) ! freebytes(x->x_at, x->x_size * sizeof(t_atom)); ! } ! ! static void *prepend_ascii_new(t_symbol *s, int ac, t_atom *av) ! { ! if((ac <= 0) || (!IS_A_FLOAT(av,0))) ! { ! post("ERROR: prepend_ascii need a float between 1 and 255 as 1. arg. !!!"); ! return(0); ! } ! else ! { ! t_prepend_ascii *x = (t_prepend_ascii *)pd_new(prepend_ascii_class); ! char str[2]; ! int i; ! ! x->x_size = 10 + ac; ! x->x_at = (t_atom *)getbytes(x->x_size * sizeof(t_atom)); ! str[0] = (char)((int)(atom_getfloatarg(0,ac,av))&0xff); ! str[1] = 0; ! x->x_sym = gensym(str); ! x->x_ac = ac - 1; ! for(i=1; i<ac; i++) ! x->x_at[i-1] = av[i]; ! outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! } ! ! void prepend_ascii_setup(void) ! { ! prepend_ascii_class = class_new(gensym("prepend_ascii"), (t_newmethod)prepend_ascii_new, ! (t_method)prepend_ascii_free, sizeof(t_prepend_ascii), 0, A_GIMME, 0); ! class_addbang(prepend_ascii_class, (t_method)prepend_ascii_bang); ! class_addfloat(prepend_ascii_class, (t_method)prepend_ascii_float); ! class_addsymbol(prepend_ascii_class, prepend_ascii_symbol); ! class_addpointer(prepend_ascii_class, prepend_ascii_pointer); ! class_addlist(prepend_ascii_class, prepend_ascii_list); ! class_addanything(prepend_ascii_class, prepend_ascii_anything); ! class_sethelpsymbol(prepend_ascii_class, gensym("iemhelp/help-prepend_ascii")); ! } ! --- 1,129 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ------------------------- prepend_ascii ---------------------------- */ ! /* -- this object prepends to any incoming message a selector symbol -- */ ! /* --- containing the n-th character of the ASCII-table. "n" is the --- */ ! /* ----------------- first initial argument (integer) ----------------- */ ! ! static t_class *prepend_ascii_class; ! ! typedef struct _prepend_ascii ! { ! t_object x_obj; ! t_atom *x_at; ! int x_size; ! int x_ac; ! t_symbol *x_sym; ! } t_prepend_ascii; ! ! static void prepend_ascii_atcopy(t_atom *src, t_atom *dst, int n) ! { ! while(n--) ! *dst++ = *src++; ! } ! ! static void prepend_ascii_bang(t_prepend_ascii *x) ! { ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac, x->x_at); ! } ! ! static void prepend_ascii_float(t_prepend_ascii *x, t_float f) ! { ! SETFLOAT(x->x_at+x->x_ac, f); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac+1, x->x_at); ! } ! ! static void prepend_ascii_symbol(t_prepend_ascii *x, t_symbol *s) ! { ! SETSYMBOL(x->x_at+x->x_ac, s); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac+1, x->x_at); ! } ! ! static void prepend_ascii_pointer(t_prepend_ascii *x, t_gpointer *gp) ! { ! SETPOINTER(x->x_at+x->x_ac, gp); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac+1, x->x_at); ! } ! ! static void prepend_ascii_list(t_prepend_ascii *x, t_symbol *s, int ac, t_atom *av) ! { ! if((ac+x->x_ac) > x->x_size) ! { ! x->x_at = (t_atom *)resizebytes(x->x_at, x->x_size*sizeof(t_atom), (ac+x->x_ac)*sizeof(t_atom)); ! x->x_size = (ac+x->x_ac); ! } ! prepend_ascii_atcopy(av, x->x_at+x->x_ac, ac); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, ac+x->x_ac, x->x_at); ! } ! ! static void prepend_ascii_anything(t_prepend_ascii *x, t_symbol *s, int ac, t_atom *av) ! { ! if((ac+x->x_ac+1) > x->x_size) ! { ! x->x_at = (t_atom *)resizebytes(x->x_at, x->x_size*sizeof(t_atom), (ac+x->x_ac+1)*sizeof(t_atom)); ! x->x_size = (ac+x->x_ac+1); ! } ! SETSYMBOL(x->x_at+x->x_ac, s); ! prepend_ascii_atcopy(av, x->x_at+x->x_ac+1, ac); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, ac+x->x_ac+1, x->x_at); ! } ! ! static void prepend_ascii_free(t_prepend_ascii *x) ! { ! if(x->x_at) ! freebytes(x->x_at, x->x_size * sizeof(t_atom)); ! } ! ! static void *prepend_ascii_new(t_symbol *s, int ac, t_atom *av) ! { ! if((ac <= 0) || (!IS_A_FLOAT(av,0))) ! { ! post("ERROR: prepend_ascii need a float between 1 and 255 as 1. arg. !!!"); ! return(0); ! } ! else ! { ! t_prepend_ascii *x = (t_prepend_ascii *)pd_new(prepend_ascii_class); ! char str[2]; ! int i; ! ! x->x_size = 10 + ac; ! x->x_at = (t_atom *)getbytes(x->x_size * sizeof(t_atom)); ! str[0] = (char)((int)(atom_getfloatarg(0,ac,av))&0xff); ! str[1] = 0; ! x->x_sym = gensym(str); ! x->x_ac = ac - 1; ! for(i=1; i<ac; i++) ! x->x_at[i-1] = av[i]; ! outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! } ! ! void prepend_ascii_setup(void) ! { ! prepend_ascii_class = class_new(gensym("prepend_ascii"), (t_newmethod)prepend_ascii_new, ! (t_method)prepend_ascii_free, sizeof(t_prepend_ascii), 0, A_GIMME, 0); ! class_addbang(prepend_ascii_class, (t_method)prepend_ascii_bang); ! class_addfloat(prepend_ascii_class, (t_method)prepend_ascii_float); ! class_addsymbol(prepend_ascii_class, prepend_ascii_symbol); ! class_addpointer(prepend_ascii_class, prepend_ascii_pointer); ! class_addlist(prepend_ascii_class, prepend_ascii_list); ! class_addanything(prepend_ascii_class, prepend_ascii_anything); ! class_sethelpsymbol(prepend_ascii_class, gensym("iemhelp/help-prepend_ascii")); ! }
Index: round_zero.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/round_zero.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** round_zero.c 18 May 2004 21:33:33 -0000 1.1.1.1 --- round_zero.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,67 **** ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <math.h> ! #include <stdio.h> ! #include <string.h> ! ! ! /* ------------------------ round_zero ---------------------------- */ ! static t_class *round_zero_class; ! ! typedef struct _round_zero ! { ! t_object x_obj; ! t_float x_bound; ! } t_round_zero; ! ! static void round_zero_anything(t_round_zero *x, t_symbol *s, int ac, t_atom *av) ! { ! int i; ! t_float f, bound=x->x_bound; ! ! for(i=0; i<ac; i++) ! { ! if(IS_A_FLOAT(av, i)) ! { ! f = atom_getfloatarg(i, ac, av); ! if((f <= bound)&&(f >= -bound)) ! { ! f = 0.0f; ! SETFLOAT(av+i, f); ! } ! } ! } ! outlet_anything(x->x_obj.ob_outlet, s, ac, av); ! } ! ! static void *round_zero_new(t_floatarg bound) ! { ! t_round_zero *x = (t_round_zero *)pd_new(round_zero_class); ! ! if(bound < 0.0f) ! x->x_bound = -bound; ! else ! x->x_bound = bound; ! outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! ! void round_zero_setup(void) ! { ! round_zero_class = class_new(gensym("round_zero"), (t_newmethod)round_zero_new, ! 0, sizeof(t_round_zero), 0, A_DEFFLOAT, 0); ! class_addanything(round_zero_class, round_zero_anything); ! class_sethelpsymbol(round_zero_class, gensym("iemhelp/help-round_zero")); ! } ! --- 1,68 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdio.h> ! #include <string.h> ! ! ! /* ------------------------ round_zero ---------------------------- */ ! /* ------ small float numbers of an anything message within ------- */ ! /* ---- plus minus initial argument will be truncated to zero ----- */ ! ! static t_class *round_zero_class; ! ! typedef struct _round_zero ! { ! t_object x_obj; ! t_float x_bound; ! } t_round_zero; ! ! static void round_zero_anything(t_round_zero *x, t_symbol *s, int ac, t_atom *av) ! { ! int i; ! t_float f, bound=x->x_bound; ! ! for(i=0; i<ac; i++) ! { ! if(IS_A_FLOAT(av, i)) ! { ! f = atom_getfloatarg(i, ac, av); ! if((f <= bound)&&(f >= -bound)) ! { ! f = 0.0f; ! SETFLOAT(av+i, f); ! } ! } ! } ! outlet_anything(x->x_obj.ob_outlet, s, ac, av); ! } ! ! static void *round_zero_new(t_floatarg bound) ! { ! t_round_zero *x = (t_round_zero *)pd_new(round_zero_class); ! ! if(bound < 0.0f) ! x->x_bound = -bound; ! else ! x->x_bound = bound; ! outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! ! void round_zero_setup(void) ! { ! round_zero_class = class_new(gensym("round_zero"), (t_newmethod)round_zero_new, ! 0, sizeof(t_round_zero), 0, A_DEFFLOAT, 0); ! class_addanything(round_zero_class, round_zero_anything); ! class_sethelpsymbol(round_zero_class, gensym("iemhelp/help-round_zero")); ! }
Index: iem_send_kernel.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/iem_send_kernel.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** iem_send_kernel.c 18 May 2004 21:33:32 -0000 1.1.1.1 --- iem_send_kernel.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,140 **** ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "g_canvas.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! EXTERN void canvas_getargs(int *argcp, t_atom **argvp); ! ! /* -------------------- iem_send_kernel ------------------------------ */ ! ! static t_class *iem_send_kernel_class; ! ! typedef struct _iem_send_kernel ! { ! t_object x_obj; ! t_symbol *x_sym; ! } t_iem_send_kernel; ! ! static void iem_send_kernel_set_name(t_iem_send_kernel *x, t_symbol *s, int argc, t_atom *argv) ! { ! if((argc > 0)&&((IS_A_SYMBOL(argv,0))||(IS_A_FLOAT(argv,0)))) ! { ! if(IS_A_SYMBOL(argv,0)) ! x->x_sym = atom_getsymbol(argv); ! else if(IS_A_FLOAT(argv,0)) ! { ! char str[100]; ! ! sprintf(str, "%g", atom_getfloat(argv)); ! x->x_sym = gensym(str); ! } ! } ! } ! ! static void iem_send_kernel_clear(t_iem_send_kernel *x) ! { ! x->x_sym = 0; ! } ! ! static void iem_send_kernel_bang(t_iem_send_kernel *x) ! { ! if(x->x_sym->s_thing) ! pd_bang(x->x_sym->s_thing); ! } ! ! static void iem_send_kernel_float(t_iem_send_kernel *x, t_float f) ! { ! if(x->x_sym->s_thing) ! pd_float(x->x_sym->s_thing, f); ! } ! ! static void iem_send_kernel_symbol(t_iem_send_kernel *x, t_symbol *s) ! { ! if(x->x_sym->s_thing) ! pd_symbol(x->x_sym->s_thing, s); ! } ! ! static void iem_send_kernel_pointer(t_iem_send_kernel *x, t_gpointer *gp) ! { ! if(x->x_sym->s_thing) ! pd_pointer(x->x_sym->s_thing, gp); ! } ! ! static void iem_send_kernel_list(t_iem_send_kernel *x, t_symbol *s, int argc, t_atom *argv) ! { ! if(x->x_sym->s_thing) ! pd_list(x->x_sym->s_thing, s, argc, argv); ! } ! ! static void iem_send_kernel_anything(t_iem_send_kernel *x, t_symbol *s, int argc, t_atom *argv) ! { ! if(x->x_sym->s_thing) ! typedmess(x->x_sym->s_thing, s, argc, argv); ! } ! ! static void *iem_send_kernel_new(void) ! { ! t_iem_send_kernel *x = (t_iem_send_kernel *)pd_new(iem_send_kernel_class); ! t_glist *glist = (t_glist *)canvas_getcurrent(); ! t_canvas *canvas=glist_getcanvas(glist); ! int ac=0; ! t_atom *av; ! ! canvas_setcurrent(canvas); ! canvas_getargs(&ac, &av); ! canvas_unsetcurrent(canvas); ! ! if(ac > 0) ! { ! if(IS_A_SYMBOL(av,0)) ! { ! x->x_sym = atom_getsymbol(av); ! } ! else if(IS_A_FLOAT(av,0)) ! { ! char str[100]; ! ! sprintf(str, "%g", atom_getfloat(av)); ! x->x_sym = gensym(str); ! } ! else ! x->x_sym = 0; ! } ! else ! x->x_sym = 0; ! return (x); ! } ! ! void iem_send_kernel_setup(void) ! { ! char str[2]; ! ! str[1] = 0; ! iem_send_kernel_class = class_new(gensym("iem_send_kernel"), (t_newmethod)iem_send_kernel_new, 0, ! sizeof(t_iem_send_kernel), 0, 0); ! class_addcreator((t_newmethod)iem_send_kernel_new, gensym("s"), A_DEFSYM, 0); ! class_addbang(iem_send_kernel_class, iem_send_kernel_bang); ! class_addfloat(iem_send_kernel_class, iem_send_kernel_float); ! class_addsymbol(iem_send_kernel_class, iem_send_kernel_symbol); ! class_addpointer(iem_send_kernel_class, iem_send_kernel_pointer); ! class_addlist(iem_send_kernel_class, iem_send_kernel_list); ! class_addanything(iem_send_kernel_class, iem_send_kernel_anything); ! str[0] = 1;/*inlet-sym = "\0x01"*/ ! class_addmethod(iem_send_kernel_class, (t_method)iem_send_kernel_set_name, gensym(str), A_GIMME, 0); ! str[0] = 2;/*inlet-sym = "\0x02"*/ ! class_addmethod(iem_send_kernel_class, (t_method)iem_send_kernel_clear, gensym(str), 0); ! class_sethelpsymbol(iem_send_kernel_class, gensym("iemhelp/help-iem_send")); ! } --- 1,140 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2004 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "g_canvas.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! EXTERN void canvas_getargs(int *argcp, t_atom **argvp); ! ! /* -------------------- iem_send_kernel ------------------------------ */ ! ! static t_class *iem_send_kernel_class; ! ! typedef struct _iem_send_kernel ! { ! t_object x_obj; ! t_symbol *x_sym; ! } t_iem_send_kernel; ! ! static void iem_send_kernel_set_name(t_iem_send_kernel *x, t_symbol *s, int argc, t_atom *argv) ! { ! if((argc > 0)&&((IS_A_SYMBOL(argv,0))||(IS_A_FLOAT(argv,0)))) ! { ! if(IS_A_SYMBOL(argv,0)) ! x->x_sym = atom_getsymbol(argv); ! else if(IS_A_FLOAT(argv,0)) ! { ! char str[100]; ! ! sprintf(str, "%g", atom_getfloat(argv)); ! x->x_sym = gensym(str); ! } ! } ! } ! ! static void iem_send_kernel_clear(t_iem_send_kernel *x) ! { ! x->x_sym = 0; ! } ! ! static void iem_send_kernel_bang(t_iem_send_kernel *x) ! { ! if(x->x_sym->s_thing) ! pd_bang(x->x_sym->s_thing); ! } ! ! static void iem_send_kernel_float(t_iem_send_kernel *x, t_float f) ! { ! if(x->x_sym->s_thing) ! pd_float(x->x_sym->s_thing, f); ! } ! ! static void iem_send_kernel_symbol(t_iem_send_kernel *x, t_symbol *s) ! { ! if(x->x_sym->s_thing) ! pd_symbol(x->x_sym->s_thing, s); ! } ! ! static void iem_send_kernel_pointer(t_iem_send_kernel *x, t_gpointer *gp) ! { ! if(x->x_sym->s_thing) ! pd_pointer(x->x_sym->s_thing, gp); ! } ! ! static void iem_send_kernel_list(t_iem_send_kernel *x, t_symbol *s, int argc, t_atom *argv) ! { ! if(x->x_sym->s_thing) ! pd_list(x->x_sym->s_thing, s, argc, argv); ! } ! ! static void iem_send_kernel_anything(t_iem_send_kernel *x, t_symbol *s, int argc, t_atom *argv) ! { ! if(x->x_sym->s_thing) ! typedmess(x->x_sym->s_thing, s, argc, argv); ! } ! ! static void *iem_send_kernel_new(void) ! { ! t_iem_send_kernel *x = (t_iem_send_kernel *)pd_new(iem_send_kernel_class); ! t_glist *glist = (t_glist *)canvas_getcurrent(); ! t_canvas *canvas=glist_getcanvas(glist); ! int ac=0; ! t_atom *av; ! ! canvas_setcurrent(canvas); ! canvas_getargs(&ac, &av); ! canvas_unsetcurrent(canvas); ! ! if(ac > 0) ! { ! if(IS_A_SYMBOL(av,0)) ! { ! x->x_sym = atom_getsymbol(av); ! } ! else if(IS_A_FLOAT(av,0)) ! { ! char str[100]; ! ! sprintf(str, "%g", atom_getfloat(av)); ! x->x_sym = gensym(str); ! } ! else ! x->x_sym = 0; ! } ! else ! x->x_sym = 0; ! return (x); ! } ! ! void iem_send_kernel_setup(void) ! { ! char str[2]; ! ! str[1] = 0; ! iem_send_kernel_class = class_new(gensym("iem_send_kernel"), (t_newmethod)iem_send_kernel_new, 0, ! sizeof(t_iem_send_kernel), 0, 0); ! class_addcreator((t_newmethod)iem_send_kernel_new, gensym("s"), A_DEFSYM, 0); ! class_addbang(iem_send_kernel_class, iem_send_kernel_bang); ! class_addfloat(iem_send_kernel_class, iem_send_kernel_float); ! class_addsymbol(iem_send_kernel_class, iem_send_kernel_symbol); ! class_addpointer(iem_send_kernel_class, iem_send_kernel_pointer); ! class_addlist(iem_send_kernel_class, iem_send_kernel_list); ! class_addanything(iem_send_kernel_class, iem_send_kernel_anything); ! str[0] = 1;/*inlet-sym = "\0x01"*/ ! class_addmethod(iem_send_kernel_class, (t_method)iem_send_kernel_set_name, gensym(str), A_GIMME, 0); ! str[0] = 2;/*inlet-sym = "\0x02"*/ ! class_addmethod(iem_send_kernel_class, (t_method)iem_send_kernel_clear, gensym(str), 0); ! class_sethelpsymbol(iem_send_kernel_class, gensym("iemhelp/help-iem_send")); ! }
Index: add2_comma.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/add2_comma.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** add2_comma.c 18 May 2004 21:33:31 -0000 1.1.1.1 --- add2_comma.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,123 **** ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ------------------------ add2_comma ---------------------------- */ ! static t_class *add2_comma_class; ! ! typedef struct _add2_comma ! { ! t_object x_obj; ! int x_size; ! t_atom *x_at; ! t_symbol *x_sym; ! t_atomtype x_type; ! } t_add2_comma; ! ! static void add2_comma_bang(t_add2_comma *x) ! { ! SETCOMMA(x->x_at); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, 1, x->x_at); ! } ! ! static void add2_comma_float(t_add2_comma *x, t_float f) ! { ! SETCOMMA(x->x_at); ! SETFLOAT(x->x_at+1, f); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, 2, x->x_at); ! } ! ! static void add2_comma_symbol(t_add2_comma *x, t_symbol *s) ! { ! SETCOMMA(x->x_at); ! SETSYMBOL(x->x_at+1, s); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, 2, x->x_at); ! } ! ! /*static void add2_comma_pointer(t_add2_comma *x, t_gpointer *gp) ! { ! if(!x->x_at) ! { ! x->x_n = 1; ! x->x_at = (t_atom *)getbytes(sizeof(t_atom)); ! } ! x->x_ac = 1; ! SETPOINTER(x->x_at, gp); ! x->x_sym = &s_pointer; ! outlet_pointer(x->x_obj.ob_outlet, gp); ! }*/ ! ! static void add2_comma_list(t_add2_comma *x, t_symbol *s, int ac, t_atom *av) ! { ! int i; ! ! if((ac+1) > x->x_size) ! { ! x->x_at = (t_atom *)resizebytes(x->x_at, x->x_size*sizeof(t_atom), (ac+2)*sizeof(t_atom)); ! x->x_size = ac+2; ! } ! SETCOMMA(x->x_at); ! for(i=1; i<=ac; i++) ! x->x_at[i] = av[i-1]; ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, ac+1, x->x_at); ! } ! ! static void add2_comma_anything(t_add2_comma *x, t_symbol *s, int ac, t_atom *av) ! { ! int i; ! ! if((ac+2) > x->x_size) ! { ! x->x_at = (t_atom *)resizebytes(x->x_at, x->x_size*sizeof(t_atom), (ac+3)*sizeof(t_atom)); ! x->x_size = ac+3; ! } ! SETCOMMA(x->x_at); ! SETSYMBOL(x->x_at+1, s); ! for(i=1; i<=ac; i++) ! x->x_at[i+1] = av[i-1]; ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, ac+2, x->x_at); ! } ! ! static void add2_comma_free(t_add2_comma *x) ! { ! if(x->x_at) ! freebytes(x->x_at, x->x_size * sizeof(t_atom)); ! } ! ! static void *add2_comma_new(void) ! { ! t_add2_comma *x = (t_add2_comma *)pd_new(add2_comma_class); ! ! x->x_size = 10; ! x->x_at = (t_atom *)getbytes(x->x_size * sizeof(t_atom)); ! x->x_sym = gensym("add2"); ! outlet_new(&x->x_obj, &s_list); ! return(x); ! } ! ! void add2_comma_setup(void) ! { ! add2_comma_class = class_new(gensym("add2_comma"), (t_newmethod)add2_comma_new, ! (t_method)add2_comma_free, sizeof(t_add2_comma), 0, 0); ! class_addbang(add2_comma_class, (t_method)add2_comma_bang); ! class_addanything(add2_comma_class, add2_comma_anything); ! class_addlist(add2_comma_class, add2_comma_list); ! /*class_addpointer(add2_comma_class, add2_comma_pointer);*/ ! class_addfloat(add2_comma_class, (t_method)add2_comma_float); ! class_addsymbol(add2_comma_class, add2_comma_symbol); ! class_sethelpsymbol(add2_comma_class, gensym("iemhelp/help-add2_comma")); ! } ! --- 1,119 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* --------------------------------- add2_comma ----------------------------------- */ ! /* -- a special add2-message for messageboxes, which append a comma to a message -- */ ! ! static t_class *add2_comma_class; ! ! typedef struct _add2_comma ! { ! t_object x_obj; ! int x_size; ! t_atom *x_at; ! t_symbol *x_sym; ! t_atomtype x_type; ! } t_add2_comma; ! ! static void add2_comma_bang(t_add2_comma *x) ! { ! SETCOMMA(x->x_at); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, 1, x->x_at); ! } ! ! static void add2_comma_float(t_add2_comma *x, t_float f) ! { ! SETCOMMA(x->x_at); ! SETFLOAT(x->x_at+1, f); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, 2, x->x_at); ! } ! ! static void add2_comma_symbol(t_add2_comma *x, t_symbol *s) ! { ! SETCOMMA(x->x_at); ! SETSYMBOL(x->x_at+1, s); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, 2, x->x_at); ! } ! ! /*static void add2_comma_pointer(t_add2_comma *x, t_gpointer *gp) ! { ! if(!x->x_at) ! { ! x->x_n = 1; ! x->x_at = (t_atom *)getbytes(sizeof(t_atom)); ! } ! x->x_ac = 1; ! SETPOINTER(x->x_at, gp); ! x->x_sym = &s_pointer; ! outlet_pointer(x->x_obj.ob_outlet, gp); ! }*/ ! ! static void add2_comma_list(t_add2_comma *x, t_symbol *s, int ac, t_atom *av) ! { ! int i; ! ! if((ac+1) > x->x_size) ! { ! x->x_at = (t_atom *)resizebytes(x->x_at, x->x_size*sizeof(t_atom), (ac+2)*sizeof(t_atom)); ! x->x_size = ac+2; ! } ! SETCOMMA(x->x_at); ! for(i=1; i<=ac; i++) ! x->x_at[i] = av[i-1]; ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, ac+1, x->x_at); ! } ! ! static void add2_comma_anything(t_add2_comma *x, t_symbol *s, int ac, t_atom *av) ! { ! int i; ! ! if((ac+2) > x->x_size) ! { ! x->x_at = (t_atom *)resizebytes(x->x_at, x->x_size*sizeof(t_atom), (ac+3)*sizeof(t_atom)); ! x->x_size = ac+3; ! } ! SETCOMMA(x->x_at); ! SETSYMBOL(x->x_at+1, s); ! for(i=1; i<=ac; i++) ! x->x_at[i+1] = av[i-1]; ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, ac+2, x->x_at); ! } ! ! static void add2_comma_free(t_add2_comma *x) ! { ! if(x->x_at) ! freebytes(x->x_at, x->x_size * sizeof(t_atom)); ! } ! ! static void *add2_comma_new(void) ! { ! t_add2_comma *x = (t_add2_comma *)pd_new(add2_comma_class); ! ! x->x_size = 10; ! x->x_at = (t_atom *)getbytes(x->x_size * sizeof(t_atom)); ! x->x_sym = gensym("add2"); ! outlet_new(&x->x_obj, &s_list); ! return(x); ! } ! ! void add2_comma_setup(void) ! { ! add2_comma_class = class_new(gensym("add2_comma"), (t_newmethod)add2_comma_new, ! (t_method)add2_comma_free, sizeof(t_add2_comma), 0, 0); ! class_addbang(add2_comma_class, (t_method)add2_comma_bang); ! class_addanything(add2_comma_class, add2_comma_anything); ! class_addlist(add2_comma_class, add2_comma_list); ! /*class_addpointer(add2_comma_class, add2_comma_pointer);*/ ! class_addfloat(add2_comma_class, (t_method)add2_comma_float); ! class_addsymbol(add2_comma_class, add2_comma_symbol); ! class_sethelpsymbol(add2_comma_class, gensym("iemhelp/help-add2_comma")); ! }
Index: wrap.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/wrap.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** wrap.c 18 May 2004 21:33:33 -0000 1.1.1.1 --- wrap.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,69 **** ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ---- wrap - float=int or list of float=symbol concaternat to int=float ----- */ ! ! ! ! typedef struct _wrap ! { ! t_object x_obj; ! float x_f; ! } t_wrap; ! ! static t_class *wrap_class; ! ! static void wrap_bang(t_wrap *x) ! { ! outlet_float(x->x_obj.ob_outlet, x->x_f); ! } ! ! static void wrap_float(t_wrap *x, t_float f) ! { ! int i=(int)f; ! ! if(f > 0.0) ! x->x_f = f - (float)i; ! else ! x->x_f = f - (float)(i - 1); ! wrap_bang(x); ! } ! ! static void wrap_list(t_wrap *x, t_symbol *s, int argc, t_atom *argv) ! { ! if((argc > 0) && (IS_A_FLOAT(argv, 0))) ! wrap_float(x, atom_getfloat(argv)); ! } ! ! static void *wrap_new(void) ! { ! t_wrap *x = (t_wrap *)pd_new(wrap_class); ! ! outlet_new(&x->x_obj, &s_float); ! x->x_f = 0.0; ! return (x); ! } ! ! void wrap_setup(void) ! { ! wrap_class = class_new(gensym("wrap"), (t_newmethod)wrap_new, 0, ! sizeof(t_wrap), 0, 0); ! class_addbang(wrap_class, (t_method)wrap_bang); ! class_addfloat(wrap_class, (t_method)wrap_float); ! class_addlist(wrap_class, (t_method)wrap_list); ! class_sethelpsymbol(wrap_class, gensym("iemhelp/help-wrap")); ! } --- 1,67 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! ! /* ------------------------ wrap ----------------- */ ! /* -- leave the fractal part of a float message -- */ ! ! typedef struct _wrap ! { ! t_object x_obj; ! float x_f; ! } t_wrap; ! ! static t_class *wrap_class; ! ! static void wrap_bang(t_wrap *x) ! { ! outlet_float(x->x_obj.ob_outlet, x->x_f); ! } ! ! static void wrap_float(t_wrap *x, t_float f) ! { ! int i=(int)f; ! ! if(f > 0.0) ! x->x_f = f - (float)i; ! else ! x->x_f = f - (float)(i - 1); ! wrap_bang(x); ! } ! ! static void wrap_list(t_wrap *x, t_symbol *s, int argc, t_atom *argv) ! { ! if((argc > 0) && (IS_A_FLOAT(argv, 0))) ! wrap_float(x, atom_getfloat(argv)); ! } ! ! static void *wrap_new(void) ! { ! t_wrap *x = (t_wrap *)pd_new(wrap_class); ! ! outlet_new(&x->x_obj, &s_float); ! x->x_f = 0.0; ! return (x); ! } ! ! void wrap_setup(void) ! { ! wrap_class = class_new(gensym("wrap"), (t_newmethod)wrap_new, 0, ! sizeof(t_wrap), 0, 0); ! class_addbang(wrap_class, (t_method)wrap_bang); ! class_addfloat(wrap_class, (t_method)wrap_float); ! class_addlist(wrap_class, (t_method)wrap_list); ! class_sethelpsymbol(wrap_class, gensym("iemhelp/help-wrap")); ! }
Index: sigiem_blocksize.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/sigiem_blocksize.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** sigiem_blocksize.c 18 May 2004 21:33:33 -0000 1.1.1.1 --- sigiem_blocksize.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,61 **** ! /* Copyright (c) 1997-2003 Miller Puckette. ! * For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! ! /* ------------------------ iem_blocksize~ ----------------------------- */ ! ! static t_class *sigiem_blocksize_class; ! ! typedef struct _sigiem_blocksize ! { ! t_object x_obj; ! t_float x_blocksize; ! t_clock *x_clock; ! t_float x_f; ! } t_sigiem_blocksize; ! ! static void sigiem_blocksize_out(t_sigiem_blocksize *x) ! { ! outlet_float(x->x_obj.ob_outlet, x->x_blocksize); ! } ! ! static void sigiem_blocksize_free(t_sigiem_blocksize *x) ! { ! clock_free(x->x_clock); ! } ! ! static void *sigiem_blocksize_new(t_symbol *s) ! { ! t_sigiem_blocksize *x = (t_sigiem_blocksize *)pd_new(sigiem_blocksize_class); ! x->x_clock = clock_new(x, (t_method)sigiem_blocksize_out); ! outlet_new(&x->x_obj, &s_float); ! x->x_blocksize = 64.0f; ! x->x_f = 0.0f; ! return (x); ! } ! ! static void sigiem_blocksize_dsp(t_sigiem_blocksize *x, t_signal **sp) ! { ! x->x_blocksize = (t_float)(sp[0]->s_n); ! clock_delay(x->x_clock, 0.0f); ! } ! ! void sigiem_blocksize_setup(void) ! { ! sigiem_blocksize_class = class_new(gensym("iem_blocksize~"), (t_newmethod)sigiem_blocksize_new, ! (t_method)sigiem_blocksize_free, sizeof(t_sigiem_blocksize), 0, 0); ! CLASS_MAINSIGNALIN(sigiem_blocksize_class, t_sigiem_blocksize, x_f); ! class_addmethod(sigiem_blocksize_class, (t_method)sigiem_blocksize_dsp, gensym("dsp"), 0); ! } ! --- 1,60 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! ! /* ------------------- iem_blocksize~ -------------------- */ ! /* -- outputs the current signal-blocksize of a window --- */ ! ! static t_class *sigiem_blocksize_class; ! ! typedef struct _sigiem_blocksize ! { ! t_object x_obj; ! t_float x_blocksize; ! t_clock *x_clock; ! t_float x_f; ! } t_sigiem_blocksize; ! ! static void sigiem_blocksize_out(t_sigiem_blocksize *x) ! { ! outlet_float(x->x_obj.ob_outlet, x->x_blocksize); ! } ! ! static void sigiem_blocksize_free(t_sigiem_blocksize *x) ! { ! clock_free(x->x_clock); ! } ! ! static void *sigiem_blocksize_new(t_symbol *s) ! { ! t_sigiem_blocksize *x = (t_sigiem_blocksize *)pd_new(sigiem_blocksize_class); ! x->x_clock = clock_new(x, (t_method)sigiem_blocksize_out); ! outlet_new(&x->x_obj, &s_float); ! x->x_blocksize = 64.0f; ! x->x_f = 0.0f; ! return (x); ! } ! ! static void sigiem_blocksize_dsp(t_sigiem_blocksize *x, t_signal **sp) ! { ! x->x_blocksize = (t_float)(sp[0]->s_n); ! clock_delay(x->x_clock, 0.0f); ! } ! ! void sigiem_blocksize_setup(void) ! { ! sigiem_blocksize_class = class_new(gensym("iem_blocksize~"), (t_newmethod)sigiem_blocksize_new, ! (t_method)sigiem_blocksize_free, sizeof(t_sigiem_blocksize), 0, 0); ! CLASS_MAINSIGNALIN(sigiem_blocksize_class, t_sigiem_blocksize, x_f); ! class_addmethod(sigiem_blocksize_class, (t_method)sigiem_blocksize_dsp, gensym("dsp"), 0); ! }
Index: iem_prepend_kernel.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/iem_prepend_kernel.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** iem_prepend_kernel.c 18 May 2004 21:33:31 -0000 1.1.1.1 --- iem_prepend_kernel.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,259 **** ! /* Copyright (c) 1997-2003 Miller Puckette. ! * For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "g_canvas.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! EXTERN void canvas_getargs(int *argcp, t_atom **argvp); ! ! ! /* ------------------------ iem_prepend_kernel ---------------------------- */ ! static t_class *iem_prepend_kernel_class; ! ! typedef struct _iem_prepend_kernel ! { ! t_object x_obj; ! int x_inlet_select; ! int x_size; ! int x_ac; ! t_atom *x_at; ! t_symbol *x_sym; ! t_atomtype x_type; ! } t_iem_prepend_kernel; ! ! static void iem_prepend_kernel_atcopy(t_atom *src, t_atom *dst, int n) ! { ! while(n--) ! *dst++ = *src++; ! } ! ! static void iem_prepend_kernel_inlet_select(t_iem_prepend_kernel *x, t_floatarg fin_sel_01) ! { ! x->x_inlet_select = (int)fin_sel_01; ! } ! ! static void iem_prepend_kernel_bang(t_iem_prepend_kernel *x) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! x->x_ac = 0; ! x->x_type = A_NULL; ! x->x_sym = &s_bang; ! } ! else /* if 1st inlet */ ! { ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac, x->x_at); ! } ! } ! ! static void iem_prepend_kernel_float(t_iem_prepend_kernel *x, t_float f) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! x->x_ac = 1; ! x->x_type = A_FLOAT; ! SETFLOAT(x->x_at, f); ! x->x_sym = &s_list; ! } ! else /* if 1st inlet */ ! { ! if(x->x_type == A_NULL) ! { ! outlet_float(x->x_obj.ob_outlet, f); ! } ! else ! { ! SETFLOAT(x->x_at+x->x_ac, f); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac+1, x->x_at); ! } ! } ! } ! ! static void iem_prepend_kernel_symbol(t_iem_prepend_kernel *x, t_symbol *s) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! x->x_ac = 1; ! x->x_type = A_SYMBOL; ! SETSYMBOL(x->x_at, s); ! x->x_sym = &s_list; ! } ! else /* if 1st inlet */ ! { ! if(x->x_type == A_NULL) ! { ! outlet_symbol(x->x_obj.ob_outlet, s); ! } ! else ! { ! SETSYMBOL(x->x_at+x->x_ac, s); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac+1, x->x_at); ! } ! } ! } ! ! static void iem_prepend_kernel_pointer(t_iem_prepend_kernel *x, t_gpointer *gp) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! x->x_ac = 1; ! x->x_type = A_POINTER; ! SETPOINTER(x->x_at, gp); ! x->x_sym = &s_list; ! } ! else /* if 1st inlet */ ! { ! if(x->x_type == A_NULL) ! { ! outlet_pointer(x->x_obj.ob_outlet, gp); ! } ! else ! { ! SETPOINTER(x->x_at+x->x_ac, gp); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac+1, x->x_at); ! } ! } ! } ! ! static void iem_prepend_kernel_list(t_iem_prepend_kernel *x, t_symbol *s, int ac, t_atom *av) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! if((ac+10) > x->x_size) ! { ! x->x_at = (t_atom *)resizebytes(x->x_at, x->x_size*sizeof(t_atom), 2*(ac+10)*sizeof(t_atom)); ! x->x_size = 2*(ac+10); ! } ! x->x_ac = ac; ! x->x_type = A_GIMME; ! x->x_sym = &s_list; ! iem_prepend_kernel_atcopy(av, x->x_at, ac); ! } ! else /* if 1st inlet */ ! { ! if((ac+x->x_ac+1) > x->x_size) ! { ! x->x_at = (t_atom *)resizebytes(x->x_at, x->x_size*sizeof(t_atom), 2*(ac+x->x_ac+1)*sizeof(t_atom)); ! x->x_size = 2*(ac+x->x_ac+1); ! } ! if(x->x_type == A_NULL) ! { ! outlet_anything(x->x_obj.ob_outlet, &s_list, ac, av); ! } ! else ! { ! iem_prepend_kernel_atcopy(av, x->x_at + x->x_ac, ac); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac+ac, x->x_at); ! } ! } ! } ! ! static void iem_prepend_kernel_anything(t_iem_prepend_kernel *x, t_symbol *s, int ac, t_atom *av) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! if((ac+10) > x->x_size) ! { ! x->x_at = (t_atom *)resizebytes(x->x_at, x->x_size*sizeof(t_atom), 2*(ac+10)*sizeof(t_atom)); ! x->x_size = 2*(ac+10); ! } ! x->x_ac = ac; ! x->x_type = A_COMMA; ! x->x_sym = s; ! iem_prepend_kernel_atcopy(av, x->x_at, ac); ! } ! else /* if 1st inlet */ ! { ! if((ac+x->x_ac+1) > x->x_size) ! { ! x->x_at = (t_atom *)resizebytes(x->x_at, x->x_size*sizeof(t_atom), 2*(ac+x->x_ac+1)*sizeof(t_atom)); ! x->x_size = 2*(ac+x->x_ac+1); ! } ! if(x->x_type == A_NULL) ! { ! outlet_anything(x->x_obj.ob_outlet, s, ac, av); ! } ! else ! { ! SETSYMBOL(x->x_at + x->x_ac, s); ! iem_prepend_kernel_atcopy(av, x->x_at+x->x_ac+1, ac); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac+ac+1, x->x_at); ! } ! } ! } ! ! static void iem_prepend_kernel_free(t_iem_prepend_kernel *x) ! { ! if(x->x_at) ! freebytes(x->x_at, x->x_size * sizeof(t_atom)); ! } ! ! static void *iem_prepend_kernel_new(void) ! { ! t_iem_prepend_kernel *x = (t_iem_prepend_kernel *)pd_new(iem_prepend_kernel_class); ! t_glist *glist = (t_glist *)canvas_getcurrent(); ! t_canvas *canvas=glist_getcanvas(glist); ! int ac=0; ! t_atom *av; ! ! canvas_setcurrent(canvas); ! canvas_getargs(&ac, &av); ! canvas_unsetcurrent(canvas); ! ! x->x_size = 30; ! if(ac > 5) ! x->x_size = 2*(ac+10); ! x->x_at = (t_atom *)getbytes(x->x_size * sizeof(t_atom)); ! x->x_inlet_select = 1; ! if(ac <= 0) ! { ! x->x_type = A_NULL; ! x->x_ac = 0; ! x->x_sym = &s_bang; ! } ! else ! { ! if(IS_A_FLOAT(av, 0)) ! { ! iem_prepend_kernel_list(x, &s_list, ac, av); ! } ! else if(IS_A_SYMBOL(av, 0)) ! { ! iem_prepend_kernel_anything(x, atom_getsymbol(av), ac-1, av+1); ! } ! } ! outlet_new(&x->x_obj, &s_list); ! return(x); ! } ! ! void iem_prepend_kernel_setup(void) ! { ! char str[2]; ! ! str[0] = 1; ! str[1] = 0; ! iem_prepend_kernel_class = class_new(gensym("iem_prepend_kernel"), ! (t_newmethod)iem_prepend_kernel_new, (t_method)iem_prepend_kernel_free, ! sizeof(t_iem_prepend_kernel), 0, 0); ! class_addbang(iem_prepend_kernel_class, (t_method)iem_prepend_kernel_bang); ! class_addpointer(iem_prepend_kernel_class, iem_prepend_kernel_pointer); ! class_addfloat(iem_prepend_kernel_class, (t_method)iem_prepend_kernel_float); ! class_addsymbol(iem_prepend_kernel_class, iem_prepend_kernel_symbol); ! class_addlist(iem_prepend_kernel_class, iem_prepend_kernel_list); ! class_addmethod(iem_prepend_kernel_class, (t_method)iem_prepend_kernel_inlet_select, gensym(str), A_FLOAT, 0); ! class_addanything(iem_prepend_kernel_class, iem_prepend_kernel_anything); ! class_sethelpsymbol(iem_prepend_kernel_class, gensym("iemhelp/help-merge_any")); ! } --- 1,258 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2004 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "g_canvas.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! EXTERN void canvas_getargs(int *argcp, t_atom **argvp); ! ! ! /* ------------------------ iem_prepend_kernel ---------------------------- */ ! static t_class *iem_prepend_kernel_class; ! ! typedef struct _iem_prepend_kernel ! { ! t_object x_obj; ! int x_inlet_select; ! int x_size; ! int x_ac; ! t_atom *x_at; ! t_symbol *x_sym; ! t_atomtype x_type; ! } t_iem_prepend_kernel; ! ! static void iem_prepend_kernel_atcopy(t_atom *src, t_atom *dst, int n) ! { ! while(n--) ! *dst++ = *src++; ! } ! ! static void iem_prepend_kernel_inlet_select(t_iem_prepend_kernel *x, t_floatarg fin_sel_01) ! { ! x->x_inlet_select = (int)fin_sel_01; ! } ! ! static void iem_prepend_kernel_bang(t_iem_prepend_kernel *x) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! x->x_ac = 0; ! x->x_type = A_NULL; ! x->x_sym = &s_bang; ! } ! else /* if 1st inlet */ ! { ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac, x->x_at); ! } ! } ! ! static void iem_prepend_kernel_float(t_iem_prepend_kernel *x, t_float f) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! x->x_ac = 1; ! x->x_type = A_FLOAT; ! SETFLOAT(x->x_at, f); ! x->x_sym = &s_list; ! } ! else /* if 1st inlet */ ! { ! if(x->x_type == A_NULL) ! { ! outlet_float(x->x_obj.ob_outlet, f); ! } ! else ! { ! SETFLOAT(x->x_at+x->x_ac, f); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac+1, x->x_at); ! } ! } ! } ! ! static void iem_prepend_kernel_symbol(t_iem_prepend_kernel *x, t_symbol *s) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! x->x_ac = 1; ! x->x_type = A_SYMBOL; ! SETSYMBOL(x->x_at, s); ! x->x_sym = &s_list; ! } ! else /* if 1st inlet */ ! { ! if(x->x_type == A_NULL) ! { ! outlet_symbol(x->x_obj.ob_outlet, s); ! } ! else ! { ! SETSYMBOL(x->x_at+x->x_ac, s); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac+1, x->x_at); ! } ! } ! } ! ! static void iem_prepend_kernel_pointer(t_iem_prepend_kernel *x, t_gpointer *gp) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! x->x_ac = 1; ! x->x_type = A_POINTER; ! SETPOINTER(x->x_at, gp); ! x->x_sym = &s_list; ! } ! else /* if 1st inlet */ ! { ! if(x->x_type == A_NULL) ! { ! outlet_pointer(x->x_obj.ob_outlet, gp); ! } ! else ! { ! SETPOINTER(x->x_at+x->x_ac, gp); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac+1, x->x_at); ! } ! } ! } ! ! static void iem_prepend_kernel_list(t_iem_prepend_kernel *x, t_symbol *s, int ac, t_atom *av) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! if((ac+10) > x->x_size) ! { ! x->x_at = (t_atom *)resizebytes(x->x_at, x->x_size*sizeof(t_atom), 2*(ac+10)*sizeof(t_atom)); ! x->x_size = 2*(ac+10); ! } ! x->x_ac = ac; ! x->x_type = A_GIMME; ! x->x_sym = &s_list; ! iem_prepend_kernel_atcopy(av, x->x_at, ac); ! } ! else /* if 1st inlet */ ! { ! if((ac+x->x_ac+1) > x->x_size) ! { ! x->x_at = (t_atom *)resizebytes(x->x_at, x->x_size*sizeof(t_atom), 2*(ac+x->x_ac+1)*sizeof(t_atom)); ! x->x_size = 2*(ac+x->x_ac+1); ! } ! if(x->x_type == A_NULL) ! { ! outlet_anything(x->x_obj.ob_outlet, &s_list, ac, av); ! } ! else ! { ! iem_prepend_kernel_atcopy(av, x->x_at + x->x_ac, ac); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac+ac, x->x_at); ! } ! } ! } ! ! static void iem_prepend_kernel_anything(t_iem_prepend_kernel *x, t_symbol *s, int ac, t_atom *av) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! if((ac+10) > x->x_size) ! { ! x->x_at = (t_atom *)resizebytes(x->x_at, x->x_size*sizeof(t_atom), 2*(ac+10)*sizeof(t_atom)); ! x->x_size = 2*(ac+10); ! } ! x->x_ac = ac; ! x->x_type = A_COMMA; ! x->x_sym = s; ! iem_prepend_kernel_atcopy(av, x->x_at, ac); ! } ! else /* if 1st inlet */ ! { ! if((ac+x->x_ac+1) > x->x_size) ! { ! x->x_at = (t_atom *)resizebytes(x->x_at, x->x_size*sizeof(t_atom), 2*(ac+x->x_ac+1)*sizeof(t_atom)); ! x->x_size = 2*(ac+x->x_ac+1); ! } ! if(x->x_type == A_NULL) ! { ! outlet_anything(x->x_obj.ob_outlet, s, ac, av); ! } ! else ! { ! SETSYMBOL(x->x_at + x->x_ac, s); ! iem_prepend_kernel_atcopy(av, x->x_at+x->x_ac+1, ac); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac+ac+1, x->x_at); ! } ! } ! } ! ! static void iem_prepend_kernel_free(t_iem_prepend_kernel *x) ! { ! if(x->x_at) ! freebytes(x->x_at, x->x_size * sizeof(t_atom)); ! } ! ! static void *iem_prepend_kernel_new(void) ! { ! t_iem_prepend_kernel *x = (t_iem_prepend_kernel *)pd_new(iem_prepend_kernel_class); ! t_glist *glist = (t_glist *)canvas_getcurrent(); ! t_canvas *canvas=glist_getcanvas(glist); ! int ac=0; ! t_atom *av; ! ! canvas_setcurrent(canvas); ! canvas_getargs(&ac, &av); ! canvas_unsetcurrent(canvas); ! ! x->x_size = 30; ! if(ac > 5) ! x->x_size = 2*(ac+10); ! x->x_at = (t_atom *)getbytes(x->x_size * sizeof(t_atom)); ! x->x_inlet_select = 1; ! if(ac <= 0) ! { ! x->x_type = A_NULL; ! x->x_ac = 0; ! x->x_sym = &s_bang; ! } ! else ! { ! if(IS_A_FLOAT(av, 0)) ! { ! iem_prepend_kernel_list(x, &s_list, ac, av); ! } ! else if(IS_A_SYMBOL(av, 0)) ! { ! iem_prepend_kernel_anything(x, atom_getsymbol(av), ac-1, av+1); ! } ! } ! outlet_new(&x->x_obj, &s_list); ! return(x); ! } ! ! void iem_prepend_kernel_setup(void) ! { ! char str[2]; ! ! str[0] = 1; ! str[1] = 0; ! iem_prepend_kernel_class = class_new(gensym("iem_prepend_kernel"), ! (t_newmethod)iem_prepend_kernel_new, (t_method)iem_prepend_kernel_free, ! sizeof(t_iem_prepend_kernel), 0, 0); ! class_addbang(iem_prepend_kernel_class, (t_method)iem_prepend_kernel_bang); ! class_addpointer(iem_prepend_kernel_class, iem_prepend_kernel_pointer); ! class_addfloat(iem_prepend_kernel_class, (t_method)iem_prepend_kernel_float); ! class_addsymbol(iem_prepend_kernel_class, iem_prepend_kernel_symbol); ! class_addlist(iem_prepend_kernel_class, iem_prepend_kernel_list); ! class_addmethod(iem_prepend_kernel_class, (t_method)iem_prepend_kernel_inlet_select, gensym(str), A_FLOAT, 0); ! class_addanything(iem_prepend_kernel_class, iem_prepend_kernel_anything); ! class_sethelpsymbol(iem_prepend_kernel_class, gensym("iemhelp/help-merge_any")); ! }
Index: iem_append_kernel.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/iem_append_kernel.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** iem_append_kernel.c 18 May 2004 21:33:31 -0000 1.1.1.1 --- iem_append_kernel.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,351 **** ! /* Copyright (c) 1997-2003 Miller Puckette. ! * For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "g_canvas.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! EXTERN void canvas_getargs(int *argcp, t_atom **argvp); ! ! ! /* ------------------------ iem_append_kernel ---------------------------- */ ! static t_class *iem_append_kernel_class; ! ! typedef struct _iem_append_kernel ! { ! t_object x_obj; ! int x_inlet_select; ! int x_size12; ! int x_size2; ! int x_ac1; ! int x_ac2; ! t_atom *x_at12; ! t_atom *x_at2; ! t_symbol *x_sym1; ! t_symbol *x_sym2; ! t_atomtype x_type1; ! t_atomtype x_type2; ! } t_iem_append_kernel; ! ! static void iem_append_kernel_atcopy(t_atom *src, t_atom *dst, int n) ! { ! while(n--) ! *dst++ = *src++; ! } ! ! static void iem_append_kernel_merge(t_iem_append_kernel *x, int off) ! { ! if((x->x_ac1+x->x_ac2+1) > x->x_size12) ! { ! x->x_at12 = (t_atom *)resizebytes(x->x_at12, x->x_size12*sizeof(t_atom), 2*(x->x_ac1+x->x_ac2+1)*sizeof(t_atom)); ! x->x_size12 = 2*(x->x_ac1+x->x_ac2+1); ! } ! if(off) ! SETSYMBOL(x->x_at12 + x->x_ac1, x->x_sym2); ! iem_append_kernel_atcopy(x->x_at2, x->x_at12 + x->x_ac1 + off, x->x_ac2); ! } ! ! static void iem_append_kernel_out(t_iem_append_kernel *x) ! { ! int off=0; ! ! if(x->x_type1 == A_GIMME) ! { ! if(x->x_type2 == A_COMMA) ! off = 1; ! else ! off = 0; ! iem_append_kernel_merge(x, off); ! outlet_list(x->x_obj.ob_outlet, &s_list, x->x_ac1+x->x_ac2+off, x->x_at12); ! } ! else if(x->x_type1 == A_COMMA) ! { ! if(x->x_type2 == A_COMMA) ! off = 1; ! else ! off = 0; ! iem_append_kernel_merge(x, off); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym1, x->x_ac1+x->x_ac2+off, x->x_at12); ! } ! else if(x->x_type1 == A_NULL)/*depends on 2.part*/ ! { ! iem_append_kernel_merge(x, 0); ! if(x->x_type2 == A_GIMME) ! outlet_list(x->x_obj.ob_outlet, &s_list, x->x_ac2, x->x_at12); ! else if(x->x_type2 == A_COMMA) ! outlet_anything(x->x_obj.ob_outlet, x->x_sym2, x->x_ac2, x->x_at12); ! else if(x->x_type2 == A_FLOAT) ! outlet_float(x->x_obj.ob_outlet, atom_getfloat(x->x_at12)); ! else if(x->x_type2 == A_SYMBOL) ! outlet_symbol(x->x_obj.ob_outlet, atom_getsymbol(x->x_at12)); ! else if(x->x_type2 == A_NULL) ! outlet_bang(x->x_obj.ob_outlet); ! else if(x->x_type2 == A_POINTER) ! outlet_pointer(x->x_obj.ob_outlet, (t_gpointer *)x->x_at12->a_w.w_gpointer); ! } ! else ! { ! if(x->x_type2 == A_COMMA) ! off = 1; ! else ! off = 0; ! iem_append_kernel_merge(x, off); ! if(x->x_type2 == A_NULL) ! { ! if(x->x_type1 == A_FLOAT) ! outlet_float(x->x_obj.ob_outlet, atom_getfloat(x->x_at12)); ! else if(x->x_type1 == A_SYMBOL) ! outlet_symbol(x->x_obj.ob_outlet, atom_getsymbol(x->x_at12)); ! else if(x->x_type1 == A_POINTER) ! outlet_pointer(x->x_obj.ob_outlet, (t_gpointer *)x->x_at12->a_w.w_gpointer); ! } ! else ! outlet_list(x->x_obj.ob_outlet, &s_list, x->x_ac1+x->x_ac2+off, x->x_at12); ! } ! } ! ! static void iem_append_kernel_inlet_select(t_iem_append_kernel *x, t_floatarg fin_sel_01) ! { ! x->x_inlet_select = (int)fin_sel_01; ! } ! ! static void iem_append_kernel_bang(t_iem_append_kernel *x) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! x->x_ac2 = 0; ! x->x_type2 = A_NULL; ! x->x_sym2 = &s_list; ! } ! else /* if 1st inlet */ ! { ! x->x_ac1 = 0; ! x->x_type1 = A_NULL; ! iem_append_kernel_out(x); ! } ! } ! ! static void iem_append_kernel_float(t_iem_append_kernel *x, t_float f) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! x->x_ac2 = 1; ! x->x_type2 = A_FLOAT; ! SETFLOAT(x->x_at2, f); ! x->x_sym2 = &s_list; ! } ! else /* if 1st inlet */ ! { ! x->x_ac1 = 1; ! x->x_type1 = A_FLOAT; ! SETFLOAT(x->x_at12, f); ! iem_append_kernel_out(x); ! } ! } ! ! static void iem_append_kernel_symbol(t_iem_append_kernel *x, t_symbol *s) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! x->x_ac2 = 1; ! x->x_type2 = A_SYMBOL; ! SETSYMBOL(x->x_at2, s); ! x->x_sym2 = &s_list; ! } ! else /* if 1st inlet */ ! { ! x->x_ac1 = 1; ! x->x_type1 = A_SYMBOL; ! SETSYMBOL(x->x_at12, s); ! iem_append_kernel_out(x); ! } ! } ! ! static void iem_append_kernel_pointer(t_iem_append_kernel *x, t_gpointer *gp) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! x->x_ac2 = 1; ! x->x_type2 = A_POINTER; ! SETPOINTER(x->x_at2, gp); ! x->x_sym2 = &s_list; ! } ! else /* if 1st inlet */ ! { ! x->x_ac1 = 1; ! x->x_type1 = A_POINTER; ! SETPOINTER(x->x_at12, gp); ! iem_append_kernel_out(x); ! } ! } ! ! static void iem_append_kernel_list(t_iem_append_kernel *x, t_symbol *s, int ac, t_atom *av) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! if(ac > x->x_size2) ! { ! x->x_at2 = (t_atom *)resizebytes(x->x_at2, x->x_size2*sizeof(t_atom), 2*ac*sizeof(t_atom)); ! x->x_size2 = 2*ac; ! } ! x->x_ac2 = ac; ! x->x_type2 = A_GIMME; ! x->x_sym2 = &s_list; ! iem_append_kernel_atcopy(av, x->x_at2, ac); ! } ! else /* if 1st inlet */ ! { ! if((x->x_size2+ac) > x->x_size12) ! { ! x->x_at12 = (t_atom *)resizebytes(x->x_at12, x->x_size12*sizeof(t_atom), 2*(x->x_size2+ac)*sizeof(t_atom)); ! x->x_size12 = 2*(x->x_size2+ac); ! } ! x->x_ac1 = ac; ! x->x_type1 = A_GIMME; ! iem_append_kernel_atcopy(av, x->x_at12, ac); ! x->x_sym1 = &s_list; ! iem_append_kernel_out(x); ! } ! } ! ! static void iem_append_kernel_anything(t_iem_append_kernel *x, t_symbol *s, int ac, t_atom *av) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! if((ac+1) > x->x_size2) ! { ! x->x_at2 = (t_atom *)resizebytes(x->x_at2, x->x_size2*sizeof(t_atom), 2*ac*sizeof(t_atom)); ! x->x_size2 = 2*ac; ! } ! x->x_ac2 = ac; ! x->x_type2 = A_COMMA; ! x->x_sym2 = s; ! iem_append_kernel_atcopy(av, x->x_at2, ac); ! } ! else /* if 1st inlet */ ! { ! if((x->x_size2+ac+1) > x->x_size12) ! { ! x->x_at12 = (t_atom *)resizebytes(x->x_at12, x->x_size12*sizeof(t_atom), 2*(x->x_size2+ac+1)*sizeof(t_atom)); ! x->x_size12 = 2*(x->x_size2+ac+1); ! } ! x->x_ac1 = ac; ! x->x_type1 = A_COMMA; ! iem_append_kernel_atcopy(av, x->x_at12, ac); ! x->x_sym1 = s; ! iem_append_kernel_out(x); ! } ! } ! ! static void iem_append_kernel_free(t_iem_append_kernel *x) ! { ! if(x->x_at12) ! freebytes(x->x_at12, x->x_size12 * sizeof(t_atom)); ! if(x->x_at2) ! freebytes(x->x_at2, x->x_size2 * sizeof(t_atom)); ! } ! ! static void *iem_append_kernel_new(void) ! { ! t_iem_append_kernel *x = (t_iem_append_kernel *)pd_new(iem_append_kernel_class); ! t_glist *glist = (t_glist *)canvas_getcurrent(); ! t_canvas *canvas=glist_getcanvas(glist); ! int ac=0; ! t_atom *av; ! ! canvas_setcurrent(canvas); ! canvas_getargs(&ac, &av); ! canvas_unsetcurrent(canvas); ! ! x->x_type1 = A_NULL; ! x->x_sym1 = &s_list; ! x->x_size2 = 10; ! if(ac > 5) ! x->x_size2 = 2*ac; ! x->x_at2 = (t_atom *)getbytes(x->x_size2 * sizeof(t_atom)); ! x->x_size12 = x->x_size2 + 10; ! x->x_at12 = (t_atom *)getbytes(x->x_size12 * sizeof(t_atom)); ! x->x_ac1 = 0; ! x->x_inlet_select = 1; ! if(ac <= 0) ! { ! x->x_type2 = A_NULL; ! x->x_ac2 = 0; ! x->x_sym2 = &s_list; ! } ! else ! { ! if(IS_A_FLOAT(av, 0)) ! { ! if(ac == 1) ! iem_append_kernel_float(x, atom_getfloat(av)); ! else ! iem_append_kernel_list(x, &s_list, ac, av); ! } ! else if(IS_A_SYMBOL(av, 0)) ! { ! t_symbol *xsym=atom_getsymbol(av); ! ! if(xsym == gensym("symbol")) ! { ! if(ac > 1) ! iem_append_kernel_symbol(x, atom_getsymbol(av+1)); ! else ! iem_append_kernel_symbol(x, gensym("")); ! } ! else if(xsym == gensym("float")) ! { ! if(ac > 1) ! { ! if(IS_A_FLOAT(av, 1)) ! iem_append_kernel_float(x, atom_getfloat(av+1)); ! else ! iem_append_kernel_float(x, 0.0f); ! } ! else ! iem_append_kernel_float(x, 0.0f); ! } ! else if(xsym == gensym("list")) ! { ! iem_append_kernel_list(x, &s_list, ac-1, av+1); ! } ! else ! { ! iem_append_kernel_anything(x, xsym, ac-1, av+1); ! } ! } ! } ! outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! ! void iem_append_kernel_setup(void) ! { ! char str[2]; ! ! str[0] = 1; ! str[1] = 0; ! iem_append_kernel_class = class_new(gensym("iem_append_kernel"), ! (t_newmethod)iem_append_kernel_new, (t_method)iem_append_kernel_free, ! sizeof(t_iem_append_kernel), 0, 0); ! class_addbang(iem_append_kernel_class, (t_method)iem_append_kernel_bang); ! class_addpointer(iem_append_kernel_class, iem_append_kernel_pointer); ! class_addfloat(iem_append_kernel_class, (t_method)iem_append_kernel_float); ! class_addsymbol(iem_append_kernel_class, iem_append_kernel_symbol); ! class_addlist(iem_append_kernel_class, iem_append_kernel_list); ! class_addmethod(iem_append_kernel_class, (t_method)iem_append_kernel_inlet_select, gensym(str), A_FLOAT, 0); ! class_addanything(iem_append_kernel_class, iem_append_kernel_anything); ! class_sethelpsymbol(iem_append_kernel_class, gensym("iemhelp/help-merge_any")); ! } --- 1,350 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "g_canvas.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! EXTERN void canvas_getargs(int *argcp, t_atom **argvp); ! ! ! /* ------------------------ iem_append_kernel ---------------------------- */ ! static t_class *iem_append_kernel_class; ! ! typedef struct _iem_append_kernel ! { ! t_object x_obj; ! int x_inlet_select; ! int x_size12; ! int x_size2; ! int x_ac1; ! int x_ac2; ! t_atom *x_at12; ! t_atom *x_at2; ! t_symbol *x_sym1; ! t_symbol *x_sym2; ! t_atomtype x_type1; ! t_atomtype x_type2; ! } t_iem_append_kernel; ! ! static void iem_append_kernel_atcopy(t_atom *src, t_atom *dst, int n) ! { ! while(n--) ! *dst++ = *src++; ! } ! ! static void iem_append_kernel_merge(t_iem_append_kernel *x, int off) ! { ! if((x->x_ac1+x->x_ac2+1) > x->x_size12) ! { ! x->x_at12 = (t_atom *)resizebytes(x->x_at12, x->x_size12*sizeof(t_atom), 2*(x->x_ac1+x->x_ac2+1)*sizeof(t_atom)); ! x->x_size12 = 2*(x->x_ac1+x->x_ac2+1); ! } ! if(off) ! SETSYMBOL(x->x_at12 + x->x_ac1, x->x_sym2); ! iem_append_kernel_atcopy(x->x_at2, x->x_at12 + x->x_ac1 + off, x->x_ac2); ! } ! ! static void iem_append_kernel_out(t_iem_append_kernel *x) ! { ! int off=0; ! ! if(x->x_type1 == A_GIMME) ! { ! if(x->x_type2 == A_COMMA) ! off = 1; ! else ! off = 0; ! iem_append_kernel_merge(x, off); ! outlet_list(x->x_obj.ob_outlet, &s_list, x->x_ac1+x->x_ac2+off, x->x_at12); ! } ! else if(x->x_type1 == A_COMMA) ! { ! if(x->x_type2 == A_COMMA) ! off = 1; ! else ! off = 0; ! iem_append_kernel_merge(x, off); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym1, x->x_ac1+x->x_ac2+off, x->x_at12); ! } ! else if(x->x_type1 == A_NULL)/*depends on 2.part*/ ! { ! iem_append_kernel_merge(x, 0); ! if(x->x_type2 == A_GIMME) ! outlet_list(x->x_obj.ob_outlet, &s_list, x->x_ac2, x->x_at12); ! else if(x->x_type2 == A_COMMA) ! outlet_anything(x->x_obj.ob_outlet, x->x_sym2, x->x_ac2, x->x_at12); ! else if(x->x_type2 == A_FLOAT) ! outlet_float(x->x_obj.ob_outlet, atom_getfloat(x->x_at12)); ! else if(x->x_type2 == A_SYMBOL) ! outlet_symbol(x->x_obj.ob_outlet, atom_getsymbol(x->x_at12)); ! else if(x->x_type2 == A_NULL) ! outlet_bang(x->x_obj.ob_outlet); ! else if(x->x_type2 == A_POINTER) ! outlet_pointer(x->x_obj.ob_outlet, (t_gpointer *)x->x_at12->a_w.w_gpointer); ! } ! else ! { ! if(x->x_type2 == A_COMMA) ! off = 1; ! else ! off = 0; ! iem_append_kernel_merge(x, off); ! if(x->x_type2 == A_NULL) ! { ! if(x->x_type1 == A_FLOAT) ! outlet_float(x->x_obj.ob_outlet, atom_getfloat(x->x_at12)); ! else if(x->x_type1 == A_SYMBOL) ! outlet_symbol(x->x_obj.ob_outlet, atom_getsymbol(x->x_at12)); ! else if(x->x_type1 == A_POINTER) ! outlet_pointer(x->x_obj.ob_outlet, (t_gpointer *)x->x_at12->a_w.w_gpointer); ! } ! else ! outlet_list(x->x_obj.ob_outlet, &s_list, x->x_ac1+x->x_ac2+off, x->x_at12); ! } ! } ! ! static void iem_append_kernel_inlet_select(t_iem_append_kernel *x, t_floatarg fin_sel_01) ! { ! x->x_inlet_select = (int)fin_sel_01; ! } ! ! static void iem_append_kernel_bang(t_iem_append_kernel *x) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! x->x_ac2 = 0; ! x->x_type2 = A_NULL; ! x->x_sym2 = &s_list; ! } ! else /* if 1st inlet */ ! { ! x->x_ac1 = 0; ! x->x_type1 = A_NULL; ! iem_append_kernel_out(x); ! } ! } ! ! static void iem_append_kernel_float(t_iem_append_kernel *x, t_float f) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! x->x_ac2 = 1; ! x->x_type2 = A_FLOAT; ! SETFLOAT(x->x_at2, f); ! x->x_sym2 = &s_list; ! } ! else /* if 1st inlet */ ! { ! x->x_ac1 = 1; ! x->x_type1 = A_FLOAT; ! SETFLOAT(x->x_at12, f); ! iem_append_kernel_out(x); ! } ! } ! ! static void iem_append_kernel_symbol(t_iem_append_kernel *x, t_symbol *s) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! x->x_ac2 = 1; ! x->x_type2 = A_SYMBOL; ! SETSYMBOL(x->x_at2, s); ! x->x_sym2 = &s_list; ! } ! else /* if 1st inlet */ ! { ! x->x_ac1 = 1; ! x->x_type1 = A_SYMBOL; ! SETSYMBOL(x->x_at12, s); ! iem_append_kernel_out(x); ! } ! } ! ! static void iem_append_kernel_pointer(t_iem_append_kernel *x, t_gpointer *gp) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! x->x_ac2 = 1; ! x->x_type2 = A_POINTER; ! SETPOINTER(x->x_at2, gp); ! x->x_sym2 = &s_list; ! } ! else /* if 1st inlet */ ! { ! x->x_ac1 = 1; ! x->x_type1 = A_POINTER; ! SETPOINTER(x->x_at12, gp); ! iem_append_kernel_out(x); ! } ! } ! ! static void iem_append_kernel_list(t_iem_append_kernel *x, t_symbol *s, int ac, t_atom *av) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! if(ac > x->x_size2) ! { ! x->x_at2 = (t_atom *)resizebytes(x->x_at2, x->x_size2*sizeof(t_atom), 2*ac*sizeof(t_atom)); ! x->x_size2 = 2*ac; ! } ! x->x_ac2 = ac; ! x->x_type2 = A_GIMME; ! x->x_sym2 = &s_list; ! iem_append_kernel_atcopy(av, x->x_at2, ac); ! } ! else /* if 1st inlet */ ! { ! if((x->x_size2+ac) > x->x_size12) ! { ! x->x_at12 = (t_atom *)resizebytes(x->x_at12, x->x_size12*sizeof(t_atom), 2*(x->x_size2+ac)*sizeof(t_atom)); ! x->x_size12 = 2*(x->x_size2+ac); ! } ! x->x_ac1 = ac; ! x->x_type1 = A_GIMME; ! iem_append_kernel_atcopy(av, x->x_at12, ac); ! x->x_sym1 = &s_list; ! iem_append_kernel_out(x); ! } ! } ! ! static void iem_append_kernel_anything(t_iem_append_kernel *x, t_symbol *s, int ac, t_atom *av) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! if((ac+1) > x->x_size2) ! { ! x->x_at2 = (t_atom *)resizebytes(x->x_at2, x->x_size2*sizeof(t_atom), 2*ac*sizeof(t_atom)); ! x->x_size2 = 2*ac; ! } ! x->x_ac2 = ac; ! x->x_type2 = A_COMMA; ! x->x_sym2 = s; ! iem_append_kernel_atcopy(av, x->x_at2, ac); ! } ! else /* if 1st inlet */ ! { ! if((x->x_size2+ac+1) > x->x_size12) ! { ! x->x_at12 = (t_atom *)resizebytes(x->x_at12, x->x_size12*sizeof(t_atom), 2*(x->x_size2+ac+1)*sizeof(t_atom)); ! x->x_size12 = 2*(x->x_size2+ac+1); ! } ! x->x_ac1 = ac; ! x->x_type1 = A_COMMA; ! iem_append_kernel_atcopy(av, x->x_at12, ac); ! x->x_sym1 = s; ! iem_append_kernel_out(x); ! } ! } ! ! static void iem_append_kernel_free(t_iem_append_kernel *x) ! { ! if(x->x_at12) ! freebytes(x->x_at12, x->x_size12 * sizeof(t_atom)); ! if(x->x_at2) ! freebytes(x->x_at2, x->x_size2 * sizeof(t_atom)); ! } ! ! static void *iem_append_kernel_new(void) ! { ! t_iem_append_kernel *x = (t_iem_append_kernel *)pd_new(iem_append_kernel_class); ! t_glist *glist = (t_glist *)canvas_getcurrent(); ! t_canvas *canvas=glist_getcanvas(glist); ! int ac=0; ! t_atom *av; ! ! canvas_setcurrent(canvas); ! canvas_getargs(&ac, &av); ! canvas_unsetcurrent(canvas); ! ! x->x_type1 = A_NULL; ! x->x_sym1 = &s_list; ! x->x_size2 = 10; ! if(ac > 5) ! x->x_size2 = 2*ac; ! x->x_at2 = (t_atom *)getbytes(x->x_size2 * sizeof(t_atom)); ! x->x_size12 = x->x_size2 + 10; ! x->x_at12 = (t_atom *)getbytes(x->x_size12 * sizeof(t_atom)); ! x->x_ac1 = 0; ! x->x_inlet_select = 1; ! if(ac <= 0) ! { ! x->x_type2 = A_NULL; ! x->x_ac2 = 0; ! x->x_sym2 = &s_list; ! } ! else ! { ! if(IS_A_FLOAT(av, 0)) ! { ! if(ac == 1) ! iem_append_kernel_float(x, atom_getfloat(av)); ! else ! iem_append_kernel_list(x, &s_list, ac, av); ! } ! else if(IS_A_SYMBOL(av, 0)) ! { ! t_symbol *xsym=atom_getsymbol(av); ! ! if(xsym == gensym("symbol")) ! { ! if(ac > 1) ! iem_append_kernel_symbol(x, atom_getsymbol(av+1)); ! else ! iem_append_kernel_symbol(x, gensym("")); ! } ! else if(xsym == gensym("float")) ! { ! if(ac > 1) ! { ! if(IS_A_FLOAT(av, 1)) ! iem_append_kernel_float(x, atom_getfloat(av+1)); ! else ! iem_append_kernel_float(x, 0.0f); ! } ! else ! iem_append_kernel_float(x, 0.0f); ! } ! else if(xsym == gensym("list")) ! { ! iem_append_kernel_list(x, &s_list, ac-1, av+1); ! } ! else ! { ! iem_append_kernel_anything(x, xsym, ac-1, av+1); ! } ! } ! } ! outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! ! void iem_append_kernel_setup(void) ! { ! char str[2]; ! ! str[0] = 1; ! str[1] = 0; ! iem_append_kernel_class = class_new(gensym("iem_append_kernel"), ! (t_newmethod)iem_append_kernel_new, (t_method)iem_append_kernel_free, ! sizeof(t_iem_append_kernel), 0, 0); ! class_addbang(iem_append_kernel_class, (t_method)iem_append_kernel_bang); ! class_addpointer(iem_append_kernel_class, iem_append_kernel_pointer); ! class_addfloat(iem_append_kernel_class, (t_method)iem_append_kernel_float); ! class_addsymbol(iem_append_kernel_class, iem_append_kernel_symbol); ! class_addlist(iem_append_kernel_class, iem_append_kernel_list); ! class_addmethod(iem_append_kernel_class, (t_method)iem_append_kernel_inlet_select, gensym(str), A_FLOAT, 0); ! class_addanything(iem_append_kernel_class, iem_append_kernel_anything); ! class_sethelpsymbol(iem_append_kernel_class, gensym("iemhelp/help-merge_any")); ! }
Index: mergefilename.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/mergefilename.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** mergefilename.c 18 May 2004 21:33:32 -0000 1.1.1.1 --- mergefilename.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,229 **** ! /* Copyright (c) 1997-2003 Miller Puckette. ! * For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* -------------------------- mergefilename ------------------------------ */ ! ! static t_class *mergefilename_class; ! ! typedef struct _mergefilename ! { ! t_object x_obj; ! char x_sep[2]; ! } t_mergefilename; ! ! static void mergefilename_separator(t_mergefilename *x, t_symbol *s, int ac, t_atom *av) ! { ! if(ac > 0) ! { ! if(IS_A_SYMBOL(av, 0)) ! { ! if(strlen(av->a_w.w_symbol->s_name) == 1) ! x->x_sep[0] = av->a_w.w_symbol->s_name[0]; ! else if(!strcmp(av->a_w.w_symbol->s_name, "backslash")) ! x->x_sep[0] = '\'; ! else if(!strcmp(av->a_w.w_symbol->s_name, "slash")) ! x->x_sep[0] = '/'; ! else if(!strcmp(av->a_w.w_symbol->s_name, "blank")) ! x->x_sep[0] = ' '; ! else if(!strcmp(av->a_w.w_symbol->s_name, "space")) ! x->x_sep[0] = ' '; ! else if(!strcmp(av->a_w.w_symbol->s_name, "dollar")) ! x->x_sep[0] = '$'; ! else if(!strcmp(av->a_w.w_symbol->s_name, "comma")) ! x->x_sep[0] = ','; ! else if(!strcmp(av->a_w.w_symbol->s_name, "semi")) ! x->x_sep[0] = ';'; ! else if(!strcmp(av->a_w.w_symbol->s_name, "leftbrace")) ! x->x_sep[0] = '{'; ! else if(!strcmp(av->a_w.w_symbol->s_name, "rightbrace")) ! x->x_sep[0] = '}'; ! else ! x->x_sep[0] = 0; ! } ! else if(IS_A_FLOAT(av, 0)) ! { ! int i; ! float f=fabs(av->a_w.w_float); ! ! while(f >= 10.0) ! f *= 0.1; ! i = (int)f; ! x->x_sep[0] = (char)i + '0'; ! } ! } ! else ! x->x_sep[0] = 0; ! } ! ! static void mergefilename_float(t_mergefilename *x, t_floatarg f) ! { ! char fbuf[30]; ! ! fbuf[0] = 0; ! sprintf(fbuf, "%g", f); ! outlet_symbol(x->x_obj.ob_outlet, gensym(fbuf)); ! } ! ! static void mergefilename_symbol(t_mergefilename *x, t_symbol *s) ! { ! outlet_symbol(x->x_obj.ob_outlet, s); ! } ! ! static void mergefilename_list(t_mergefilename *x, t_symbol *s, int ac, t_atom *av) ! { ! char *cbeg, fbuf[30]; ! int size=400, i, len, cursize=0; ! ! cbeg = (char *)getbytes(size * sizeof(char)); ! cbeg[0] = 0; ! if(ac > 0) ! { ! if(IS_A_SYMBOL(av, 0)) ! { ! len = strlen(av->a_w.w_symbol->s_name); ! if((len + cursize) >= (size-1)) ! { ! cbeg = (char *)resizebytes(cbeg, size*sizeof(char), 2*(len + cursize)*sizeof(char)); ! size = 2*(len + cursize); ! } ! strcat(cbeg, av->a_w.w_symbol->s_name); ! cursize += len; ! } ! else if(IS_A_FLOAT(av, 0)) ! { ! sprintf(fbuf, "%g", av->a_w.w_float); ! len = strlen(fbuf); ! if((len + cursize) >= (size-1)) ! { ! cbeg = (char *)resizebytes(cbeg, size*sizeof(char), 2*(len + cursize)*sizeof(char)); ! size = 2*(len + cursize); ! } ! strcat(cbeg, fbuf); ! cursize += len; ! } ! } ! ! if(ac > 1) ! { ! for(i=1; i<ac; i++) ! { ! av++; ! strcat(cbeg, x->x_sep); ! if(IS_A_SYMBOL(av, 0)) ! { ! len = strlen(av->a_w.w_symbol->s_name); ! if((len + cursize) >= (size-1)) ! { ! cbeg = (char *)resizebytes(cbeg, size*sizeof(char), 2*(len + cursize)*sizeof(char)); ! size = 2*(len + cursize); ! } ! strcat(cbeg, av->a_w.w_symbol->s_name); ! cursize += len; ! } ! else if(IS_A_FLOAT(av, 0)) ! { ! sprintf(fbuf, "%g", av->a_w.w_float); ! len = strlen(fbuf); ! if((len + cursize) >= (size-1)) ! { ! cbeg = (char *)resizebytes(cbeg, size*sizeof(char), 2*(len + cursize)*sizeof(char)); ! size = 2*(len + cursize); ! } ! strcat(cbeg, fbuf); ! cursize += len; ! } ! } ! } ! outlet_symbol(x->x_obj.ob_outlet, gensym(cbeg)); ! freebytes(cbeg, size * sizeof(char)); ! } ! ! static void mergefilename_anything(t_mergefilename *x, t_symbol *s, int ac, t_atom *av) ! { ! char *cbeg, fbuf[30]; ! int size=400, i, len, cursize=0; ! ! cbeg = (char *)getbytes(size * sizeof(char)); ! cbeg[0] = 0; ! len = strlen(s->s_name); ! if((len + cursize) >= (size-1)) ! { ! cbeg = (char *)resizebytes(cbeg, size*sizeof(char), 2*(len + cursize)*sizeof(char)); ! size = 2*(len + cursize); ! } ! strcat(cbeg, s->s_name); ! cursize += len; ! if(ac > 0) ! { ! for(i=0; i<ac; i++) ! { ! strcat(cbeg, x->x_sep); ! if(IS_A_SYMBOL(av, 0)) ! { ! len = strlen(av->a_w.w_symbol->s_name); ! if((len + cursize) >= (size-1)) ! { ! cbeg = (char *)resizebytes(cbeg, size*sizeof(char), 2*(len + cursize)*sizeof(char)); ! size = 2*(len + cursize); ! } ! strcat(cbeg, av->a_w.w_symbol->s_name); ! cursize += len; ! } ! else if(IS_A_FLOAT(av, 0)) ! { ! sprintf(fbuf, "%g", av->a_w.w_float); ! len = strlen(fbuf); ! if((len + cursize) >= (size-1)) ! { ! cbeg = (char *)resizebytes(cbeg, size*sizeof(char), 2*(len + cursize)*sizeof(char)); ! size = 2*(len + cursize); ! } ! strcat(cbeg, fbuf); ! cursize += len; ! } ! av++; ! } ! } ! outlet_symbol(x->x_obj.ob_outlet, gensym(cbeg)); ! freebytes(cbeg, size * sizeof(char)); ! } ! ! static void *mergefilename_new(t_symbol *s, int ac, t_atom *av) ! { ! t_mergefilename *x = (t_mergefilename *)pd_new(mergefilename_class); ! ! x->x_sep[0] = 0; ! x->x_sep[1] = 0; ! if(ac > 0) ! mergefilename_separator(x, s, ac, av); ! outlet_new(&x->x_obj, &s_symbol); ! return (x); ! } ! ! void mergefilename_setup(void) ! { ! mergefilename_class = class_new(gensym("mergefilename"), (t_newmethod)mergefilename_new, ! 0, sizeof(t_mergefilename), 0, A_GIMME, 0); ! class_addmethod(mergefilename_class, (t_method)mergefilename_separator, gensym("separator"), A_GIMME, 0); ! class_addmethod(mergefilename_class, (t_method)mergefilename_separator, gensym("sep"), A_GIMME, 0); ! class_addfloat(mergefilename_class, mergefilename_float); ! class_addsymbol(mergefilename_class, mergefilename_symbol); ! class_addlist(mergefilename_class, mergefilename_list); ! class_addanything(mergefilename_class, mergefilename_anything); ! class_sethelpsymbol(mergefilename_class, gensym("iemhelp/help-mergefilename")); ! } --- 1,230 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* -------------------------- mergefilename ------------------------------ */ ! /* ------------ concatenates a list of symbols to one symbol ------------- */ ! /* ----- between the linked symbols, there is a variable character ------- */ ! ! static t_class *mergefilename_class; ! ! typedef struct _mergefilename ! { ! t_object x_obj; ! char x_sep[2]; ! } t_mergefilename; ! ! static void mergefilename_separator(t_mergefilename *x, t_symbol *s, int ac, t_atom *av) ! { ! if(ac > 0) ! { ! if(IS_A_SYMBOL(av, 0)) ! { ! if(strlen(av->a_w.w_symbol->s_name) == 1) ! x->x_sep[0] = av->a_w.w_symbol->s_name[0]; ! else if(!strcmp(av->a_w.w_symbol->s_name, "backslash")) ! x->x_sep[0] = '\'; ! else if(!strcmp(av->a_w.w_symbol->s_name, "slash")) ! x->x_sep[0] = '/'; ! else if(!strcmp(av->a_w.w_symbol->s_name, "blank")) ! x->x_sep[0] = ' '; ! else if(!strcmp(av->a_w.w_symbol->s_name, "space")) ! x->x_sep[0] = ' '; ! else if(!strcmp(av->a_w.w_symbol->s_name, "dollar")) ! x->x_sep[0] = '$'; ! else if(!strcmp(av->a_w.w_symbol->s_name, "comma")) ! x->x_sep[0] = ','; ! else if(!strcmp(av->a_w.w_symbol->s_name, "semi")) ! x->x_sep[0] = ';'; ! else if(!strcmp(av->a_w.w_symbol->s_name, "leftbrace")) ! x->x_sep[0] = '{'; ! else if(!strcmp(av->a_w.w_symbol->s_name, "rightbrace")) ! x->x_sep[0] = '}'; ! else ! x->x_sep[0] = 0; ! } ! else if(IS_A_FLOAT(av, 0)) ! { ! int i; ! float f=fabs(av->a_w.w_float); ! ! while(f >= 10.0) ! f *= 0.1; ! i = (int)f; ! x->x_sep[0] = (char)i + '0'; ! } ! } ! else ! x->x_sep[0] = 0; ! } ! ! static void mergefilename_float(t_mergefilename *x, t_floatarg f) ! { ! char fbuf[30]; ! ! fbuf[0] = 0; ! sprintf(fbuf, "%g", f); ! outlet_symbol(x->x_obj.ob_outlet, gensym(fbuf)); ! } ! ! static void mergefilename_symbol(t_mergefilename *x, t_symbol *s) ! { ! outlet_symbol(x->x_obj.ob_outlet, s); ! } ! ! static void mergefilename_list(t_mergefilename *x, t_symbol *s, int ac, t_atom *av) ! { ! char *cbeg, fbuf[30]; ! int size=400, i, len, cursize=0; ! ! cbeg = (char *)getbytes(size * sizeof(char)); ! cbeg[0] = 0; ! if(ac > 0) ! { ! if(IS_A_SYMBOL(av, 0)) ! { ! len = strlen(av->a_w.w_symbol->s_name); ! if((len + cursize) >= (size-1)) ! { ! cbeg = (char *)resizebytes(cbeg, size*sizeof(char), 2*(len + cursize)*sizeof(char)); ! size = 2*(len + cursize); ! } ! strcat(cbeg, av->a_w.w_symbol->s_name); ! cursize += len; ! } ! else if(IS_A_FLOAT(av, 0)) ! { ! sprintf(fbuf, "%g", av->a_w.w_float); ! len = strlen(fbuf); ! if((len + cursize) >= (size-1)) ! { ! cbeg = (char *)resizebytes(cbeg, size*sizeof(char), 2*(len + cursize)*sizeof(char)); ! size = 2*(len + cursize); ! } ! strcat(cbeg, fbuf); ! cursize += len; ! } ! } ! ! if(ac > 1) ! { ! for(i=1; i<ac; i++) ! { ! av++; ! strcat(cbeg, x->x_sep); ! if(IS_A_SYMBOL(av, 0)) ! { ! len = strlen(av->a_w.w_symbol->s_name); ! if((len + cursize) >= (size-1)) ! { ! cbeg = (char *)resizebytes(cbeg, size*sizeof(char), 2*(len + cursize)*sizeof(char)); ! size = 2*(len + cursize); ! } ! strcat(cbeg, av->a_w.w_symbol->s_name); ! cursize += len; ! } ! else if(IS_A_FLOAT(av, 0)) ! { ! sprintf(fbuf, "%g", av->a_w.w_float); ! len = strlen(fbuf); ! if((len + cursize) >= (size-1)) ! { ! cbeg = (char *)resizebytes(cbeg, size*sizeof(char), 2*(len + cursize)*sizeof(char)); ! size = 2*(len + cursize); ! } ! strcat(cbeg, fbuf); ! cursize += len; ! } ! } ! } ! outlet_symbol(x->x_obj.ob_outlet, gensym(cbeg)); ! freebytes(cbeg, size * sizeof(char)); ! } ! ! static void mergefilename_anything(t_mergefilename *x, t_symbol *s, int ac, t_atom *av) ! { ! char *cbeg, fbuf[30]; ! int size=400, i, len, cursize=0; ! ! cbeg = (char *)getbytes(size * sizeof(char)); ! cbeg[0] = 0; ! len = strlen(s->s_name); ! if((len + cursize) >= (size-1)) ! { ! cbeg = (char *)resizebytes(cbeg, size*sizeof(char), 2*(len + cursize)*sizeof(char)); ! size = 2*(len + cursize); ! } ! strcat(cbeg, s->s_name); ! cursize += len; ! if(ac > 0) ! { ! for(i=0; i<ac; i++) ! { ! strcat(cbeg, x->x_sep); ! if(IS_A_SYMBOL(av, 0)) ! { ! len = strlen(av->a_w.w_symbol->s_name); ! if((len + cursize) >= (size-1)) ! { ! cbeg = (char *)resizebytes(cbeg, size*sizeof(char), 2*(len + cursize)*sizeof(char)); ! size = 2*(len + cursize); ! } ! strcat(cbeg, av->a_w.w_symbol->s_name); ! cursize += len; ! } ! else if(IS_A_FLOAT(av, 0)) ! { ! sprintf(fbuf, "%g", av->a_w.w_float); ! len = strlen(fbuf); ! if((len + cursize) >= (size-1)) ! { ! cbeg = (char *)resizebytes(cbeg, size*sizeof(char), 2*(len + cursize)*sizeof(char)); ! size = 2*(len + cursize); ! } ! strcat(cbeg, fbuf); ! cursize += len; ! } ! av++; ! } ! } ! outlet_symbol(x->x_obj.ob_outlet, gensym(cbeg)); ! freebytes(cbeg, size * sizeof(char)); ! } ! ! static void *mergefilename_new(t_symbol *s, int ac, t_atom *av) ! { ! t_mergefilename *x = (t_mergefilename *)pd_new(mergefilename_class); ! ! x->x_sep[0] = 0; ! x->x_sep[1] = 0; ! if(ac > 0) ! mergefilename_separator(x, s, ac, av); ! outlet_new(&x->x_obj, &s_symbol); ! return (x); ! } ! ! void mergefilename_setup(void) ! { ! mergefilename_class = class_new(gensym("mergefilename"), (t_newmethod)mergefilename_new, ! 0, sizeof(t_mergefilename), 0, A_GIMME, 0); ! class_addmethod(mergefilename_class, (t_method)mergefilename_separator, gensym("separator"), A_GIMME, 0); ! class_addmethod(mergefilename_class, (t_method)mergefilename_separator, gensym("sep"), A_GIMME, 0); ! class_addfloat(mergefilename_class, mergefilename_float); ! class_addsymbol(mergefilename_class, mergefilename_symbol); ! class_addlist(mergefilename_class, mergefilename_list); ! class_addanything(mergefilename_class, mergefilename_anything); ! class_sethelpsymbol(mergefilename_class, gensym("iemhelp/help-mergefilename")); ! }
Index: sigiem_samplerate.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/sigiem_samplerate.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** sigiem_samplerate.c 18 May 2004 21:33:33 -0000 1.1.1.1 --- sigiem_samplerate.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,61 **** ! /* Copyright (c) 1997-2003 Miller Puckette. ! * For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! ! /* ------------------------ iem_samplerate~ ----------------------------- */ ! ! static t_class *sigiem_samplerate_class; ! ! typedef struct _sigiem_samplerate ! { ! t_object x_obj; ! t_float x_samplerate; ! t_clock *x_clock; ! t_float x_f; ! } t_sigiem_samplerate; ! ! static void sigiem_samplerate_out(t_sigiem_samplerate *x) ! { ! outlet_float(x->x_obj.ob_outlet, x->x_samplerate); ! } ! ! static void sigiem_samplerate_free(t_sigiem_samplerate *x) ! { ! clock_free(x->x_clock); ! } ! ! static void *sigiem_samplerate_new(t_symbol *s) ! { ! t_sigiem_samplerate *x = (t_sigiem_samplerate *)pd_new(sigiem_samplerate_class); ! x->x_clock = clock_new(x, (t_method)sigiem_samplerate_out); ! outlet_new(&x->x_obj, &s_float); ! x->x_samplerate = 44100.0f; ! x->x_f = 0.0f; ! return (x); ! } ! ! static void sigiem_samplerate_dsp(t_sigiem_samplerate *x, t_signal **sp) ! { ! x->x_samplerate = (t_float)(sp[0]->s_sr); ! clock_delay(x->x_clock, 0.0f); ! } ! ! void sigiem_samplerate_setup(void) ! { ! sigiem_samplerate_class = class_new(gensym("iem_samplerate~"), (t_newmethod)sigiem_samplerate_new, ! (t_method)sigiem_samplerate_free, sizeof(t_sigiem_samplerate), 0, 0); ! CLASS_MAINSIGNALIN(sigiem_samplerate_class, t_sigiem_samplerate, x_f); ! class_addmethod(sigiem_samplerate_class, (t_method)sigiem_samplerate_dsp, gensym("dsp"), 0); ! } ! --- 1,60 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! ! /* --------------- iem_samplerate~ ----------------- */ ! /* -- outputs the current samplerate of a window --- */ ! ! static t_class *sigiem_samplerate_class; ! ! typedef struct _sigiem_samplerate ! { ! t_object x_obj; ! t_float x_samplerate; ! t_clock *x_clock; ! t_float x_f; ! } t_sigiem_samplerate; ! ! static void sigiem_samplerate_out(t_sigiem_samplerate *x) ! { ! outlet_float(x->x_obj.ob_outlet, x->x_samplerate); ! } ! ! static void sigiem_samplerate_free(t_sigiem_samplerate *x) ! { ! clock_free(x->x_clock); ! } ! ! static void *sigiem_samplerate_new(t_symbol *s) ! { ! t_sigiem_samplerate *x = (t_sigiem_samplerate *)pd_new(sigiem_samplerate_class); ! x->x_clock = clock_new(x, (t_method)sigiem_samplerate_out); ! outlet_new(&x->x_obj, &s_float); ! x->x_samplerate = 44100.0f; ! x->x_f = 0.0f; ! return (x); ! } ! ! static void sigiem_samplerate_dsp(t_sigiem_samplerate *x, t_signal **sp) ! { ! x->x_samplerate = (t_float)(sp[0]->s_sr); ! clock_delay(x->x_clock, 0.0f); ! } ! ! void sigiem_samplerate_setup(void) ! { ! sigiem_samplerate_class = class_new(gensym("iem_samplerate~"), (t_newmethod)sigiem_samplerate_new, ! (t_method)sigiem_samplerate_free, sizeof(t_sigiem_samplerate), 0, 0); ! CLASS_MAINSIGNALIN(sigiem_samplerate_class, t_sigiem_samplerate, x_f); ! class_addmethod(sigiem_samplerate_class, (t_method)sigiem_samplerate_dsp, gensym("dsp"), 0); ! }
Index: iem_sel_any.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/iem_sel_any.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** iem_sel_any.c 18 May 2004 21:33:32 -0000 1.1.1.1 --- iem_sel_any.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,111 **** ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ------------------------ iem_sel_any ---------------------------- */ ! static t_class *iem_sel_any_class; ! ! typedef struct _iem_sel_any ! { ! t_object x_obj; ! int x_ac; ! int x_max_ac; ! t_symbol **x_any; ! t_symbol *x_set; ! void *x_out_any; ! void *x_out_set_any; ! } t_iem_sel_any; ! ! ! static void iem_sel_any_float(t_iem_sel_any *x, t_float f) ! { ! int i = (int)f; ! t_atom at; ! ! if(x->x_ac > 0) ! { ! if(i < 0) ! i = 0; ! if(i >= x->x_ac) ! i = x->x_ac - 1; ! SETSYMBOL(&at, x->x_any[i]); ! outlet_anything(x->x_out_any, x->x_any[i], 0, 0); ! outlet_anything(x->x_out_set_any, x->x_set, 1, &at); ! } ! } ! ! static void iem_sel_any_add(t_iem_sel_any *x, t_symbol *s, int ac, t_atom *av) ! { ! if((ac >= 2) && (IS_A_FLOAT(av, 0))) ! { ! int i = (int)atom_getintarg(0, ac, av); ! ! if((i >= 0) && (i < x->x_max_ac)) ! { ! if(IS_A_SYMBOL(av, 1)) ! x->x_any[i] = atom_getsymbolarg(1, ac, av); ! else if(IS_A_FLOAT(av, 1)) ! { ! char str[100]; ! ! sprintf(str, "%g", atom_getfloatarg(1, ac, av)); ! x->x_any[i] = gensym(str); ! } ! if(i >= x->x_ac) ! x->x_ac = i+1; ! } ! } ! } ! ! static void iem_sel_any_clear(t_iem_sel_any *x) ! { ! x->x_ac = 0; ! } ! ! static void iem_sel_any_free(t_iem_sel_any *x) ! { ! freebytes(x->x_any, x->x_max_ac * sizeof(t_symbol *)); ! } ! ! static void *iem_sel_any_new(t_float fmax) ! { ! t_iem_sel_any *x = (t_iem_sel_any *)pd_new(iem_sel_any_class); ! int i; ! t_symbol *default_sym=gensym("no_entry"); ! ! if(fmax <= 0.0) ! fmax = 10.0; ! x->x_max_ac = (int)fmax; ! x->x_any = (t_symbol **)getbytes(x->x_max_ac * sizeof(t_symbol *)); ! x->x_ac = 0; ! x->x_set = gensym("set"); ! for(i=0; i<x->x_max_ac; i++) ! x->x_any[i] = default_sym; ! x->x_out_set_any = outlet_new(&x->x_obj, &s_list); ! x->x_out_any = outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! ! void iem_sel_any_setup(void) ! { ! iem_sel_any_class = class_new(gensym("iem_sel_any"), (t_newmethod)iem_sel_any_new, ! (t_method)iem_sel_any_free, sizeof(t_iem_sel_any), 0, A_DEFFLOAT, 0); ! class_addmethod(iem_sel_any_class, (t_method)iem_sel_any_add, gensym("add"), A_GIMME, 0); ! class_addmethod(iem_sel_any_class, (t_method)iem_sel_any_clear, gensym("clear"), 0); ! class_addfloat(iem_sel_any_class, (t_method)iem_sel_any_float); ! class_sethelpsymbol(iem_sel_any_class, gensym("iemhelp/help-iem_sel_any")); ! } ! --- 1,112 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ------------------------ iem_sel_any ---------------------------- */ ! /* -- stores an array of symbols, random access by index ----------- */ ! ! static t_class *iem_sel_any_class; ! ! typedef struct _iem_sel_any ! { ! t_object x_obj; ! int x_ac; ! int x_max_ac; ! t_symbol **x_any; ! t_symbol *x_set; ! void *x_out_any; ! void *x_out_set_any; ! } t_iem_sel_any; ! ! ! static void iem_sel_any_float(t_iem_sel_any *x, t_float f) ! { ! int i = (int)f; ! t_atom at; ! ! if(x->x_ac > 0) ! { ! if(i < 0) ! i = 0; ! if(i >= x->x_ac) ! i = x->x_ac - 1; ! SETSYMBOL(&at, x->x_any[i]); ! outlet_anything(x->x_out_any, x->x_any[i], 0, 0); ! outlet_anything(x->x_out_set_any, x->x_set, 1, &at); ! } ! } ! ! static void iem_sel_any_add(t_iem_sel_any *x, t_symbol *s, int ac, t_atom *av) ! { ! if((ac >= 2) && (IS_A_FLOAT(av, 0))) ! { ! int i = (int)atom_getintarg(0, ac, av); ! ! if((i >= 0) && (i < x->x_max_ac)) ! { ! if(IS_A_SYMBOL(av, 1)) ! x->x_any[i] = atom_getsymbolarg(1, ac, av); ! else if(IS_A_FLOAT(av, 1)) ! { ! char str[100]; ! ! sprintf(str, "%g", atom_getfloatarg(1, ac, av)); ! x->x_any[i] = gensym(str); ! } ! if(i >= x->x_ac) ! x->x_ac = i+1; ! } ! } ! } ! ! static void iem_sel_any_clear(t_iem_sel_any *x) ! { ! x->x_ac = 0; ! } ! ! static void iem_sel_any_free(t_iem_sel_any *x) ! { ! freebytes(x->x_any, x->x_max_ac * sizeof(t_symbol *)); ! } ! ! static void *iem_sel_any_new(t_float fmax) ! { ! t_iem_sel_any *x = (t_iem_sel_any *)pd_new(iem_sel_any_class); ! int i; ! t_symbol *default_sym=gensym("no_entry"); ! ! if(fmax <= 0.0) ! fmax = 10.0; ! x->x_max_ac = (int)fmax; ! x->x_any = (t_symbol **)getbytes(x->x_max_ac * sizeof(t_symbol *)); ! x->x_ac = 0; ! x->x_set = gensym("set"); ! for(i=0; i<x->x_max_ac; i++) ! x->x_any[i] = default_sym; ! x->x_out_set_any = outlet_new(&x->x_obj, &s_list); ! x->x_out_any = outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! ! void iem_sel_any_setup(void) ! { ! iem_sel_any_class = class_new(gensym("iem_sel_any"), (t_newmethod)iem_sel_any_new, ! (t_method)iem_sel_any_free, sizeof(t_iem_sel_any), 0, A_DEFFLOAT, 0); ! class_addmethod(iem_sel_any_class, (t_method)iem_sel_any_add, gensym("add"), A_GIMME, 0); ! class_addmethod(iem_sel_any_class, (t_method)iem_sel_any_clear, gensym("clear"), 0); ! class_addfloat(iem_sel_any_class, (t_method)iem_sel_any_float); ! class_sethelpsymbol(iem_sel_any_class, gensym("iemhelp/help-iem_sel_any")); ! }
Index: sigm2f.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/sigm2f.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** sigm2f.c 18 May 2004 21:33:33 -0000 1.1.1.1 --- sigm2f.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,127 **** ! /* Copyright (c) 1997-2003 Miller Puckette. ! * For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ------------------------ m2f~ ----------------------------- */ ! ! #define M2FTABSIZE 2048 ! ! float *iem_m2f_table=(float *)0L; ! ! static t_class *sigm2f_class; ! ! typedef struct _sigm2f ! { ! t_object x_obj; ! float x_msi; ! } t_sigm2f; ! ! static void *sigm2f_new(void) ! { ! t_sigm2f *x = (t_sigm2f *)pd_new(sigm2f_class); ! outlet_new(&x->x_obj, gensym("signal")); ! x->x_msi = 0; ! return (x); ! } ! ! static t_int *sigm2f_perform(t_int *w) ! { ! t_float *in = (t_float *)(w[1]); ! t_float *out = (t_float *)(w[2]); ! t_sigm2f *x = (t_sigm2f *)(w[3]); ! int n = (int)(w[4]); ! float *tab = iem_m2f_table, *addr, f1, f2, frac, iinn; ! double dphase; ! int normhipart; ! union tabfudge tf; ! ! tf.tf_d = UNITBIT32; ! normhipart = tf.tf_i[HIOFFSET]; ! ! #if 0 /* this is the readable version of the code. */ ! while (n--) ! { ! iinn = (*in++)*10.0+670.0; ! dphase = (double)iinn + UNITBIT32; ! tf.tf_d = dphase; ! addr = tab + (tf.tf_i[HIOFFSET] & (M2FTABSIZE-1)); ! tf.tf_i[HIOFFSET] = normhipart; ! frac = tf.tf_d - UNITBIT32; ! f1 = addr[0]; ! f2 = addr[1]; ! *out++ = f1 + frac * (f2 - f1); ! } ! #endif ! #if 1 /* this is the same, unwrapped by hand. */ ! iinn = (*in++)*10.0+670.0; ! dphase = (double)iinn + UNITBIT32; ! tf.tf_d = dphase; ! addr = tab + (tf.tf_i[HIOFFSET] & (M2FTABSIZE-1)); ! tf.tf_i[HIOFFSET] = normhipart; ! while (--n) ! { ! iinn = (*in++)*10.0+670.0; ! dphase = (double)iinn + UNITBIT32; ! frac = tf.tf_d - UNITBIT32; ! tf.tf_d = dphase; ! f1 = addr[0]; ! f2 = addr[1]; ! addr = tab + (tf.tf_i[HIOFFSET] & (M2FTABSIZE-1)); ! *out++ = f1 + frac * (f2 - f1); ! tf.tf_i[HIOFFSET] = normhipart; ! } ! frac = tf.tf_d - UNITBIT32; ! f1 = addr[0]; ! f2 = addr[1]; ! *out++ = f1 + frac * (f2 - f1); ! #endif ! return (w+5); ! } ! ! static void sigm2f_dsp(t_sigm2f *x, t_signal **sp) ! { ! dsp_add(sigm2f_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n); ! } ! ! static void sigm2f_maketable(void) ! { ! union tabfudge tf; ! ! if(!iem_m2f_table) ! { ! int i; ! float *fp, midi, refexp=440.0*exp(-5.75*log(2.0)); ! ! iem_m2f_table = (float *)getbytes(sizeof(float) * (M2FTABSIZE+1)); ! for(i=0, fp=iem_m2f_table, midi=-67.0; i<=M2FTABSIZE; i++, fp++, midi+=0.1) ! *fp = refexp * exp(0.057762265047 * midi); ! } ! tf.tf_d = UNITBIT32 + 0.5; ! if((unsigned)tf.tf_i[LOWOFFSET] != 0x80000000) ! bug("m2f~: unexpected machine alignment"); ! } ! ! void sigm2f_setup(void) ! { ! sigm2f_class = class_new(gensym("m2f~"), (t_newmethod)sigm2f_new, 0, ! sizeof(t_sigm2f), 0, 0); ! CLASS_MAINSIGNALIN(sigm2f_class, t_sigm2f, x_msi); ! class_addmethod(sigm2f_class, (t_method)sigm2f_dsp, gensym("dsp"), 0); ! sigm2f_maketable(); ! class_sethelpsymbol(sigm2f_class, gensym("iemhelp/help-m2f~")); ! } ! --- 1,125 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! ! /* ----------- m2f~ ----------- */ ! /* --------- obsolete --------- */ ! ! #define M2FTABSIZE 2048 ! ! float *iem_m2f_table=(float *)0L; ! ! static t_class *sigm2f_class; ! ! typedef struct _sigm2f ! { ! t_object x_obj; ! float x_msi; ! } t_sigm2f; ! ! static void *sigm2f_new(void) ! { ! t_sigm2f *x = (t_sigm2f *)pd_new(sigm2f_class); ! outlet_new(&x->x_obj, gensym("signal")); ! x->x_msi = 0; ! return (x); ! } ! ! static t_int *sigm2f_perform(t_int *w) ! { ! t_float *in = (t_float *)(w[1]); ! t_float *out = (t_float *)(w[2]); ! t_sigm2f *x = (t_sigm2f *)(w[3]); ! int n = (int)(w[4]); ! float *tab = iem_m2f_table, *addr, f1, f2, frac, iinn; ! double dphase; ! int normhipart; ! union tabfudge tf; ! ! tf.tf_d = UNITBIT32; ! normhipart = tf.tf_i[HIOFFSET]; ! ! #if 0 /* this is the readable version of the code. */ ! while (n--) ! { ! iinn = (*in++)*10.0+670.0; ! dphase = (double)iinn + UNITBIT32; ! tf.tf_d = dphase; ! addr = tab + (tf.tf_i[HIOFFSET] & (M2FTABSIZE-1)); ! tf.tf_i[HIOFFSET] = normhipart; ! frac = tf.tf_d - UNITBIT32; ! f1 = addr[0]; ! f2 = addr[1]; ! *out++ = f1 + frac * (f2 - f1); ! } ! #endif ! #if 1 /* this is the same, unwrapped by hand. */ ! iinn = (*in++)*10.0+670.0; ! dphase = (double)iinn + UNITBIT32; ! tf.tf_d = dphase; ! addr = tab + (tf.tf_i[HIOFFSET] & (M2FTABSIZE-1)); ! tf.tf_i[HIOFFSET] = normhipart; ! while (--n) ! { ! iinn = (*in++)*10.0+670.0; ! dphase = (double)iinn + UNITBIT32; ! frac = tf.tf_d - UNITBIT32; ! tf.tf_d = dphase; ! f1 = addr[0]; ! f2 = addr[1]; ! addr = tab + (tf.tf_i[HIOFFSET] & (M2FTABSIZE-1)); ! *out++ = f1 + frac * (f2 - f1); ! tf.tf_i[HIOFFSET] = normhipart; ! } ! frac = tf.tf_d - UNITBIT32; ! f1 = addr[0]; ! f2 = addr[1]; ! *out++ = f1 + frac * (f2 - f1); ! #endif ! return (w+5); ! } ! ! static void sigm2f_dsp(t_sigm2f *x, t_signal **sp) ! { ! dsp_add(sigm2f_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n); ! } ! ! static void sigm2f_maketable(void) ! { ! union tabfudge tf; ! ! if(!iem_m2f_table) ! { ! int i; ! float *fp, midi, refexp=440.0*exp(-5.75*log(2.0)); ! ! iem_m2f_table = (float *)getbytes(sizeof(float) * (M2FTABSIZE+1)); ! for(i=0, fp=iem_m2f_table, midi=-67.0; i<=M2FTABSIZE; i++, fp++, midi+=0.1) ! *fp = refexp * exp(0.057762265047 * midi); ! } ! tf.tf_d = UNITBIT32 + 0.5; ! if((unsigned)tf.tf_i[LOWOFFSET] != 0x80000000) ! bug("m2f~: unexpected machine alignment"); ! } ! ! void sigm2f_setup(void) ! { ! sigm2f_class = class_new(gensym("m2f~"), (t_newmethod)sigm2f_new, 0, ! sizeof(t_sigm2f), 0, 0); ! CLASS_MAINSIGNALIN(sigm2f_class, t_sigm2f, x_msi); ! class_addmethod(sigm2f_class, (t_method)sigm2f_dsp, gensym("dsp"), 0); ! sigm2f_maketable(); ! class_sethelpsymbol(sigm2f_class, gensym("iemhelp/help-m2f~")); ! }
Index: stripfilename.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/stripfilename.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** stripfilename.c 18 May 2004 21:33:33 -0000 1.1.1.1 --- stripfilename.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,81 **** ! /* Copyright (c) 1997-2003 Miller Puckette. ! * For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* -------------------------- stripfilename ------------------------------ */ ! ! static t_class *stripfilename_class; ! ! typedef struct _stripfilename ! { ! t_object x_obj; ! int x_nr_char; ! } t_stripfilename; ! ! static void stripfilename_symbol(t_stripfilename *x, t_symbol *s) ! { ! if(x->x_nr_char < 0) ! { ! int len = strlen(s->s_name); ! char *str=(char *)getbytes((len+2)*sizeof(char)); ! int i=len + x->x_nr_char; ! ! strcpy(str, s->s_name); ! if(i < 0) ! i = 0; ! str[i] = 0; ! outlet_symbol(x->x_obj.ob_outlet, gensym(str)); ! freebytes(str, (len+2)*sizeof(char)); ! } ! else if(x->x_nr_char > 0) ! { ! int len = strlen(s->s_name); ! char *str=(char *)getbytes((len+2)*sizeof(char)); ! int i=x->x_nr_char; ! ! strcpy(str, s->s_name); ! if(i > len) ! i = len; ! outlet_symbol(x->x_obj.ob_outlet, gensym(str+i)); ! freebytes(str, (len+2)*sizeof(char)); ! } ! else ! outlet_symbol(x->x_obj.ob_outlet, s); ! } ! ! static void stripfilename_set(t_stripfilename *x, t_floatarg nr_char) ! { ! x->x_nr_char = (int)nr_char; ! } ! ! static void *stripfilename_new(t_floatarg nr_char) ! { ! t_stripfilename *x = (t_stripfilename *)pd_new(stripfilename_class); ! ! stripfilename_set(x, nr_char); ! outlet_new(&x->x_obj, &s_symbol); ! return (x); ! } ! ! void stripfilename_setup(void) ! { ! stripfilename_class = class_new(gensym("stripfilename"), (t_newmethod)stripfilename_new, ! 0, sizeof(t_stripfilename), 0, A_DEFFLOAT, 0); ! class_addsymbol(stripfilename_class, stripfilename_symbol); ! class_addmethod(stripfilename_class, (t_method)stripfilename_set, gensym("set"), A_FLOAT, 0); ! class_sethelpsymbol(stripfilename_class, gensym("iemhelp/help-stripfilename")); ! } --- 1,81 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! ! /* -------------------------- stripfilename ----------------------- */ ! /* -- strips the first n or last n characters, depending on sign -- */ ! /* ------- of the initial argument (set message argument) --------- */ ! ! static t_class *stripfilename_class; ! ! typedef struct _stripfilename ! { ! t_object x_obj; ! int x_nr_char; ! } t_stripfilename; ! ! static void stripfilename_symbol(t_stripfilename *x, t_symbol *s) ! { ! if(x->x_nr_char < 0) ! { ! int len = strlen(s->s_name); ! char *str=(char *)getbytes((len+2)*sizeof(char)); ! int i=len + x->x_nr_char; ! ! strcpy(str, s->s_name); ! if(i < 0) ! i = 0; ! str[i] = 0; ! outlet_symbol(x->x_obj.ob_outlet, gensym(str)); ! freebytes(str, (len+2)*sizeof(char)); ! } ! else if(x->x_nr_char > 0) ! { ! int len = strlen(s->s_name); ! char *str=(char *)getbytes((len+2)*sizeof(char)); ! int i=x->x_nr_char; ! ! strcpy(str, s->s_name); ! if(i > len) ! i = len; ! outlet_symbol(x->x_obj.ob_outlet, gensym(str+i)); ! freebytes(str, (len+2)*sizeof(char)); ! } ! else ! outlet_symbol(x->x_obj.ob_outlet, s); ! } ! ! static void stripfilename_set(t_stripfilename *x, t_floatarg nr_char) ! { ! x->x_nr_char = (int)nr_char; ! } ! ! static void *stripfilename_new(t_floatarg nr_char) ! { ! t_stripfilename *x = (t_stripfilename *)pd_new(stripfilename_class); ! ! stripfilename_set(x, nr_char); ! outlet_new(&x->x_obj, &s_symbol); ! return (x); ! } ! ! void stripfilename_setup(void) ! { ! stripfilename_class = class_new(gensym("stripfilename"), (t_newmethod)stripfilename_new, ! 0, sizeof(t_stripfilename), 0, A_DEFFLOAT, 0); ! class_addsymbol(stripfilename_class, stripfilename_symbol); ! class_addmethod(stripfilename_class, (t_method)stripfilename_set, gensym("set"), A_FLOAT, 0); ! class_sethelpsymbol(stripfilename_class, gensym("iemhelp/help-stripfilename")); ! }
Index: sigfade.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/sigfade.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** sigfade.c 18 May 2004 21:33:33 -0000 1.1.1.1 --- sigfade.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,183 **** ! /* Copyright (c) 1997-2003 Miller Puckette. ! * For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ------------------------ fade~ ----------------------------- */ ! ! float *iem_fade_table_lin=(float *)0L; ! float *iem_fade_table_linsqrt=(float *)0L; ! float *iem_fade_table_sqrt=(float *)0L; ! float *iem_fade_table_sin=(float *)0L; ! float *iem_fade_table_sinhann=(float *)0L; ! float *iem_fade_table_hann=(float *)0L; ! ! static t_class *sigfade_class; ! ! typedef struct _sigfade ! { ! t_object x_obj; ! float *x_table; ! float x_f; ! } t_sigfade; ! ! static void sigfade_set(t_sigfade *x, t_symbol *s) ! { ! if(!strcmp(s->s_name, "_lin")) ! x->x_table = iem_fade_table_lin; ! else if(!strcmp(s->s_name, "_linsqrt")) ! x->x_table = iem_fade_table_linsqrt; ! else if(!strcmp(s->s_name, "_sqrt")) ! x->x_table = iem_fade_table_sqrt; ! else if(!strcmp(s->s_name, "_sin")) ! x->x_table = iem_fade_table_sin; ! else if(!strcmp(s->s_name, "_sinhann")) ! x->x_table = iem_fade_table_sinhann; ! else if(!strcmp(s->s_name, "_hann")) ! x->x_table = iem_fade_table_hann; ! } ! ! static void *sigfade_new(t_symbol *s) ! { ! t_sigfade *x = (t_sigfade *)pd_new(sigfade_class); ! outlet_new(&x->x_obj, gensym("signal")); ! x->x_f = 0; ! x->x_table = iem_fade_table_lin; ! sigfade_set(x, s); ! return (x); ! } ! ! static t_int *sigfade_perform(t_int *w) ! { ! t_float *in = (t_float *)(w[1]); ! t_float *out = (t_float *)(w[2]); ! t_sigfade *x = (t_sigfade *)(w[3]); ! int n = (int)(w[4]); ! float *tab = x->x_table, *addr, f1, f2, frac; ! double dphase; ! int normhipart; ! union tabfudge tf; ! ! tf.tf_d = UNITBIT32; ! normhipart = tf.tf_i[HIOFFSET]; ! ! #if 0 /* this is the readable version of the code. */ ! while (n--) ! { ! dphase = (double)(*in++ * (float)(COSTABSIZE) * 0.99999) + UNITBIT32; ! tf.tf_d = dphase; ! addr = tab + (tf.tf_i[HIOFFSET] & (COSTABSIZE-1)); ! tf.tf_i[HIOFFSET] = normhipart; ! frac = tf.tf_d - UNITBIT32; ! f1 = addr[0]; ! f2 = addr[1]; ! *out++ = f1 + frac * (f2 - f1); ! } ! #endif ! #if 1 /* this is the same, unwrapped by hand. */ ! dphase = (double)(*in++ * (float)(COSTABSIZE) * 0.99999) + UNITBIT32; ! tf.tf_d = dphase; ! addr = tab + (tf.tf_i[HIOFFSET] & (COSTABSIZE-1)); ! tf.tf_i[HIOFFSET] = normhipart; ! while (--n) ! { ! dphase = (double)(*in++ * (float)(COSTABSIZE) * 0.99999) + UNITBIT32; ! frac = tf.tf_d - UNITBIT32; ! tf.tf_d = dphase; ! f1 = addr[0]; ! f2 = addr[1]; ! addr = tab + (tf.tf_i[HIOFFSET] & (COSTABSIZE-1)); ! *out++ = f1 + frac * (f2 - f1); ! tf.tf_i[HIOFFSET] = normhipart; ! } ! frac = tf.tf_d - UNITBIT32; ! f1 = addr[0]; ! f2 = addr[1]; ! *out++ = f1 + frac * (f2 - f1); ! #endif ! return (w+5); ! } ! ! static void sigfade_dsp(t_sigfade *x, t_signal **sp) ! { ! dsp_add(sigfade_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n); ! } ! ! static void sigfade_maketable(void) ! { ! int i; ! float *fp, phase, fff,phsinc = 0.5*3.141592653 / ((float)COSTABSIZE*0.99999); ! union tabfudge tf; ! ! if(!iem_fade_table_sin) ! { ! iem_fade_table_sin = (float *)getbytes(sizeof(float) * (COSTABSIZE+1)); ! for(i=COSTABSIZE+1, fp=iem_fade_table_sin, phase=0; i--; fp++, phase+=phsinc) ! *fp = sin(phase); ! } ! if(!iem_fade_table_sinhann) ! { ! iem_fade_table_sinhann = (float *)getbytes(sizeof(float) * (COSTABSIZE+1)); ! for(i=COSTABSIZE+1, fp=iem_fade_table_sinhann, phase=0; i--; fp++, phase+=phsinc) ! { ! fff = sin(phase); ! *fp = fff*sqrt(fff); ! } ! } ! if(!iem_fade_table_hann) ! { ! iem_fade_table_hann = (float *)getbytes(sizeof(float) * (COSTABSIZE+1)); ! for(i=COSTABSIZE+1, fp=iem_fade_table_hann, phase=0; i--; fp++, phase+=phsinc) ! { ! fff = sin(phase); ! *fp = fff*fff; ! } ! } ! phsinc = 1.0 / ((float)COSTABSIZE*0.99999); ! if(!iem_fade_table_lin) ! { ! iem_fade_table_lin = (float *)getbytes(sizeof(float) * (COSTABSIZE+1)); ! for(i=COSTABSIZE+1, fp=iem_fade_table_lin, phase=0; i--; fp++, phase+=phsinc) ! *fp = phase; ! } ! if(!iem_fade_table_linsqrt) ! { ! iem_fade_table_linsqrt = (float *)getbytes(sizeof(float) * (COSTABSIZE+1)); ! for(i=COSTABSIZE+1, fp=iem_fade_table_linsqrt, phase=0; i--; fp++, phase+=phsinc) ! *fp = pow(phase, 0.75); ! } ! if(!iem_fade_table_sqrt) ! { ! iem_fade_table_sqrt = (float *)getbytes(sizeof(float) * (COSTABSIZE+1)); ! for(i=COSTABSIZE+1, fp=iem_fade_table_sqrt, phase=0; i--; fp++, phase+=phsinc) ! *fp = sqrt(phase); ! } ! tf.tf_d = UNITBIT32 + 0.5; ! if((unsigned)tf.tf_i[LOWOFFSET] != 0x80000000) ! bug("fade~: unexpected machine alignment"); ! } ! ! void sigfade_setup(void) ! { ! sigfade_class = class_new(gensym("fade~"), (t_newmethod)sigfade_new, 0, ! sizeof(t_sigfade), 0, A_DEFSYM, 0); ! CLASS_MAINSIGNALIN(sigfade_class, t_sigfade, x_f); ! class_addmethod(sigfade_class, (t_method)sigfade_dsp, gensym("dsp"), 0); ! class_addmethod(sigfade_class, (t_method)sigfade_set, gensym("set"), A_DEFSYM, 0); ! class_sethelpsymbol(sigfade_class, gensym("iemhelp/help-fade~")); ! sigfade_maketable(); ! } ! --- 1,184 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ------------------------- fade~ ----------------------------- */ ! /* --- signal lookup tabel object with input range of 0 to 1 --- */ ! /* ---- converts a linear signal ramp to the half of a : ------ */ ! /* -- sine-wave, hanning-wave, squareroot-wave or mixes of it -- */ ! ! float *iem_fade_table_lin=(float *)0L; ! float *iem_fade_table_linsqrt=(float *)0L; ! float *iem_fade_table_sqrt=(float *)0L; ! float *iem_fade_table_sin=(float *)0L; ! float *iem_fade_table_sinhann=(float *)0L; ! float *iem_fade_table_hann=(float *)0L; ! ! static t_class *sigfade_class; ! ! typedef struct _sigfade ! { ! t_object x_obj; ! float *x_table; ! float x_f; ! } t_sigfade; ! ! static void sigfade_set(t_sigfade *x, t_symbol *s) ! { ! if(!strcmp(s->s_name, "_lin")) ! x->x_table = iem_fade_table_lin; ! else if(!strcmp(s->s_name, "_linsqrt")) ! x->x_table = iem_fade_table_linsqrt; ! else if(!strcmp(s->s_name, "_sqrt")) ! x->x_table = iem_fade_table_sqrt; ! else if(!strcmp(s->s_name, "_sin")) ! x->x_table = iem_fade_table_sin; ! else if(!strcmp(s->s_name, "_sinhann")) ! x->x_table = iem_fade_table_sinhann; ! else if(!strcmp(s->s_name, "_hann")) ! x->x_table = iem_fade_table_hann; ! } ! ! static void *sigfade_new(t_symbol *s) ! { ! t_sigfade *x = (t_sigfade *)pd_new(sigfade_class); ! outlet_new(&x->x_obj, gensym("signal")); ! x->x_f = 0; ! x->x_table = iem_fade_table_lin; ! sigfade_set(x, s); ! return (x); ! } ! ! static t_int *sigfade_perform(t_int *w) ! { ! t_float *in = (t_float *)(w[1]); ! t_float *out = (t_float *)(w[2]); ! t_sigfade *x = (t_sigfade *)(w[3]); ! int n = (int)(w[4]); ! float *tab = x->x_table, *addr, f1, f2, frac; ! double dphase; ! int normhipart; ! union tabfudge tf; ! ! tf.tf_d = UNITBIT32; ! normhipart = tf.tf_i[HIOFFSET]; ! ! #if 0 /* this is the readable version of the code. */ ! while (n--) ! { ! dphase = (double)(*in++ * (float)(COSTABSIZE) * 0.99999) + UNITBIT32; ! tf.tf_d = dphase; ! addr = tab + (tf.tf_i[HIOFFSET] & (COSTABSIZE-1)); ! tf.tf_i[HIOFFSET] = normhipart; ! frac = tf.tf_d - UNITBIT32; ! f1 = addr[0]; ! f2 = addr[1]; ! *out++ = f1 + frac * (f2 - f1); ! } ! #endif ! #if 1 /* this is the same, unwrapped by hand. */ ! dphase = (double)(*in++ * (float)(COSTABSIZE) * 0.99999) + UNITBIT32; ! tf.tf_d = dphase; ! addr = tab + (tf.tf_i[HIOFFSET] & (COSTABSIZE-1)); ! tf.tf_i[HIOFFSET] = normhipart; ! while (--n) ! { ! dphase = (double)(*in++ * (float)(COSTABSIZE) * 0.99999) + UNITBIT32; ! frac = tf.tf_d - UNITBIT32; ! tf.tf_d = dphase; ! f1 = addr[0]; ! f2 = addr[1]; ! addr = tab + (tf.tf_i[HIOFFSET] & (COSTABSIZE-1)); ! *out++ = f1 + frac * (f2 - f1); ! tf.tf_i[HIOFFSET] = normhipart; ! } ! frac = tf.tf_d - UNITBIT32; ! f1 = addr[0]; ! f2 = addr[1]; ! *out++ = f1 + frac * (f2 - f1); ! #endif ! return (w+5); ! } ! ! static void sigfade_dsp(t_sigfade *x, t_signal **sp) ! { ! dsp_add(sigfade_perform, 4, sp[0]->s_vec, sp[1]->s_vec, x, sp[0]->s_n); ! } ! ! static void sigfade_maketable(void) ! { ! int i; ! float *fp, phase, fff,phsinc = 0.5*3.141592653 / ((float)COSTABSIZE*0.99999); ! union tabfudge tf; ! ! if(!iem_fade_table_sin) ! { ! iem_fade_table_sin = (float *)getbytes(sizeof(float) * (COSTABSIZE+1)); ! for(i=COSTABSIZE+1, fp=iem_fade_table_sin, phase=0; i--; fp++, phase+=phsinc) ! *fp = sin(phase); ! } ! if(!iem_fade_table_sinhann) ! { ! iem_fade_table_sinhann = (float *)getbytes(sizeof(float) * (COSTABSIZE+1)); ! for(i=COSTABSIZE+1, fp=iem_fade_table_sinhann, phase=0; i--; fp++, phase+=phsinc) ! { ! fff = sin(phase); ! *fp = fff*sqrt(fff); ! } ! } ! if(!iem_fade_table_hann) ! { ! iem_fade_table_hann = (float *)getbytes(sizeof(float) * (COSTABSIZE+1)); ! for(i=COSTABSIZE+1, fp=iem_fade_table_hann, phase=0; i--; fp++, phase+=phsinc) ! { ! fff = sin(phase); ! *fp = fff*fff; ! } ! } ! phsinc = 1.0 / ((float)COSTABSIZE*0.99999); ! if(!iem_fade_table_lin) ! { ! iem_fade_table_lin = (float *)getbytes(sizeof(float) * (COSTABSIZE+1)); ! for(i=COSTABSIZE+1, fp=iem_fade_table_lin, phase=0; i--; fp++, phase+=phsinc) ! *fp = phase; ! } ! if(!iem_fade_table_linsqrt) ! { ! iem_fade_table_linsqrt = (float *)getbytes(sizeof(float) * (COSTABSIZE+1)); ! for(i=COSTABSIZE+1, fp=iem_fade_table_linsqrt, phase=0; i--; fp++, phase+=phsinc) ! *fp = pow(phase, 0.75); ! } ! if(!iem_fade_table_sqrt) ! { ! iem_fade_table_sqrt = (float *)getbytes(sizeof(float) * (COSTABSIZE+1)); ! for(i=COSTABSIZE+1, fp=iem_fade_table_sqrt, phase=0; i--; fp++, phase+=phsinc) ! *fp = sqrt(phase); ! } ! tf.tf_d = UNITBIT32 + 0.5; ! if((unsigned)tf.tf_i[LOWOFFSET] != 0x80000000) ! bug("fade~: unexpected machine alignment"); ! } ! ! void sigfade_setup(void) ! { ! sigfade_class = class_new(gensym("fade~"), (t_newmethod)sigfade_new, 0, ! sizeof(t_sigfade), 0, A_DEFSYM, 0); ! CLASS_MAINSIGNALIN(sigfade_class, t_sigfade, x_f); ! class_addmethod(sigfade_class, (t_method)sigfade_dsp, gensym("dsp"), 0); ! class_addmethod(sigfade_class, (t_method)sigfade_set, gensym("set"), A_DEFSYM, 0); ! class_sethelpsymbol(sigfade_class, gensym("iemhelp/help-fade~")); ! sigfade_maketable(); ! }
Index: transf_fader.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/transf_fader.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** transf_fader.c 18 May 2004 21:33:33 -0000 1.1.1.1 --- transf_fader.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,153 **** ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <math.h> ! #include <stdio.h> ! #include <string.h> ! ! ! /* -------------------------- transf_fader ------------------------------ */ ! ! typedef struct _transf_fader ! { ! t_object x_obj; ! int x_size; ! int x_message; ! float *x_array; ! } t_transf_fader; ! ! static t_class *transf_fader_class; ! ! static void transf_fader_pairs(t_transf_fader *x, t_symbol *s, int argc, t_atom *argv) ! { ! if(argc >= 4) ! { ! int i, j, k, ac=argc/2; ! int n=1000; ! int i_prev=0; ! int first=1; ! int i_delta; ! float val_delta; ! float delta; ! float val_prev=0.0f; ! float val=0.0f; ! float *vec=x->x_array; ! float fad_in, fad_out; ! ! for(j=0; j<n; j++) ! { ! vec[j] = -123456.0f; ! } ! ! for(j=0; j<ac; j++) ! { ! fad_in = atom_getfloat(argv++); ! while(fad_in < 0.0f) ! fad_in = 0.0f; ! while(fad_in > 1000.0f) ! fad_in = 1000.0f; ! ! fad_out = atom_getfloat(argv++); ! while(fad_out < -123455.0f) ! fad_out = -123455.0f; ! ! i = (int)fad_in; ! vec[i] = fad_out; ! } ! ! for(j=0; j<n; j++) ! { ! if(vec[j] > -123456.0f) ! { ! if(first) ! { ! first = 0; ! i_prev = j; ! val_prev = vec[j]; ! } ! else ! { ! i = j; ! val = vec[j]; ! i_delta = i - i_prev; ! val_delta = val - val_prev; ! if(i_delta > 1) ! { ! delta = val_delta / (float)i_delta; ! for(k=i_prev+1; k<i; k++) ! { ! vec[k] = val_prev + delta*(float)(k - i_prev); ! } ! } ! i_prev = i; ! val_prev = val; ! } ! } ! } ! } ! else ! { ! if(x->x_message) ! post("transf_fader-ERROR: less than 2 pairs make no sense"); ! } ! } ! ! static void transf_fader_float(t_transf_fader *x, t_floatarg fad_in) ! { ! float fad_out; ! float *vec=x->x_array; ! float fract; ! int i; ! ! while(fad_in < 0.0f) ! fad_in = 0.0f; ! while(fad_in > 999.0f) ! fad_in = 999.0f; ! ! i = (int)fad_in; ! fract = fad_in - (float)i; ! fad_out = vec[i] + fract*(vec[i+1] - vec[i]); ! if(fad_out > -123455.0f) ! outlet_float(x->x_obj.ob_outlet, fad_out); ! } ! ! static void transf_fader_free(t_transf_fader *x) ! { ! freebytes(x->x_array, x->x_size * sizeof(float)); ! } ! ! static void *transf_fader_new(t_symbol *s, int argc, t_atom *argv) ! { ! t_transf_fader *x = (t_transf_fader *)pd_new(transf_fader_class); ! int i, n; ! ! x->x_size = 1001; ! x->x_message = 0; ! x->x_array = (float *)getbytes(x->x_size * sizeof(float)); ! n = x->x_size; ! for(i=0; i<n; i++) ! x->x_array[i] = -123456.0f; ! transf_fader_pairs(x, gensym("pairs"), argc, argv); ! x->x_message = 1; ! outlet_new(&x->x_obj, &s_float); ! return (x); ! } ! ! void transf_fader_setup(void) ! { ! transf_fader_class = class_new(gensym("transf_fader"), (t_newmethod)transf_fader_new, (t_method)transf_fader_free, ! sizeof(t_transf_fader), 0, A_GIMME, 0); ! class_addfloat(transf_fader_class, (t_method)transf_fader_float); ! class_addmethod(transf_fader_class, (t_method)transf_fader_pairs, gensym("pairs"), A_GIMME, 0); ! class_sethelpsymbol(transf_fader_class, gensym("iemhelp/help-transf_fader")); ! } --- 1,154 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdio.h> ! #include <string.h> ! ! ! /* ------------------------ transf_fader ----------------------- */ ! /* -- this loopkup tabel objekt makes a 2-point interpolation -- */ ! /* --------- between the pairs of determinating points --------- */ ! ! typedef struct _transf_fader ! { ! t_object x_obj; ! int x_size; ! int x_message; ! float *x_array; ! } t_transf_fader; ! ! static t_class *transf_fader_class; ! ! static void transf_fader_pairs(t_transf_fader *x, t_symbol *s, int argc, t_atom *argv) ! { ! if(argc >= 4) ! { ! int i, j, k, ac=argc/2; ! int n=1000; ! int i_prev=0; ! int first=1; ! int i_delta; ! float val_delta; ! float delta; ! float val_prev=0.0f; ! float val=0.0f; ! float *vec=x->x_array; ! float fad_in, fad_out; ! ! for(j=0; j<n; j++) ! { ! vec[j] = -123456.0f; ! } ! ! for(j=0; j<ac; j++) ! { ! fad_in = atom_getfloat(argv++); ! while(fad_in < 0.0f) ! fad_in = 0.0f; ! while(fad_in > 1000.0f) ! fad_in = 1000.0f; ! ! fad_out = atom_getfloat(argv++); ! while(fad_out < -123455.0f) ! fad_out = -123455.0f; ! ! i = (int)fad_in; ! vec[i] = fad_out; ! } ! ! for(j=0; j<n; j++) ! { ! if(vec[j] > -123456.0f) ! { ! if(first) ! { ! first = 0; ! i_prev = j; ! val_prev = vec[j]; ! } ! else ! { ! i = j; ! val = vec[j]; ! i_delta = i - i_prev; ! val_delta = val - val_prev; ! if(i_delta > 1) ! { ! delta = val_delta / (float)i_delta; ! for(k=i_prev+1; k<i; k++) ! { ! vec[k] = val_prev + delta*(float)(k - i_prev); ! } ! } ! i_prev = i; ! val_prev = val; ! } ! } ! } ! } ! else ! { ! if(x->x_message) ! post("transf_fader-ERROR: less than 2 pairs make no sense"); ! } ! } ! ! static void transf_fader_float(t_transf_fader *x, t_floatarg fad_in) ! { ! float fad_out; ! float *vec=x->x_array; ! float fract; ! int i; ! ! while(fad_in < 0.0f) ! fad_in = 0.0f; ! while(fad_in > 999.0f) ! fad_in = 999.0f; ! ! i = (int)fad_in; ! fract = fad_in - (float)i; ! fad_out = vec[i] + fract*(vec[i+1] - vec[i]); ! if(fad_out > -123455.0f) ! outlet_float(x->x_obj.ob_outlet, fad_out); ! } ! ! static void transf_fader_free(t_transf_fader *x) ! { ! freebytes(x->x_array, x->x_size * sizeof(float)); ! } ! ! static void *transf_fader_new(t_symbol *s, int argc, t_atom *argv) ! { ! t_transf_fader *x = (t_transf_fader *)pd_new(transf_fader_class); ! int i, n; ! ! x->x_size = 1001; ! x->x_message = 0; ! x->x_array = (float *)getbytes(x->x_size * sizeof(float)); ! n = x->x_size; ! for(i=0; i<n; i++) ! x->x_array[i] = -123456.0f; ! transf_fader_pairs(x, gensym("pairs"), argc, argv); ! x->x_message = 1; ! outlet_new(&x->x_obj, &s_float); ! return (x); ! } ! ! void transf_fader_setup(void) ! { ! transf_fader_class = class_new(gensym("transf_fader"), (t_newmethod)transf_fader_new, (t_method)transf_fader_free, ! sizeof(t_transf_fader), 0, A_GIMME, 0); ! class_addfloat(transf_fader_class, (t_method)transf_fader_float); ! class_addmethod(transf_fader_class, (t_method)transf_fader_pairs, gensym("pairs"), A_GIMME, 0); ! class_sethelpsymbol(transf_fader_class, gensym("iemhelp/help-transf_fader")); ! }
Index: dollarg.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/dollarg.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** dollarg.c 18 May 2004 21:33:31 -0000 1.1.1.1 --- dollarg.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,113 **** ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "g_canvas.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! EXTERN void canvas_getargs(int *argcp, t_atom **argvp); ! ! /* ------------------------ dollarg ---------------------------- */ ! ! static t_class *dollarg_class; ! ! typedef struct _dollarg ! { ! t_object x_obj; ! void *x_outlet_ac; ! t_atom *x_at; ! int x_ac; ! } t_dollarg; ! ! static void dollarg_float(t_dollarg *x, t_floatarg f) ! { ! int i = (int)f; ! ! if(!i) ! { ! outlet_float(x->x_outlet_ac, x->x_ac); ! if(x->x_ac) ! outlet_list(x->x_obj.ob_outlet, &s_list, x->x_ac, x->x_at); ! } ! else if(i > 0) ! { ! if(i <= x->x_ac) ! { ! outlet_float(x->x_outlet_ac, i); ! if(IS_A_FLOAT(x->x_at, i-1)) ! outlet_float(x->x_obj.ob_outlet, atom_getfloatarg(i-1, x->x_ac, x->x_at)); ! else if(IS_A_SYMBOL(x->x_at, i-1)) ! outlet_symbol(x->x_obj.ob_outlet, atom_getsymbolarg(i-1, x->x_ac, x->x_at)); ! } ! else ! outlet_float(x->x_outlet_ac, 0); ! } ! else ! { ! int j = x->x_ac + i; ! ! if(j >= 0) ! { ! outlet_float(x->x_outlet_ac, j+1); ! if(IS_A_FLOAT(x->x_at, j)) ! outlet_float(x->x_obj.ob_outlet, atom_getfloatarg(j, x->x_ac, x->x_at)); ! else if(IS_A_SYMBOL(x->x_at, j)) ! outlet_symbol(x->x_obj.ob_outlet, atom_getsymbolarg(j, x->x_ac, x->x_at)); ! } ! else ! outlet_float(x->x_outlet_ac, 0); ! } ! } ! ! static void dollarg_bang(t_dollarg *x) ! { ! dollarg_float(x, 0.0f); ! } ! ! static void dollarg_free(t_dollarg *x) ! { ! if(x->x_ac) ! freebytes(x->x_at, x->x_ac * sizeof(t_atom)); ! } ! ! static void *dollarg_new(void) ! { ! t_dollarg *x = (t_dollarg *)pd_new(dollarg_class); ! t_glist *glist=(t_glist *)canvas_getcurrent(); ! t_canvas *canvas=glist_getcanvas(glist); ! int pargc; ! t_atom *pargv, *at; ! ! canvas_setcurrent(canvas); ! canvas_getargs(&pargc, &pargv); ! canvas_unsetcurrent(canvas); ! x->x_at = (t_atom *)getbytes(pargc*sizeof(t_atom)); ! x->x_ac = pargc; ! at = x->x_at; ! while(pargc--) ! *at++ = *pargv++; ! outlet_new(&x->x_obj, &s_list); ! x->x_outlet_ac = outlet_new(&x->x_obj, &s_float); ! return (x); ! } ! ! void dollarg_setup(void) ! { ! dollarg_class = class_new(gensym("dollarg"), (t_newmethod)dollarg_new, ! (t_method)dollarg_free, sizeof(t_dollarg), 0, 0); ! class_addcreator((t_newmethod)dollarg_new, gensym("$n"), 0); ! class_addbang(dollarg_class, (t_method)dollarg_bang); ! class_addfloat(dollarg_class, (t_method)dollarg_float); ! class_sethelpsymbol(dollarg_class, gensym("iemhelp/help-dollarg")); ! } --- 1,110 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #include "m_pd.h" ! #include "g_canvas.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! EXTERN void canvas_getargs(int *argcp, t_atom **argvp); ! ! /* ------------------------- dollarg ---------------------------- */ ! /* --- dollar-arguments, output the initial-arguments and the --- */ ! /* ------- number of them of the parent abstraction-patch ------- */ ! ! static t_class *dollarg_class; ! ! typedef struct _dollarg ! { ! t_object x_obj; ! void *x_outlet_ac; ! t_atom *x_at; ! int x_ac; ! } t_dollarg; ! ! static void dollarg_float(t_dollarg *x, t_floatarg f) ! { ! int i = (int)f; ! ! if(!i) ! { ! outlet_float(x->x_outlet_ac, x->x_ac); ! if(x->x_ac) ! outlet_list(x->x_obj.ob_outlet, &s_list, x->x_ac, x->x_at); ! } ! else if(i > 0) ! { ! if(i <= x->x_ac) ! { ! outlet_float(x->x_outlet_ac, i); ! if(IS_A_FLOAT(x->x_at, i-1)) ! outlet_float(x->x_obj.ob_outlet, atom_getfloatarg(i-1, x->x_ac, x->x_at)); ! else if(IS_A_SYMBOL(x->x_at, i-1)) ! outlet_symbol(x->x_obj.ob_outlet, atom_getsymbolarg(i-1, x->x_ac, x->x_at)); ! } ! else ! outlet_float(x->x_outlet_ac, 0); ! } ! else ! { ! int j = x->x_ac + i; ! ! if(j >= 0) ! { ! outlet_float(x->x_outlet_ac, j+1); ! if(IS_A_FLOAT(x->x_at, j)) ! outlet_float(x->x_obj.ob_outlet, atom_getfloatarg(j, x->x_ac, x->x_at)); ! else if(IS_A_SYMBOL(x->x_at, j)) ! outlet_symbol(x->x_obj.ob_outlet, atom_getsymbolarg(j, x->x_ac, x->x_at)); ! } ! else ! outlet_float(x->x_outlet_ac, 0); ! } ! } ! ! static void dollarg_bang(t_dollarg *x) ! { ! dollarg_float(x, 0.0f); ! } ! ! static void dollarg_free(t_dollarg *x) ! { ! if(x->x_ac) ! freebytes(x->x_at, x->x_ac * sizeof(t_atom)); ! } ! ! static void *dollarg_new(void) ! { ! t_dollarg *x = (t_dollarg *)pd_new(dollarg_class); ! t_glist *glist=(t_glist *)canvas_getcurrent(); ! t_canvas *canvas=glist_getcanvas(glist); ! int pargc; ! t_atom *pargv, *at; ! ! canvas_setcurrent(canvas); ! canvas_getargs(&pargc, &pargv); ! canvas_unsetcurrent(canvas); ! x->x_at = (t_atom *)getbytes(pargc*sizeof(t_atom)); ! x->x_ac = pargc; ! at = x->x_at; ! while(pargc--) ! *at++ = *pargv++; ! outlet_new(&x->x_obj, &s_list); ! x->x_outlet_ac = outlet_new(&x->x_obj, &s_float); ! return (x); ! } ! ! void dollarg_setup(void) ! { ! dollarg_class = class_new(gensym("dollarg"), (t_newmethod)dollarg_new, ! (t_method)dollarg_free, sizeof(t_dollarg), 0, 0); ! class_addcreator((t_newmethod)dollarg_new, gensym("$n"), 0); ! class_addbang(dollarg_class, (t_method)dollarg_bang); ! class_addfloat(dollarg_class, (t_method)dollarg_float); ! class_sethelpsymbol(dollarg_class, gensym("iemhelp/help-dollarg")); ! }
Index: toggle_mess.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/toggle_mess.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** toggle_mess.c 18 May 2004 21:33:33 -0000 1.1.1.1 --- toggle_mess.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,119 **** ! /* Copyright (c) 1997-2003 Miller Puckette. ! * For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ------------------------ toggle_mess ---------------------------- */ ! static t_class *toggle_mess_class; ! ! typedef struct _toggle_mess ! { ! t_object x_obj; ! int x_index; ! int x_ac; ! t_atom *x_at; ! void *x_out_mid_sym; ! void *x_out_rght_flt; ! t_symbol *x_set; ! } t_toggle_mess; ! ! static void toggle_mess_bang(t_toggle_mess *x) ! { ! int i = x->x_index; ! ! outlet_float(x->x_out_rght_flt, (float)i); ! if(IS_A_FLOAT(x->x_at, i)) ! outlet_float(x->x_out_mid_sym, atom_getfloat(&x->x_at[i])); ! else ! outlet_anything(x->x_out_mid_sym, atom_getsymbol(&x->x_at[i]), 0, x->x_at); ! outlet_anything(x->x_obj.ob_outlet, x->x_set, 1, &x->x_at[i]); ! } ! ! static void toggle_mess_float(t_toggle_mess *x, t_float f) ! { ! x->x_index++; ! if(x->x_index >= x->x_ac) ! x->x_index = 0; ! toggle_mess_bang(x); ! } ! ! static void toggle_mess_set(t_toggle_mess *x, t_symbol *s, int ac, t_atom *av) ! { ! if((ac >= 1) && (IS_A_FLOAT(av, 0))) ! { ! int x_index = (int)atom_getint(av); ! ! if(x_index < 0) ! x_index = 0; ! else if(x_index >= x->x_ac) ! x_index = x->x_ac; ! x->x_index = x_index; ! outlet_anything(x->x_obj.ob_outlet, x->x_set, 1, &x->x_at[x_index]); ! } ! else ! toggle_mess_float(x, 0); ! } ! ! static void toggle_mess_symbol(t_toggle_mess *x, t_symbol *s) ! { ! toggle_mess_float(x, 0); ! } ! ! static void toggle_mess_anything(t_toggle_mess *x, t_symbol *s, int ac, t_atom *av) ! { ! toggle_mess_float(x, 0); ! } ! ! static void toggle_mess_free(t_toggle_mess *x) ! { ! freebytes(x->x_at, x->x_ac * sizeof(t_atom)); ! } ! ! static void *toggle_mess_new(t_symbol *s, int ac, t_atom *av) ! { ! t_toggle_mess *x = (t_toggle_mess *)pd_new(toggle_mess_class); ! int i; ! ! if(!ac) ! { ! post("toggle_mess-ERROR: must have at least one argument!"); ! x->x_at = (t_atom *)0; ! return(0); ! } ! x->x_ac = ac; ! x->x_at = (t_atom *)getbytes(ac * sizeof(t_atom)); ! for(i=0; i<ac; i++) ! x->x_at[i] = *av++; ! x->x_index = 0; ! x->x_set = gensym("set"); ! outlet_new(&x->x_obj, &s_list); ! x->x_out_mid_sym = outlet_new(&x->x_obj, &s_list); ! x->x_out_rght_flt = outlet_new(&x->x_obj, &s_float); ! return(x); ! } ! ! void toggle_mess_setup(void) ! { ! toggle_mess_class = class_new(gensym("toggle_mess"), (t_newmethod)toggle_mess_new, ! (t_method)toggle_mess_free, sizeof(t_toggle_mess), 0, A_GIMME, 0); ! class_addcreator((t_newmethod)toggle_mess_new, gensym("tm"), A_GIMME, 0); ! class_addbang(toggle_mess_class, (t_method)toggle_mess_bang); ! class_addmethod(toggle_mess_class, (t_method)toggle_mess_set, gensym("set"), A_GIMME, 0); ! class_addfloat(toggle_mess_class, (t_method)toggle_mess_float); ! class_addsymbol(toggle_mess_class, toggle_mess_symbol); ! class_addanything(toggle_mess_class, toggle_mess_anything); ! class_sethelpsymbol(toggle_mess_class, gensym("iemhelp/help-toggle_mess")); ! } --- 1,121 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! ! /* ------------------------ toggle_mess ---------------------------- */ ! /* -- inital arguments building a set of messages, any incomming --- */ ! /* -- increments the internal counter and outputs the n-th initial --*/ ! /* -- message. -- */ ! ! static t_class *toggle_mess_class; ! ! typedef struct _toggle_mess ! { ! t_object x_obj; ! int x_index; ! int x_ac; ! t_atom *x_at; ! void *x_out_mid_sym; ! void *x_out_rght_flt; ! t_symbol *x_set; ! } t_toggle_mess; ! ! static void toggle_mess_bang(t_toggle_mess *x) ! { ! int i = x->x_index; ! ! outlet_float(x->x_out_rght_flt, (float)i); ! if(IS_A_FLOAT(x->x_at, i)) ! outlet_float(x->x_out_mid_sym, atom_getfloat(&x->x_at[i])); ! else ! outlet_anything(x->x_out_mid_sym, atom_getsymbol(&x->x_at[i]), 0, x->x_at); ! outlet_anything(x->x_obj.ob_outlet, x->x_set, 1, &x->x_at[i]); ! } ! ! static void toggle_mess_float(t_toggle_mess *x, t_float f) ! { ! x->x_index++; ! if(x->x_index >= x->x_ac) ! x->x_index = 0; ! toggle_mess_bang(x); ! } ! ! static void toggle_mess_set(t_toggle_mess *x, t_symbol *s, int ac, t_atom *av) ! { ! if((ac >= 1) && (IS_A_FLOAT(av, 0))) ! { ! int x_index = (int)atom_getint(av); ! ! if(x_index < 0) ! x_index = 0; ! else if(x_index >= x->x_ac) ! x_index = x->x_ac; ! x->x_index = x_index; ! outlet_anything(x->x_obj.ob_outlet, x->x_set, 1, &x->x_at[x_index]); ! } ! else ! toggle_mess_float(x, 0); ! } ! ! static void toggle_mess_symbol(t_toggle_mess *x, t_symbol *s) ! { ! toggle_mess_float(x, 0); ! } ! ! static void toggle_mess_anything(t_toggle_mess *x, t_symbol *s, int ac, t_atom *av) ! { ! toggle_mess_float(x, 0); ! } ! ! static void toggle_mess_free(t_toggle_mess *x) ! { ! freebytes(x->x_at, x->x_ac * sizeof(t_atom)); ! } ! ! static void *toggle_mess_new(t_symbol *s, int ac, t_atom *av) ! { ! t_toggle_mess *x = (t_toggle_mess *)pd_new(toggle_mess_class); ! int i; ! ! if(!ac) ! { ! post("toggle_mess-ERROR: must have at least one argument!"); ! x->x_at = (t_atom *)0; ! return(0); ! } ! x->x_ac = ac; ! x->x_at = (t_atom *)getbytes(ac * sizeof(t_atom)); ! for(i=0; i<ac; i++) ! x->x_at[i] = *av++; ! x->x_index = 0; ! x->x_set = gensym("set"); ! outlet_new(&x->x_obj, &s_list); ! x->x_out_mid_sym = outlet_new(&x->x_obj, &s_list); ! x->x_out_rght_flt = outlet_new(&x->x_obj, &s_float); ! return(x); ! } ! ! void toggle_mess_setup(void) ! { ! toggle_mess_class = class_new(gensym("toggle_mess"), (t_newmethod)toggle_mess_new, ! (t_method)toggle_mess_free, sizeof(t_toggle_mess), 0, A_GIMME, 0); ! class_addcreator((t_newmethod)toggle_mess_new, gensym("tm"), A_GIMME, 0); ! class_addbang(toggle_mess_class, (t_method)toggle_mess_bang); ! class_addmethod(toggle_mess_class, (t_method)toggle_mess_set, gensym("set"), A_GIMME, 0); ! class_addfloat(toggle_mess_class, (t_method)toggle_mess_float); ! class_addsymbol(toggle_mess_class, toggle_mess_symbol); ! class_addanything(toggle_mess_class, toggle_mess_anything); ! class_sethelpsymbol(toggle_mess_class, gensym("iemhelp/help-toggle_mess")); ! }
Index: float24.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/float24.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** float24.c 18 May 2004 21:33:31 -0000 1.1.1.1 --- float24.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,83 **** ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ---- float24 - float=int or list of float=symbol concaternat to int=float ----- */ ! ! typedef struct _float24 ! { ! t_object x_obj; ! float x_arg; ! } t_float24; ! ! static t_class *float24_class; ! ! static float float24_calc_sum(int argc, t_atom *argv) ! { ! int i; ! char str[1000], buf[100]; ! ! str[0] = 0; ! for(i=0; i<argc; i++) ! { ! if(IS_A_FLOAT(argv, i)) ! { ! sprintf(buf, "%g", (float)atom_getfloatarg(i, argc, argv)); ! strcat(str, buf); ! } ! } ! return(atof(str)); ! } ! ! static void float24_bang(t_float24 *x) ! { ! outlet_float(x->x_obj.ob_outlet, x->x_arg); ! } ! ! static void float24_float(t_float24 *x, t_float f) ! { ! x->x_arg = f; ! float24_bang(x); ! } ! ! static void float24_list(t_float24 *x, t_symbol *s, int argc, t_atom *argv) ! { ! if(argc > 0) ! x->x_arg = float24_calc_sum(argc, argv); ! float24_bang(x); ! } ! ! static void *float24_new(t_symbol *s, int argc, t_atom *argv) ! { ! t_float24 *x = (t_float24 *)pd_new(float24_class); ! ! outlet_new(&x->x_obj, &s_float); ! x->x_arg = 0.0f; ! if(argc > 0) ! x->x_arg = float24_calc_sum(argc, argv); ! return (x); ! } ! ! void float24_setup(void) ! { ! float24_class = class_new(gensym("float24"), (t_newmethod)float24_new, 0, ! sizeof(t_float24), 0, A_GIMME, 0); ! class_addcreator((t_newmethod)float24_new, gensym("f24"), A_GIMME, 0); ! class_addbang(float24_class, (t_method)float24_bang); ! class_addfloat(float24_class, (t_method)float24_float); ! class_addlist(float24_class, (t_method)float24_list); ! class_sethelpsymbol(float24_class, gensym("iemhelp/help-float24")); ! } --- 1,81 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* -------------------------- float24 ----------------------- */ ! /* ----------- float-object with 24 bit accuracy ------------ */ ! /* -- concaternate a list of float-arguments to one string -- */ ! /* ----------- and convert it to a float-number ------------- */ ! ! typedef struct _float24 ! { ! t_object x_obj; ! float x_arg; ! } t_float24; ! ! static t_class *float24_class; ! ! static float float24_calc_sum(int argc, t_atom *argv) ! { ! int i; ! char str[1000], buf[100]; ! ! str[0] = 0; ! for(i=0; i<argc; i++) ! { ! if(IS_A_FLOAT(argv, i)) ! { ! sprintf(buf, "%g", (float)atom_getfloatarg(i, argc, argv)); ! strcat(str, buf); ! } ! } ! return(atof(str)); ! } ! ! static void float24_bang(t_float24 *x) ! { ! outlet_float(x->x_obj.ob_outlet, x->x_arg); ! } ! ! static void float24_float(t_float24 *x, t_float f) ! { ! x->x_arg = f; ! float24_bang(x); ! } ! ! static void float24_list(t_float24 *x, t_symbol *s, int argc, t_atom *argv) ! { ! if(argc > 0) ! x->x_arg = float24_calc_sum(argc, argv); ! float24_bang(x); ! } ! ! static void *float24_new(t_symbol *s, int argc, t_atom *argv) ! { ! t_float24 *x = (t_float24 *)pd_new(float24_class); ! ! outlet_new(&x->x_obj, &s_float); ! x->x_arg = 0.0f; ! if(argc > 0) ! x->x_arg = float24_calc_sum(argc, argv); ! return (x); ! } ! ! void float24_setup(void) ! { ! float24_class = class_new(gensym("float24"), (t_newmethod)float24_new, 0, ! sizeof(t_float24), 0, A_GIMME, 0); ! class_addcreator((t_newmethod)float24_new, gensym("f24"), A_GIMME, 0); ! class_addbang(float24_class, (t_method)float24_bang); ! class_addfloat(float24_class, (t_method)float24_float); ! class_addlist(float24_class, (t_method)float24_list); ! class_sethelpsymbol(float24_class, gensym("iemhelp/help-float24")); ! }
Index: speedlim.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/speedlim.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** speedlim.c 18 May 2004 21:33:33 -0000 1.1.1.1 --- speedlim.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,107 **** ! /* Copyright (c) 1997-2003 Miller Puckette. ! * For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ------------------------ speedlim ---------------------------- */ ! static t_class *speedlim_class; ! ! typedef struct _speedlim ! { ! t_object x_obj; ! t_clock *x_clock; ! float x_delay; ! int x_output_is_locked; ! int x_there_was_n_event; ! float x_curval; ! float x_lastout; ! } t_speedlim; ! ! static void speedlim_stop(t_speedlim *x) ! { ! x->x_output_is_locked = 0; ! x->x_there_was_n_event = 0; ! clock_unset(x->x_clock); ! } ! ! static void speedlim_tick(t_speedlim *x) ! { ! if(x->x_there_was_n_event) ! { ! x->x_output_is_locked = 1; ! x->x_there_was_n_event = 0; ! outlet_float(x->x_obj.ob_outlet, x->x_curval); ! clock_delay(x->x_clock, x->x_delay); ! } ! else ! { ! x->x_output_is_locked = 0; ! x->x_there_was_n_event = 0; ! } ! } ! ! static void speedlim_float(t_speedlim *x, t_float val) ! { ! x->x_curval = val; ! if(!x->x_output_is_locked) ! { ! x->x_output_is_locked = 1; ! x->x_there_was_n_event = 0; ! outlet_float(x->x_obj.ob_outlet, x->x_curval); ! clock_delay(x->x_clock, x->x_delay); ! } ! else ! x->x_there_was_n_event = 1; ! } ! ! static void speedlim_ft1(t_speedlim *x, t_float delay) ! { ! if(delay < 0.0) ! delay = 0.0; ! x->x_delay = delay; ! } ! ! static void speedlim_free(t_speedlim *x) ! { ! clock_free(x->x_clock); ! } ! ! static void *speedlim_new(t_float delay) ! { ! t_speedlim *x = (t_speedlim *)pd_new(speedlim_class); ! ! if(delay < 0.0) ! delay = 0.0; ! x->x_delay = delay; ! x->x_curval = 0.0f; ! x->x_output_is_locked = 0; ! x->x_there_was_n_event = 0; ! x->x_clock = clock_new(x, (t_method)speedlim_tick); ! outlet_new(&x->x_obj, &s_float); ! inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft1")); ! return (x); ! } ! ! void speedlim_setup(void) ! { ! speedlim_class = class_new(gensym("speedlim"), (t_newmethod)speedlim_new, ! (t_method)speedlim_free, sizeof(t_speedlim), 0, A_DEFFLOAT, 0); ! class_addmethod(speedlim_class, (t_method)speedlim_stop, gensym("stop"), 0); ! class_addfloat(speedlim_class, (t_method)speedlim_float); ! class_addmethod(speedlim_class, (t_method)speedlim_ft1, gensym("ft1"), A_FLOAT, 0); ! class_sethelpsymbol(speedlim_class, gensym("iemhelp/help-speedlim")); ! } ! --- 1,107 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! ! /* ----------------------- speedlim -------------------------- */ ! /* -- reduces the flow of float-messages to one message per -- */ ! /* ----------------- initial argument time in ms ------------- */ ! ! static t_class *speedlim_class; ! ! typedef struct _speedlim ! { ! t_object x_obj; ! t_clock *x_clock; ! float x_delay; ! int x_output_is_locked; ! int x_there_was_n_event; ! float x_curval; ! float x_lastout; ! } t_speedlim; ! ! static void speedlim_stop(t_speedlim *x) ! { ! x->x_output_is_locked = 0; ! x->x_there_was_n_event = 0; ! clock_unset(x->x_clock); ! } ! ! static void speedlim_tick(t_speedlim *x) ! { ! if(x->x_there_was_n_event) ! { ! x->x_output_is_locked = 1; ! x->x_there_was_n_event = 0; ! outlet_float(x->x_obj.ob_outlet, x->x_curval); ! clock_delay(x->x_clock, x->x_delay); ! } ! else ! { ! x->x_output_is_locked = 0; ! x->x_there_was_n_event = 0; ! } ! } ! ! static void speedlim_float(t_speedlim *x, t_float val) ! { ! x->x_curval = val; ! if(!x->x_output_is_locked) ! { ! x->x_output_is_locked = 1; ! x->x_there_was_n_event = 0; ! outlet_float(x->x_obj.ob_outlet, x->x_curval); ! clock_delay(x->x_clock, x->x_delay); ! } ! else ! x->x_there_was_n_event = 1; ! } ! ! static void speedlim_ft1(t_speedlim *x, t_float delay) ! { ! if(delay < 0.0) ! delay = 0.0; ! x->x_delay = delay; ! } ! ! static void speedlim_free(t_speedlim *x) ! { ! clock_free(x->x_clock); ! } ! ! static void *speedlim_new(t_float delay) ! { ! t_speedlim *x = (t_speedlim *)pd_new(speedlim_class); ! ! if(delay < 0.0) ! delay = 0.0; ! x->x_delay = delay; ! x->x_curval = 0.0f; ! x->x_output_is_locked = 0; ! x->x_there_was_n_event = 0; ! x->x_clock = clock_new(x, (t_method)speedlim_tick); ! outlet_new(&x->x_obj, &s_float); ! inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft1")); ! return (x); ! } ! ! void speedlim_setup(void) ! { ! speedlim_class = class_new(gensym("speedlim"), (t_newmethod)speedlim_new, ! (t_method)speedlim_free, sizeof(t_speedlim), 0, A_DEFFLOAT, 0); ! class_addmethod(speedlim_class, (t_method)speedlim_stop, gensym("stop"), 0); ! class_addfloat(speedlim_class, (t_method)speedlim_float); ! class_addmethod(speedlim_class, (t_method)speedlim_ft1, gensym("ft1"), A_FLOAT, 0); ! class_sethelpsymbol(speedlim_class, gensym("iemhelp/help-speedlim")); ! }
Index: list2send.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/list2send.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** list2send.c 18 May 2004 21:33:32 -0000 1.1.1.1 --- list2send.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,246 **** ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ------------------------ list2send ---------------------------- */ ! static t_class *list2send_class; ! ! typedef struct _list2send ! { ! t_object x_obj; ! int x_max; ! char *x_snd_able; ! t_symbol **x_send_entries; ! t_symbol *x_set; ! } t_list2send; ! ! static void list2send_list(t_list2send *x, t_symbol *s, int ac, t_atom *av) ! { ! if((ac >= 2) && (IS_A_FLOAT(av,0))) ! { ! int identifier_index = (int)atom_getintarg(0, ac, av); ! ! if(identifier_index < x->x_max) ! { ! if(x->x_snd_able[identifier_index]) ! { ! t_symbol *sender = x->x_send_entries[identifier_index]; ! ! if(sender->s_thing) ! { ! if(ac == 2) ! { ! if(IS_A_FLOAT(av, 1)) ! pd_float(sender->s_thing, atom_getfloatarg(1, ac, av)); ! else if(IS_A_SYMBOL(av, 1)) ! pd_symbol(sender->s_thing, atom_getsymbolarg(1, ac, av)); ! } ! else ! pd_list(sender->s_thing, &s_list, ac-1, av+1); ! } ! } ! } ! } ! } ! ! static void list2send_set(t_list2send *x, t_symbol *s, int ac, t_atom *av) ! { ! if((ac >= 2) && (IS_A_FLOAT(av,0))) ! { ! int identifier_index = (int)atom_getintarg(0, ac, av); ! ! if(identifier_index < x->x_max) ! { ! if(x->x_snd_able[identifier_index]) ! { ! t_symbol *sender = x->x_send_entries[identifier_index]; ! ! if(sender->s_thing) ! typedmess(sender->s_thing, s, ac-1, av+1); ! } ! } ! } ! } ! ! static void list2send_all(t_list2send *x, t_symbol *s, int ac, t_atom *av) ! { ! int i, n=x->x_max; ! ! if(ac == n) ! { ! for(i=n-1; i>=0; i--)/*change*/ ! { ! if(x->x_snd_able[i]) ! { ! t_symbol *sender = x->x_send_entries[i]; ! ! if(sender->s_thing) ! { ! if(IS_A_FLOAT(av, i)) ! pd_float(sender->s_thing, atom_getfloatarg(i, ac, av)); ! else if(IS_A_SYMBOL(av, i)) ! pd_symbol(sender->s_thing, atom_getsymbolarg(i, ac, av)); ! } ! } ! } ! } ! } ! ! static void list2send_set_all(t_list2send *x, t_symbol *s, int ac, t_atom *av) ! { ! int i, n=x->x_max; ! ! if(ac == n) ! { ! for(i=n-1; i>=0; i--)/*change*/ ! { ! if(x->x_snd_able[i]) ! { ! t_symbol *sender = x->x_send_entries[i]; ! ! if(sender->s_thing) ! typedmess(sender->s_thing, x->x_set, 1, av+i); ! } ! } ! } ! } ! ! static void list2send_from(t_list2send *x, t_symbol *s, int ac, t_atom *av) ! { ! int n=x->x_max; ! ! if(ac >= 1) ! { ! int i, j, beg=(int)atom_getintarg(0, ac, av); ! ! if((beg + ac - 1) <= n) ! { ! for(i=ac-1,j=beg+ac-2; i>=1; i--,j--)/*change*/ ! { ! if(x->x_snd_able[j]) ! { ! t_symbol *sender = x->x_send_entries[j]; ! ! if(sender->s_thing) ! { ! if(IS_A_FLOAT(av, i)) ! pd_float(sender->s_thing, atom_getfloatarg(i, ac, av)); ! else if(IS_A_SYMBOL(av, i)) ! pd_symbol(sender->s_thing, atom_getsymbolarg(i, ac, av)); ! } ! } ! } ! } ! } ! } ! ! static void list2send_set_from(t_list2send *x, t_symbol *s, int ac, t_atom *av) ! { ! int n=x->x_max; ! ! if(ac >= 1) ! { ! int i, j, beg=(int)atom_getintarg(0, ac, av); ! ! if((beg + ac - 1) <= n) ! { ! for(i=ac-1,j=beg+ac-2; i>=1; i--,j--)/*change*/ ! { ! if(x->x_snd_able[j]) ! { ! t_symbol *sender = x->x_send_entries[j]; ! ! if(sender->s_thing) ! typedmess(sender->s_thing, x->x_set, 1, av+i); ! } ! } ! } ! } ! } ! ! static void list2send_add(t_list2send *x, t_symbol *s, int ac, t_atom *av) ! { ! if(ac == 2) ! { ! int identifier_index = (int)atom_getintarg(0, ac, av); ! ! if(identifier_index < x->x_max) ! { ! if(IS_A_SYMBOL(av, 1)) ! { ! x->x_send_entries[identifier_index] = atom_getsymbolarg(1, ac, av); ! x->x_snd_able[identifier_index] = 1; ! } ! else if(IS_A_FLOAT(av, 1)) ! { ! char str[100]; ! ! sprintf(str, "%g", atom_getfloatarg(1, ac, av)); ! x->x_send_entries[identifier_index] = gensym(str); ! x->x_snd_able[identifier_index] = 1; ! } ! } ! } ! } ! ! static void list2send_clear(t_list2send *x) ! { ! int i, n=x->x_max; ! ! for(i=0; i<n; i++) ! { ! if(x->x_snd_able[i]) ! x->x_snd_able[i] = 0; ! } ! } ! ! static void list2send_free(t_list2send *x) ! { ! freebytes(x->x_snd_able, x->x_max * sizeof(char)); ! freebytes(x->x_send_entries, x->x_max * sizeof(t_symbol *)); ! } ! ! static void *list2send_new(t_float fmax) ! { ! t_list2send *x = (t_list2send *)pd_new(list2send_class); ! int i, max = (int)fmax; ! t_atom *ap; ! ! if(max <= 0) ! max = 80; ! x->x_max = max; ! x->x_snd_able = (char *)getbytes(max * sizeof(char)); ! x->x_send_entries = (t_symbol **)getbytes(max * sizeof(t_symbol *)); ! for(i=0; i<max; i++) ! x->x_snd_able[i] = 0; ! x->x_set = gensym("set"); ! return (x); ! } ! ! void list2send_setup(void) ! { ! list2send_class = class_new(gensym("list2send"), (t_newmethod)list2send_new, ! (t_method)list2send_free, sizeof(t_list2send), 0, A_DEFFLOAT, 0); ! class_addlist(list2send_class, list2send_list); ! class_addmethod(list2send_class, (t_method)list2send_add, gensym("add"), A_GIMME, 0); ! class_addmethod(list2send_class, (t_method)list2send_set, gensym("set"), A_GIMME, 0); ! class_addmethod(list2send_class, (t_method)list2send_all, gensym("all"), A_GIMME, 0); ! class_addmethod(list2send_class, (t_method)list2send_set_all, gensym("set_all"), A_GIMME, 0); ! class_addmethod(list2send_class, (t_method)list2send_from, gensym("from"), A_GIMME, 0); ! class_addmethod(list2send_class, (t_method)list2send_set_from, gensym("set_from"), A_GIMME, 0); ! class_addmethod(list2send_class, (t_method)list2send_clear, gensym("clear"), 0); ! class_sethelpsymbol(list2send_class, gensym("iemhelp/help-list2send")); ! } --- 1,250 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ------------------------- list2send ----------------------------- */ ! /* -- via an array of send labels, an incomming list with leading -- */ ! /* -- float index will be sent to a receive object with the label -- */ ! /* ------------ name of the index-th entry of the array ------------ */ ! ! static t_class *list2send_class; ! ! typedef struct _list2send ! { ! t_object x_obj; ! int x_max; ! char *x_snd_able; ! t_symbol **x_send_entries; ! t_symbol *x_set; ! } t_list2send; ! ! static void list2send_list(t_list2send *x, t_symbol *s, int ac, t_atom *av) ! { ! if((ac >= 2) && (IS_A_FLOAT(av,0))) ! { ! int identifier_index = (int)atom_getintarg(0, ac, av); ! ! if(identifier_index < x->x_max) ! { ! if(x->x_snd_able[identifier_index]) ! { ! t_symbol *sender = x->x_send_entries[identifier_index]; ! ! if(sender->s_thing) ! { ! if(ac == 2) ! { ! if(IS_A_FLOAT(av, 1)) ! pd_float(sender->s_thing, atom_getfloatarg(1, ac, av)); ! else if(IS_A_SYMBOL(av, 1)) ! pd_symbol(sender->s_thing, atom_getsymbolarg(1, ac, av)); ! } ! else ! pd_list(sender->s_thing, &s_list, ac-1, av+1); ! } ! } ! } ! } ! } ! ! static void list2send_set(t_list2send *x, t_symbol *s, int ac, t_atom *av) ! { ! if((ac >= 2) && (IS_A_FLOAT(av,0))) ! { ! int identifier_index = (int)atom_getintarg(0, ac, av); ! ! if(identifier_index < x->x_max) ! { ! if(x->x_snd_able[identifier_index]) ! { ! t_symbol *sender = x->x_send_entries[identifier_index]; ! ! if(sender->s_thing) ! typedmess(sender->s_thing, s, ac-1, av+1); ! } ! } ! } ! } ! ! static void list2send_all(t_list2send *x, t_symbol *s, int ac, t_atom *av) ! { ! int i, n=x->x_max; ! ! if(ac == n) ! { ! for(i=n-1; i>=0; i--)/*change*/ ! { ! if(x->x_snd_able[i]) ! { ! t_symbol *sender = x->x_send_entries[i]; ! ! if(sender->s_thing) ! { ! if(IS_A_FLOAT(av, i)) ! pd_float(sender->s_thing, atom_getfloatarg(i, ac, av)); ! else if(IS_A_SYMBOL(av, i)) ! pd_symbol(sender->s_thing, atom_getsymbolarg(i, ac, av)); ! } ! } ! } ! } ! } ! ! static void list2send_set_all(t_list2send *x, t_symbol *s, int ac, t_atom *av) ! { ! int i, n=x->x_max; ! ! if(ac == n) ! { ! for(i=n-1; i>=0; i--)/*change*/ ! { ! if(x->x_snd_able[i]) ! { ! t_symbol *sender = x->x_send_entries[i]; ! ! if(sender->s_thing) ! typedmess(sender->s_thing, x->x_set, 1, av+i); ! } ! } ! } ! } ! ! static void list2send_from(t_list2send *x, t_symbol *s, int ac, t_atom *av) ! { ! int n=x->x_max; ! ! if(ac >= 1) ! { ! int i, j, beg=(int)atom_getintarg(0, ac, av); ! ! if((beg + ac - 1) <= n) ! { ! for(i=ac-1,j=beg+ac-2; i>=1; i--,j--)/*change*/ ! { ! if(x->x_snd_able[j]) ! { ! t_symbol *sender = x->x_send_entries[j]; ! ! if(sender->s_thing) ! { ! if(IS_A_FLOAT(av, i)) ! pd_float(sender->s_thing, atom_getfloatarg(i, ac, av)); ! else if(IS_A_SYMBOL(av, i)) ! pd_symbol(sender->s_thing, atom_getsymbolarg(i, ac, av)); ! } ! } ! } ! } ! } ! } ! ! static void list2send_set_from(t_list2send *x, t_symbol *s, int ac, t_atom *av) ! { ! int n=x->x_max; ! ! if(ac >= 1) ! { ! int i, j, beg=(int)atom_getintarg(0, ac, av); ! ! if((beg + ac - 1) <= n) ! { ! for(i=ac-1,j=beg+ac-2; i>=1; i--,j--)/*change*/ ! { ! if(x->x_snd_able[j]) ! { ! t_symbol *sender = x->x_send_entries[j]; ! ! if(sender->s_thing) ! typedmess(sender->s_thing, x->x_set, 1, av+i); ! } ! } ! } ! } ! } ! ! static void list2send_add(t_list2send *x, t_symbol *s, int ac, t_atom *av) ! { ! if((ac > 1) && (IS_A_FLOAT(av, 0))) ! { ! int identifier_index = (int)atom_getintarg(0, ac, av); ! ! if(identifier_index < x->x_max) ! { ! if(IS_A_SYMBOL(av, 1)) ! { ! x->x_send_entries[identifier_index] = atom_getsymbolarg(1, ac, av); ! x->x_snd_able[identifier_index] = 1; ! } ! else if(IS_A_FLOAT(av, 1)) ! { ! char str[100]; ! ! sprintf(str, "%g", atom_getfloatarg(1, ac, av)); ! x->x_send_entries[identifier_index] = gensym(str); ! x->x_snd_able[identifier_index] = 1; ! } ! } ! } ! } ! ! static void list2send_clear(t_list2send *x) ! { ! int i, n=x->x_max; ! ! for(i=0; i<n; i++) ! { ! if(x->x_snd_able[i]) ! x->x_snd_able[i] = 0; ! } ! } ! ! static void list2send_free(t_list2send *x) ! { ! freebytes(x->x_snd_able, x->x_max * sizeof(char)); ! freebytes(x->x_send_entries, x->x_max * sizeof(t_symbol *)); ! } ! ! static void *list2send_new(t_float fmax) ! { ! t_list2send *x = (t_list2send *)pd_new(list2send_class); ! int i, max = (int)fmax; ! t_atom *ap; ! ! if(max <= 0) ! max = 80; ! x->x_max = max; ! x->x_snd_able = (char *)getbytes(max * sizeof(char)); ! x->x_send_entries = (t_symbol **)getbytes(max * sizeof(t_symbol *)); ! for(i=0; i<max; i++) ! x->x_snd_able[i] = 0; ! x->x_set = gensym("set"); ! return (x); ! } ! ! void list2send_setup(void) ! { ! list2send_class = class_new(gensym("list2send"), (t_newmethod)list2send_new, ! (t_method)list2send_free, sizeof(t_list2send), 0, A_DEFFLOAT, 0); ! class_addlist(list2send_class, list2send_list); ! class_addmethod(list2send_class, (t_method)list2send_add, gensym("add"), A_GIMME, 0); ! class_addmethod(list2send_class, (t_method)list2send_set, gensym("set"), A_GIMME, 0); ! class_addmethod(list2send_class, (t_method)list2send_all, gensym("all"), A_GIMME, 0); ! class_addmethod(list2send_class, (t_method)list2send_set_all, gensym("set_all"), A_GIMME, 0); ! class_addmethod(list2send_class, (t_method)list2send_from, gensym("from"), A_GIMME, 0); ! class_addmethod(list2send_class, (t_method)list2send_set_from, gensym("set_from"), A_GIMME, 0); ! class_addmethod(list2send_class, (t_method)list2send_clear, gensym("clear"), 0); ! class_sethelpsymbol(list2send_class, gensym("iemhelp/help-list2send")); ! }
Index: modulo_counter.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/modulo_counter.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** modulo_counter.c 18 May 2004 21:33:32 -0000 1.1.1.1 --- modulo_counter.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,90 **** ! /* Copyright (c) 1997-2003 Miller Puckette. ! * For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ---------------- modulo-counter. ----------------- */ ! ! static t_class *modulo_counter_class; ! ! typedef struct _modulo_counter ! { ! t_object x_obj; ! int x_max; ! int x_cur; ! } t_modulo_counter; ! ! static void modulo_counter_bang(t_modulo_counter *x) ! { ! outlet_float(x->x_obj.ob_outlet, x->x_cur++); ! x->x_cur = x->x_cur % x->x_max; ! } ! ! static void modulo_counter_float(t_modulo_counter *x, t_float max) ! { ! int i = (int)max; ! ! if(i < 1) ! i = 1; ! if(x->x_cur >= i) ! x->x_cur = i - 1; ! x->x_max = i; ! } ! ! static void modulo_counter_ft1(t_modulo_counter *x, t_float set_init) ! { ! int i = (int)set_init; ! ! if(i < 0) ! i = 0; ! if(i >= x->x_max) ! i = x->x_max - 1; ! x->x_cur = i; ! } ! ! static void *modulo_counter_new(t_symbol *s, int ac, t_atom *av) ! { ! t_modulo_counter *x = (t_modulo_counter *)pd_new(modulo_counter_class); ! int max = 1, cur = 0; ! ! if((ac > 0) && IS_A_FLOAT(av, 0)) ! max = atom_getintarg(0, ac, av); ! if((ac > 1) && IS_A_FLOAT(av, 1)) ! cur = atom_getintarg(1, ac, av); ! if(max < 1) ! x->x_max = 1; ! else ! x->x_max = max; ! if(cur < 0) ! cur = 0; ! if(cur >= x->x_max) ! cur = x->x_max - 1; ! x->x_cur = cur; ! outlet_new(&x->x_obj, &s_float); ! inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft1")); ! return (x); ! } ! ! void modulo_counter_setup(void) ! { ! modulo_counter_class = class_new(gensym("modulo_counter"), ! (t_newmethod)modulo_counter_new, 0, ! sizeof(t_modulo_counter), 0, A_GIMME, 0); ! class_addbang(modulo_counter_class, (t_method)modulo_counter_bang); ! class_addfloat(modulo_counter_class, (t_method)modulo_counter_float); ! class_addmethod(modulo_counter_class, (t_method)modulo_counter_ft1, gensym("ft1"), A_FLOAT, 0); ! class_sethelpsymbol(modulo_counter_class, gensym("iemhelp/help-modulo_counter")); ! } --- 1,91 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ---------------- modulo-counter. ----------------- */ ! /* -------- counter increments if input a bang ------ */ ! /* -------- output is a modulo function. ------------ */ ! ! static t_class *modulo_counter_class; ! ! typedef struct _modulo_counter ! { ! t_object x_obj; ! int x_max; ! int x_cur; ! } t_modulo_counter; ! ! static void modulo_counter_bang(t_modulo_counter *x) ! { ! outlet_float(x->x_obj.ob_outlet, x->x_cur++); ! x->x_cur = x->x_cur % x->x_max; ! } ! ! static void modulo_counter_float(t_modulo_counter *x, t_float max) ! { ! int i = (int)max; ! ! if(i < 1) ! i = 1; ! if(x->x_cur >= i) ! x->x_cur = i - 1; ! x->x_max = i; ! } ! ! static void modulo_counter_ft1(t_modulo_counter *x, t_float set_init) ! { ! int i = (int)set_init; ! ! if(i < 0) ! i = 0; ! if(i >= x->x_max) ! i = x->x_max - 1; ! x->x_cur = i; ! } ! ! static void *modulo_counter_new(t_symbol *s, int ac, t_atom *av) ! { ! t_modulo_counter *x = (t_modulo_counter *)pd_new(modulo_counter_class); ! int max = 1, cur = 0; ! ! if((ac > 0) && IS_A_FLOAT(av, 0)) ! max = atom_getintarg(0, ac, av); ! if((ac > 1) && IS_A_FLOAT(av, 1)) ! cur = atom_getintarg(1, ac, av); ! if(max < 1) ! x->x_max = 1; ! else ! x->x_max = max; ! if(cur < 0) ! cur = 0; ! if(cur >= x->x_max) ! cur = x->x_max - 1; ! x->x_cur = cur; ! outlet_new(&x->x_obj, &s_float); ! inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft1")); ! return (x); ! } ! ! void modulo_counter_setup(void) ! { ! modulo_counter_class = class_new(gensym("modulo_counter"), ! (t_newmethod)modulo_counter_new, 0, ! sizeof(t_modulo_counter), 0, A_GIMME, 0); ! class_addbang(modulo_counter_class, (t_method)modulo_counter_bang); ! class_addfloat(modulo_counter_class, (t_method)modulo_counter_float); ! class_addmethod(modulo_counter_class, (t_method)modulo_counter_ft1, gensym("ft1"), A_FLOAT, 0); ! class_sethelpsymbol(modulo_counter_class, gensym("iemhelp/help-modulo_counter")); ! }
Index: iemlib2.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/iemlib2.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** iemlib2.c 18 May 2004 21:33:32 -0000 1.1.1.1 --- iemlib2.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,121 **** ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! /* ! #include <ctype.h> ! #include <signal.h> ! #include <sys/types.h> ! #include <sys/stat.h> ! #include <fcntl.h> ! ! #ifndef NT ! #include <sys/signal.h> ! #include <unistd.h> ! #endif ! ! #ifdef NT ! #include <io.h> ! #endif ! */ ! ! static t_class *iemlib2_class; ! ! static void *iemlib2_new(void) ! { ! t_object *x = (t_object *)pd_new(iemlib2_class); ! ! return (x); ! } ! ! void add2_comma_setup(void); ! void bpe_setup(void); ! void dollarg_setup(void); ! void exp_inc_setup(void); ! void float24_setup(void); ! void iem_anything_kernel_setup(void); ! void iem_append_kernel_setup(void); ! void iem_i_route_setup(void); ! void iem_prepend_kernel_setup(void); ! void iem_pbank_csv_setup(void); ! void iem_receive_kernel_setup(void); ! void iem_send_kernel_setup(void); ! void iem_route_setup(void); ! void iem_sel_any_setup(void); ! void init_setup(void); ! void list2send_setup(void); ! void mergefilename_setup(void); ! void modulo_counter_setup(void); ! void pre_inlet_setup(void); ! void prepend_ascii_setup(void); ! void post_netreceive_setup(void); ! void round_zero_setup(void); ! void sigfade_setup(void); ! void sigiem_blocksize_setup(void); ! void sigiem_samplerate_setup(void); ! void sigLFO_noise_setup(void); ! void sigm2f_setup(void); ! void speedlim_setup(void); ! void splitfilename_setup(void); ! void stripfilename_setup(void); ! void toggle_mess_setup(void); ! void transf_fader_setup(void); ! void unsymbol_setup(void); ! void wrap_setup(void); ! ! /* ------------------------ setup routine ------------------------- */ ! ! void iemlib2_setup(void) ! { ! iemlib2_class = class_new(gensym("iemlib2"), iemlib2_new, 0, ! sizeof(t_object), CLASS_NOINLET, 0); ! ! add2_comma_setup(); ! bpe_setup(); ! dollarg_setup(); ! exp_inc_setup(); ! float24_setup(); ! iem_anything_kernel_setup(); ! iem_append_kernel_setup(); ! iem_i_route_setup(); ! iem_pbank_csv_setup(); ! iem_prepend_kernel_setup(); ! iem_receive_kernel_setup(); ! iem_send_kernel_setup(); ! iem_route_setup(); ! iem_sel_any_setup(); ! init_setup(); ! list2send_setup(); ! mergefilename_setup(); ! modulo_counter_setup(); ! pre_inlet_setup(); ! prepend_ascii_setup(); ! post_netreceive_setup(); ! round_zero_setup(); ! sigfade_setup(); ! sigiem_blocksize_setup(); ! sigiem_samplerate_setup(); ! sigLFO_noise_setup(); ! sigm2f_setup(); ! speedlim_setup(); ! splitfilename_setup(); ! stripfilename_setup(); ! toggle_mess_setup(); ! transf_fader_setup(); ! unsymbol_setup(); ! wrap_setup(); ! ! post("iemlib2 (R-1.15) library loaded!"); ! } --- 1,137 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! /* ! #include <ctype.h> ! #include <signal.h> ! #include <sys/types.h> ! #include <sys/stat.h> ! #include <fcntl.h> ! ! #ifndef NT ! #include <sys/signal.h> ! #include <unistd.h> ! #endif ! ! #ifdef NT ! #include <io.h> ! #endif ! */ ! ! static t_class *iemlib2_class; ! ! static void *iemlib2_new(void) ! { ! t_object *x = (t_object *)pd_new(iemlib2_class); ! ! return (x); ! } ! ! void add2_comma_setup(void); ! void bpe_setup(void); ! void dollarg_setup(void); ! void exp_inc_setup(void); ! void float24_setup(void); ! void iem_anything_kernel_setup(void); ! void iem_anything_setup(void); ! void iem_append_kernel_setup(void); ! void iem_append_setup(void); ! void iem_i_route_setup(void); ! void iem_prepend_kernel_setup(void); ! void iem_prepend_setup(void); ! void iem_pbank_csv_setup(void); ! void iem_receive_kernel_setup(void); ! void iem_receive_setup(void); ! void iem_send_kernel_setup(void); ! void iem_send_setup(void); ! void iem_route_setup(void); ! void iem_sel_any_setup(void); ! void init_setup(void); ! void list2send_setup(void); ! void mergefilename_setup(void); ! void modulo_counter_setup(void); ! void parentdollarzero_setup(void); ! void pre_inlet_setup(void); ! void prepend_ascii_setup(void); ! void protect_against_open_setup(void); ! void post_netreceive_setup(void); ! void receive2list_setup(void); ! void round_zero_setup(void); ! void sigfade_setup(void); ! void sigiem_blocksize_setup(void); ! void sigiem_samplerate_setup(void); ! void sigLFO_noise_setup(void); ! void sigm2f_setup(void); ! void speedlim_setup(void); ! void splitfilename_setup(void); ! void stripfilename_setup(void); ! void toggle_mess_setup(void); ! void transf_fader_setup(void); ! void unsymbol_setup(void); ! void wrap_setup(void); ! ! /* ------------------------ setup routine ------------------------- */ ! ! void iemlib2_setup(void) ! { ! iemlib2_class = class_new(gensym("iemlib2"), iemlib2_new, 0, sizeof(t_object), CLASS_NOINLET, 0); ! ! add2_comma_setup(); ! bpe_setup(); ! dollarg_setup(); ! exp_inc_setup(); ! float24_setup(); ! iem_anything_kernel_setup(); ! iem_anything_setup(); ! iem_append_kernel_setup(); ! iem_append_setup(); ! iem_i_route_setup(); ! iem_pbank_csv_setup(); ! iem_prepend_kernel_setup(); ! iem_prepend_setup(); ! iem_receive_kernel_setup(); ! iem_receive_setup(); ! iem_send_kernel_setup(); ! iem_send_setup(); ! iem_route_setup(); ! iem_sel_any_setup(); ! init_setup(); ! list2send_setup(); ! mergefilename_setup(); ! modulo_counter_setup(); ! parentdollarzero_setup(); ! pre_inlet_setup(); ! prepend_ascii_setup(); ! protect_against_open_setup(); ! post_netreceive_setup(); ! receive2list_setup(); ! round_zero_setup(); ! sigfade_setup(); ! sigiem_blocksize_setup(); ! sigiem_samplerate_setup(); ! sigLFO_noise_setup(); ! sigm2f_setup(); ! speedlim_setup(); ! splitfilename_setup(); ! stripfilename_setup(); ! toggle_mess_setup(); ! transf_fader_setup(); ! unsymbol_setup(); ! wrap_setup(); ! ! post("iemlib2 (R-1.16) library loaded! (c) Thomas Musil 05.2005"); ! post(" musil%ciem.at iem KUG Graz Austria", '@'); ! }
Index: makefile =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/makefile,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** makefile 9 Mar 2005 17:16:00 -0000 1.2 --- makefile 2 Jun 2005 18:25:00 -0000 1.3 *************** *** 24,42 **** --- 24,50 ---- float24.c \ iem_anything_kernel.c \ + iem_anything.c \ iem_append_kernel.c \ + iem_append.c \ iem_i_route.c \ iem_pbank_csv.c \ iem_prepend_kernel.c \ + iem_prepend.c \ iem_receive_kernel.c \ + iem_receive.c \ iem_route.c \ iem_sel_any.c \ iem_send_kernel.c \ + iem_send.c \ init.c \ list2send.c \ mergefilename.c \ modulo_counter.c \ + parentdollarzero.c \ post_netreceive.c \ pre_inlet.c \ prepend_ascii.c \ + protect_against_open.c \ + receive2list.c \ round_zero.c \ sigfade.c \
Index: splitfilename.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/splitfilename.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** splitfilename.c 18 May 2004 21:33:33 -0000 1.1.1.1 --- splitfilename.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,142 **** ! /* Copyright (c) 1997-2003 Miller Puckette. ! * For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* -------------------------- splitfilename ------------------------------ */ ! ! static t_class *splitfilename_class; ! ! typedef struct _splitfilename ! { ! t_object x_obj; ! char x_sep[2]; ! void *x_outpath; ! void *x_outfile; ! } t_splitfilename; ! ! static void splitfilename_separator(t_splitfilename *x, t_symbol *s, int ac, t_atom *av) ! { ! if(ac > 0) ! { ! if(IS_A_SYMBOL(av, 0)) ! { ! if(strlen(av->a_w.w_symbol->s_name) == 1) ! x->x_sep[0] = av->a_w.w_symbol->s_name[0]; ! else if(!strcmp(av->a_w.w_symbol->s_name, "backslash")) ! x->x_sep[0] = '\'; ! else if(!strcmp(av->a_w.w_symbol->s_name, "slash")) ! x->x_sep[0] = '/'; ! else if(!strcmp(av->a_w.w_symbol->s_name, "blank")) ! x->x_sep[0] = ' '; ! else if(!strcmp(av->a_w.w_symbol->s_name, "space")) ! x->x_sep[0] = ' '; ! else if(!strcmp(av->a_w.w_symbol->s_name, "dollar")) ! x->x_sep[0] = '$'; ! else if(!strcmp(av->a_w.w_symbol->s_name, "comma")) ! x->x_sep[0] = ','; ! else if(!strcmp(av->a_w.w_symbol->s_name, "semi")) ! x->x_sep[0] = ';'; ! else if(!strcmp(av->a_w.w_symbol->s_name, "leftbrace")) ! x->x_sep[0] = '{'; ! else if(!strcmp(av->a_w.w_symbol->s_name, "rightbrace")) ! x->x_sep[0] = '}'; ! else ! x->x_sep[0] = '/'; ! } ! else if(IS_A_FLOAT(av, 0)) ! { ! int i; ! float f=fabs(av->a_w.w_float); ! ! while(f >= 10.0) ! f *= 0.1; ! i = (int)f; ! x->x_sep[0] = (char)i + '0'; ! } ! } ! else ! x->x_sep[0] = 0; ! } ! ! static void splitfilename_symbol(t_splitfilename *x, t_symbol *s) ! { ! int len = strlen(s->s_name); ! ! if(len) ! { ! if(x->x_sep[0] != 0) ! { ! char *str_path = (char *)getbytes(len*sizeof(char)); ! char *str_file = (char *)getbytes(len*sizeof(char)); ! char *cpp, *cpf; ! ! strcpy(str_path, s->s_name); ! strcpy(str_file, s->s_name); ! cpp = strrchr(str_path, x->x_sep[0]); ! cpf = strrchr(str_file, x->x_sep[0]); ! if(((int)cpp - (int)str_path) < 0) ! { ! outlet_symbol(x->x_outfile, gensym(str_file)); ! outlet_symbol(x->x_outpath, &s_); ! } ! else if(((int)cpp - (int)str_path) >= len) ! { ! outlet_symbol(x->x_outfile, &s_); ! outlet_symbol(x->x_outpath, gensym(str_path)); ! } ! else ! { ! *cpp = 0; ! cpf++; ! outlet_symbol(x->x_outfile, gensym(cpf)); ! outlet_symbol(x->x_outpath, gensym(str_path)); ! } ! freebytes(str_file, len*sizeof(char)); ! freebytes(str_path, len*sizeof(char)); ! } ! else ! { ! outlet_symbol(x->x_outfile, &s_); ! outlet_symbol(x->x_outpath, s); ! } ! } ! } ! ! static void *splitfilename_new(t_symbol *s, int ac, t_atom *av) ! { ! t_splitfilename *x = (t_splitfilename *)pd_new(splitfilename_class); ! ! x->x_sep[0] = 0; ! x->x_sep[1] = 0; ! if(ac == 0) ! x->x_sep[0] = '/'; ! else ! splitfilename_separator(x, s, ac, av); ! x->x_outpath = outlet_new(&x->x_obj, &s_symbol); ! x->x_outfile = outlet_new(&x->x_obj, &s_symbol); ! return (x); ! } ! ! void splitfilename_setup(void) ! { ! splitfilename_class = class_new(gensym("splitfilename"), (t_newmethod)splitfilename_new, ! 0, sizeof(t_splitfilename), 0, A_GIMME, 0); ! class_addsymbol(splitfilename_class, splitfilename_symbol); ! class_addmethod(splitfilename_class, (t_method)splitfilename_separator, gensym("separator"), A_GIMME, 0); ! class_addmethod(splitfilename_class, (t_method)splitfilename_separator, gensym("sep"), A_GIMME, 0); ! class_sethelpsymbol(splitfilename_class, gensym("iemhelp/help-splitfilename")); ! } --- 1,143 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! ! /* ----------------------- splitfilename -------------------------- */ ! /* -- splits a symbol into 2 parts (path + file) at the position -- */ ! /* -- of the first separator-character beginnig from the right ---- */ ! /* ---------- eliminating the separator-character ----------------- */ ! ! static t_class *splitfilename_class; ! ! typedef struct _splitfilename ! { ! t_object x_obj; ! char x_sep[2]; ! void *x_outpath; ! void *x_outfile; ! } t_splitfilename; ! ! static void splitfilename_separator(t_splitfilename *x, t_symbol *s, int ac, t_atom *av) ! { ! if(ac > 0) ! { ! if(IS_A_SYMBOL(av, 0)) ! { ! if(strlen(av->a_w.w_symbol->s_name) == 1) ! x->x_sep[0] = av->a_w.w_symbol->s_name[0]; ! else if(!strcmp(av->a_w.w_symbol->s_name, "backslash")) ! x->x_sep[0] = '\'; ! else if(!strcmp(av->a_w.w_symbol->s_name, "slash")) ! x->x_sep[0] = '/'; ! else if(!strcmp(av->a_w.w_symbol->s_name, "blank")) ! x->x_sep[0] = ' '; ! else if(!strcmp(av->a_w.w_symbol->s_name, "space")) ! x->x_sep[0] = ' '; ! else if(!strcmp(av->a_w.w_symbol->s_name, "dollar")) ! x->x_sep[0] = '$'; ! else if(!strcmp(av->a_w.w_symbol->s_name, "comma")) ! x->x_sep[0] = ','; ! else if(!strcmp(av->a_w.w_symbol->s_name, "semi")) ! x->x_sep[0] = ';'; ! else if(!strcmp(av->a_w.w_symbol->s_name, "leftbrace")) ! x->x_sep[0] = '{'; ! else if(!strcmp(av->a_w.w_symbol->s_name, "rightbrace")) ! x->x_sep[0] = '}'; ! else ! x->x_sep[0] = '/'; ! } ! else if(IS_A_FLOAT(av, 0)) ! { ! int i; ! float f=fabs(av->a_w.w_float); ! ! while(f >= 10.0) ! f *= 0.1; ! i = (int)f; ! x->x_sep[0] = (char)i + '0'; ! } ! } ! else ! x->x_sep[0] = 0; ! } ! ! static void splitfilename_symbol(t_splitfilename *x, t_symbol *s) ! { ! int len = strlen(s->s_name); ! ! if(len) ! { ! if(x->x_sep[0] != 0) ! { ! char *str_path = (char *)getbytes(len*sizeof(char)); ! char *str_file = (char *)getbytes(len*sizeof(char)); ! char *cpp, *cpf; ! ! strcpy(str_path, s->s_name); ! strcpy(str_file, s->s_name); ! cpp = strrchr(str_path, x->x_sep[0]); ! cpf = strrchr(str_file, x->x_sep[0]); ! if(((int)cpp - (int)str_path) < 0) ! { ! outlet_symbol(x->x_outfile, gensym(str_file)); ! outlet_symbol(x->x_outpath, &s_); ! } ! else if(((int)cpp - (int)str_path) >= len) ! { ! outlet_symbol(x->x_outfile, &s_); ! outlet_symbol(x->x_outpath, gensym(str_path)); ! } ! else ! { ! *cpp = 0; ! cpf++; ! outlet_symbol(x->x_outfile, gensym(cpf)); ! outlet_symbol(x->x_outpath, gensym(str_path)); ! } ! freebytes(str_file, len*sizeof(char)); ! freebytes(str_path, len*sizeof(char)); ! } ! else ! { ! outlet_symbol(x->x_outfile, &s_); ! outlet_symbol(x->x_outpath, s); ! } ! } ! } ! ! static void *splitfilename_new(t_symbol *s, int ac, t_atom *av) ! { ! t_splitfilename *x = (t_splitfilename *)pd_new(splitfilename_class); ! ! x->x_sep[0] = 0; ! x->x_sep[1] = 0; ! if(ac == 0) ! x->x_sep[0] = '/'; ! else ! splitfilename_separator(x, s, ac, av); ! x->x_outpath = outlet_new(&x->x_obj, &s_symbol); ! x->x_outfile = outlet_new(&x->x_obj, &s_symbol); ! return (x); ! } ! ! void splitfilename_setup(void) ! { ! splitfilename_class = class_new(gensym("splitfilename"), (t_newmethod)splitfilename_new, ! 0, sizeof(t_splitfilename), 0, A_GIMME, 0); ! class_addsymbol(splitfilename_class, splitfilename_symbol); ! class_addmethod(splitfilename_class, (t_method)splitfilename_separator, gensym("separator"), A_GIMME, 0); ! class_addmethod(splitfilename_class, (t_method)splitfilename_separator, gensym("sep"), A_GIMME, 0); ! class_sethelpsymbol(splitfilename_class, gensym("iemhelp/help-splitfilename")); ! }
Index: prepend_kernel.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/prepend_kernel.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** prepend_kernel.c 18 May 2004 21:33:33 -0000 1.1.1.1 --- prepend_kernel.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,351 **** ! /* Copyright (c) 1997-2003 Miller Puckette. ! * For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! ! /* ------------------------ prepend_kernel ---------------------------- */ ! static t_class *prepend_kernel_class; ! ! typedef struct _prepend_kernel ! { ! t_object x_obj; ! int x_inlet_select; ! int x_size12; ! int x_size2; ! int x_ac1; ! int x_ac2; ! t_atom *x_at12; ! t_atom *x_at2; ! t_symbol *x_sym1; ! t_symbol *x_sym2; ! t_atomtype x_type1; ! t_atomtype x_type2; ! } t_prepend_kernel; ! ! static void prepend_kernel_atcopy(t_atom *src, t_atom *dst, int n) ! { ! while(n--) ! *dst++ = *src++; ! } ! ! static void prepend_kernel_merge(t_prepend_kernel *x, int off) ! { ! if((x->x_ac1+x->x_ac2) > x->x_size1) ! { ! x->x_at1 = (t_atom *)resizebytes(x->x_at1, x->x_size1*sizeof(t_atom), 2*(x->x_ac1+x->x_ac2)*sizeof(t_atom)); ! x->x_size1 = 2*(x->x_ac1+x->x_ac2); ! } ! if(off) ! SETSYMBOL(x->x_at1 + x->x_ac1, x->x_sym2); ! prepend_kernel_atcopy(x->x_at2, x->x_at1 + x->x_ac1 + off, x->x_ac2); ! } ! ! static void prepend_kernel_out(t_prepend_kernel *x) ! { ! int off=0; ! ! if(x->x_type1 == A_GIMME) ! { ! if(x->x_type2 == A_COMMA) ! off = 1; ! else ! off = 0; ! prepend_kernel_merge(x, off); ! outlet_list(x->x_obj.ob_outlet, &s_list, x->x_ac1+x->x_ac2+off, x->x_at1); ! } ! else if(x->x_type1 == A_COMMA) ! { ! if(x->x_type2 == A_COMMA) ! off = 1; ! else ! off = 0; ! prepend_kernel_merge(x, off); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym1, x->x_ac1+x->x_ac2+off, x->x_at1); ! } ! else if(x->x_type1 == A_NULL)/*depends on 2.part*/ ! { ! prepend_kernel_merge(x, 0); ! if(x->x_type2 == A_GIMME) ! outlet_list(x->x_obj.ob_outlet, &s_list, x->x_ac2, x->x_at1); ! else if(x->x_type2 == A_COMMA) ! outlet_anything(x->x_obj.ob_outlet, x->x_sym2, x->x_ac2, x->x_at1); ! else if(x->x_type2 == A_FLOAT) ! outlet_float(x->x_obj.ob_outlet, atom_getfloat(x->x_at1)); ! else if(x->x_type2 == A_SYMBOL) ! outlet_symbol(x->x_obj.ob_outlet, atom_getsymbol(x->x_at1)); ! else if(x->x_type2 == A_NULL) ! outlet_bang(x->x_obj.ob_outlet); ! else if(x->x_type2 == A_POINTER) ! outlet_pointer(x->x_obj.ob_outlet, (t_gpointer *)x->x_at1->a_w.w_gpointer); ! } ! else ! { ! if(x->x_type2 == A_COMMA) ! off = 1; ! else ! off = 0; ! prepend_kernel_merge(x, off); ! if(x->x_type2 == A_NULL) ! { ! if(x->x_type1 == A_FLOAT) ! outlet_float(x->x_obj.ob_outlet, atom_getfloat(x->x_at1)); ! else if(x->x_type1 == A_SYMBOL) ! outlet_symbol(x->x_obj.ob_outlet, atom_getsymbol(x->x_at1)); ! else if(x->x_type1 == A_POINTER) ! outlet_pointer(x->x_obj.ob_outlet, (t_gpointer *)x->x_at1->a_w.w_gpointer); ! } ! else ! outlet_list(x->x_obj.ob_outlet, &s_list, x->x_ac1+x->x_ac2+off, x->x_at1); ! } ! } ! ! static void prepend_kernel_inlet_select(t_prepend_kernel *x, t_floatarg fin_sel_01) ! { ! x->x_inlet_select = (int)fin_sel_01; ! } ! ! static void prepend_kernel_bang(t_prepend_kernel *x) ! { ! if(!x->x_inlet_select) /* if 2nd inlet */ ! { ! x->x_ac2 = 0; ! x->x_type2 = A_NULL; ! x->x_sym2 = &s_list; ! } ! else /* if 1st inlet */ ! { ! x->x_ac1 = 0; ! x->x_type1 = A_NULL; ! prepend_kernel_out(x); ! } ! } ! ! static void prepend_kernel_float(t_prepend_kernel *x, t_float f) ! { ! if(!x->x_inlet_select) /* if 2nd inlet */ ! { ! x->x_ac2 = 1; ! x->x_type2 = A_FLOAT; ! SETFLOAT(x->x_at2, f); ! x->x_sym2 = &s_list; ! } ! else /* if 1st inlet */ ! { ! x->x_ac1 = 1; ! x->x_type1 = A_FLOAT; ! SETFLOAT(x->x_at1, f); ! prepend_kernel_out(x); ! } ! } ! ! static void prepend_kernel_symbol(t_prepend_kernel *x, t_symbol *s) ! { ! if(!x->x_inlet_select) /* if 2nd inlet */ ! { ! x->x_ac2 = 1; ! x->x_type2 = A_SYMBOL; ! SETSYMBOL(x->x_at2, s); ! x->x_sym2 = &s_list; ! } ! else /* if 1st inlet */ ! { ! x->x_ac1 = 1; ! x->x_type1 = A_SYMBOL; ! SETSYMBOL(x->x_at12, s); ! prepend_kernel_out(x); ! } ! } ! ! static void prepend_kernel_pointer(t_prepend_kernel *x, t_gpointer *gp) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! x->x_ac2 = 1; ! x->x_type2 = A_POINTER; ! SETPOINTER(x->x_at2, gp); ! x->x_sym2 = &s_list; ! } ! else /* if 1st inlet */ ! { ! x->x_ac1 = 1; ! x->x_type1 = A_POINTER; ! SETPOINTER(x->x_at12, gp); ! prepend_kernel_out(x); ! } ! } ! ! static void prepend_kernel_list(t_prepend_kernel *x, t_symbol *s, int ac, t_atom *av) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! if(ac > x->x_size2) ! { ! x->x_at2 = (t_atom *)resizebytes(x->x_at2, x->x_size2*sizeof(t_atom), 2*ac*sizeof(t_atom)); ! x->x_size2 = 2*ac; ! } ! x->x_ac2 = ac; ! x->x_type2 = A_GIMME; ! x->x_sym2 = &s_list; ! prepend_kernel_atcopy(av, x->x_at2, ac); ! } ! else /* if 1st inlet */ ! { ! if((x->x_ac1+ac) > x->x_size12) ! { ! x->x_at12 = (t_atom *)resizebytes(x->x_at12, x->x_size12*sizeof(t_atom), 2*(x->x_ac1+ac)*sizeof(t_atom)); ! x->x_size12 = 2*(x->x_ac1+ac); ! } ! x->x_ac1 = ac; ! x->x_type1 = A_GIMME; ! prepend_kernel_atcopy(av, x->x_at12, ac); ! x->x_sym1 = &s_list; ! prepend_kernel_out(x); ! } ! } ! ! static void prepend_kernel_anything(t_prepend_kernel *x, t_symbol *s, int ac, t_atom *av) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! if((ac+1) > x->x_size2) ! { ! x->x_at2 = (t_atom *)resizebytes(x->x_at2, x->x_size2*sizeof(t_atom), 2*ac*sizeof(t_atom)); ! x->x_size2 = 2*ac; ! } ! SETSYMBOL(x->x_at2, s); ! x->x_ac2 = ac; ! x->x_type2 = A_COMMA; ! x->x_sym2 = s; ! prepend_kernel_atcopy(av, x->x_at2, ac); ! } ! else /* if 1st inlet */ ! { ! if((x->x_ac1+ac) > x->x_size12) ! { ! x->x_at12 = (t_atom *)resizebytes(x->x_at12, x->x_size12*sizeof(t_atom), (2*x->x_ac1+ac)*sizeof(t_atom)); ! x->x_size12 = (2*x->x_ac1+ac); ! } ! x->x_ac1 = ac; ! x->x_type1 = A_COMMA; ! prepend_kernel_atcopy(av, x->x_at12, ac); ! x->x_sym1 = s; ! prepend_kernel_out(x); ! } ! } ! ! static void prepend_kernel_free(t_prepend_kernel *x) ! { ! if(x->x_at1) ! freebytes(x->x_at1, x->x_size1 * sizeof(t_atom)); ! } ! ! static void *prepend_kernel_new(void) ! { ! t_prepend_kernel *x = (t_prepend_kernel *)pd_new(prepend_kernel_class); ! t_glist *glist = (t_glist *)canvas_getcurrent(); ! t_canvas *canvas=glist_getcanvas(glist); ! int ac=0; ! t_atom *av; ! ! x->x_type2 = A_NULL; ! x->x_sym2 = &s_list; ! x->x_ac2 = 0; ! ! canvas_setcurrent(canvas); ! canvas_getargs(&ac, &av); ! canvas_unsetcurrent(canvas); ! ! x->x_type1 = A_NULL; ! if(!ac) ! { ! x->x_type1 = A_NULL; ! x->x_sym1 = &s_bang; ! x->x_size1 = 10; ! x->x_ac1 = 0; ! x->x_at1 = (t_atom *)getbytes(x->x_size1 * sizeof(t_atom)); ! } ! else if(ac == 1) ! { ! if(IS_A_SYMBOL(av,0)) ! { ! x->x_type1 = A_COMMA; ! x->x_sym1 = atom_getsymbol(av); ! x->x_size1 = 10; ! x->x_ac1 = 0; ! x->x_at1 = (t_atom *)getbytes(x->x_size1 * sizeof(t_atom)); ! } ! else ! { ! if(IS_A_FLOAT(av,0)) ! { ! x->x_type1 = A_FLOAT; ! x->x_sym1 = &s_float; ! } ! else if(IS_A_POINTER(av,0)) ! { ! x->x_type1 = A_POINTER; ! x->x_sym1 = &s_pointer; ! } ! x->x_size1 = 11; ! x->x_ac1 = 1; ! x->x_at1 = (t_atom *)getbytes(x->x_size1 * sizeof(t_atom)); ! x->x_at1[0] = *av; ! } ! } ! else /* ac > 1 */ ! { ! if(IS_A_SYMBOL(av,0)) ! { ! x->x_type1 = A_COMMA;/*for anything*/ ! x->x_sym1 = atom_getsymbol(av++); ! ac--; ! } ! else ! { ! x->x_type1 = A_GIMME; ! x->x_sym1 = &s_list; ! } ! x->x_size1 = ac + 10; ! x->x_ac1 = ac; ! x->x_at1 = (t_atom *)getbytes(x->x_size1 * sizeof(t_atom)); ! prepend_kernel_atcopy(av, x->x_at1, ac); ! } ! ! x->x_inlet_select = 1; ! outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! ! void prepend_kernel_setup(void) ! { ! char str[2]; ! ! str[0] = 1; ! str[1] = 0; ! prepend_kernel_class = class_new(gensym("prepend_kernel"), ! (t_newmethod)prepend_kernel_new, (t_method)prepend_kernel_free, ! sizeof(t_prepend_kernel), 0, 0); ! class_addbang(prepend_kernel_class, (t_method)prepend_kernel_bang); ! class_addpointer(prepend_kernel_class, prepend_kernel_pointer); ! class_addfloat(prepend_kernel_class, (t_method)prepend_kernel_float); ! class_addsymbol(prepend_kernel_class, prepend_kernel_symbol); ! class_addlist(prepend_kernel_class, prepend_kernel_list); ! class_addmethod(prepend_kernel_class, (t_method)prepend_kernel_inlet_select, gensym(str), A_FLOAT, 0); ! class_addanything(prepend_kernel_class, prepend_kernel_anything); ! class_sethelpsymbol(prepend_kernel_class, gensym("iemhelp/help-merge_any")); ! } ! --- 1,349 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2004 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! ! /* ------------------------ prepend_kernel ---------------------------- */ ! static t_class *prepend_kernel_class; ! ! typedef struct _prepend_kernel ! { ! t_object x_obj; ! int x_inlet_select; ! int x_size12; ! int x_size2; ! int x_ac1; ! int x_ac2; ! t_atom *x_at12; ! t_atom *x_at2; ! t_symbol *x_sym1; ! t_symbol *x_sym2; ! t_atomtype x_type1; ! t_atomtype x_type2; ! } t_prepend_kernel; ! ! static void prepend_kernel_atcopy(t_atom *src, t_atom *dst, int n) ! { ! while(n--) ! *dst++ = *src++; ! } ! ! static void prepend_kernel_merge(t_prepend_kernel *x, int off) ! { ! if((x->x_ac1+x->x_ac2) > x->x_size1) ! { ! x->x_at1 = (t_atom *)resizebytes(x->x_at1, x->x_size1*sizeof(t_atom), 2*(x->x_ac1+x->x_ac2)*sizeof(t_atom)); ! x->x_size1 = 2*(x->x_ac1+x->x_ac2); ! } ! if(off) ! SETSYMBOL(x->x_at1 + x->x_ac1, x->x_sym2); ! prepend_kernel_atcopy(x->x_at2, x->x_at1 + x->x_ac1 + off, x->x_ac2); ! } ! ! static void prepend_kernel_out(t_prepend_kernel *x) ! { ! int off=0; ! ! if(x->x_type1 == A_GIMME) ! { ! if(x->x_type2 == A_COMMA) ! off = 1; ! else ! off = 0; ! prepend_kernel_merge(x, off); ! outlet_list(x->x_obj.ob_outlet, &s_list, x->x_ac1+x->x_ac2+off, x->x_at1); ! } ! else if(x->x_type1 == A_COMMA) ! { ! if(x->x_type2 == A_COMMA) ! off = 1; ! else ! off = 0; ! prepend_kernel_merge(x, off); ! outlet_anything(x->x_obj.ob_outlet, x->x_sym1, x->x_ac1+x->x_ac2+off, x->x_at1); ! } ! else if(x->x_type1 == A_NULL)/*depends on 2.part*/ ! { ! prepend_kernel_merge(x, 0); ! if(x->x_type2 == A_GIMME) ! outlet_list(x->x_obj.ob_outlet, &s_list, x->x_ac2, x->x_at1); ! else if(x->x_type2 == A_COMMA) ! outlet_anything(x->x_obj.ob_outlet, x->x_sym2, x->x_ac2, x->x_at1); ! else if(x->x_type2 == A_FLOAT) ! outlet_float(x->x_obj.ob_outlet, atom_getfloat(x->x_at1)); ! else if(x->x_type2 == A_SYMBOL) ! outlet_symbol(x->x_obj.ob_outlet, atom_getsymbol(x->x_at1)); ! else if(x->x_type2 == A_NULL) ! outlet_bang(x->x_obj.ob_outlet); ! else if(x->x_type2 == A_POINTER) ! outlet_pointer(x->x_obj.ob_outlet, (t_gpointer *)x->x_at1->a_w.w_gpointer); ! } ! else ! { ! if(x->x_type2 == A_COMMA) ! off = 1; ! else ! off = 0; ! prepend_kernel_merge(x, off); ! if(x->x_type2 == A_NULL) ! { ! if(x->x_type1 == A_FLOAT) ! outlet_float(x->x_obj.ob_outlet, atom_getfloat(x->x_at1)); ! else if(x->x_type1 == A_SYMBOL) ! outlet_symbol(x->x_obj.ob_outlet, atom_getsymbol(x->x_at1)); ! else if(x->x_type1 == A_POINTER) ! outlet_pointer(x->x_obj.ob_outlet, (t_gpointer *)x->x_at1->a_w.w_gpointer); ! } ! else ! outlet_list(x->x_obj.ob_outlet, &s_list, x->x_ac1+x->x_ac2+off, x->x_at1); ! } ! } ! ! static void prepend_kernel_inlet_select(t_prepend_kernel *x, t_floatarg fin_sel_01) ! { ! x->x_inlet_select = (int)fin_sel_01; ! } ! ! static void prepend_kernel_bang(t_prepend_kernel *x) ! { ! if(!x->x_inlet_select) /* if 2nd inlet */ ! { ! x->x_ac2 = 0; ! x->x_type2 = A_NULL; ! x->x_sym2 = &s_list; ! } ! else /* if 1st inlet */ ! { ! x->x_ac1 = 0; ! x->x_type1 = A_NULL; ! prepend_kernel_out(x); ! } ! } ! ! static void prepend_kernel_float(t_prepend_kernel *x, t_float f) ! { ! if(!x->x_inlet_select) /* if 2nd inlet */ ! { ! x->x_ac2 = 1; ! x->x_type2 = A_FLOAT; ! SETFLOAT(x->x_at2, f); ! x->x_sym2 = &s_list; ! } ! else /* if 1st inlet */ ! { ! x->x_ac1 = 1; ! x->x_type1 = A_FLOAT; ! SETFLOAT(x->x_at1, f); ! prepend_kernel_out(x); ! } ! } ! ! static void prepend_kernel_symbol(t_prepend_kernel *x, t_symbol *s) ! { ! if(!x->x_inlet_select) /* if 2nd inlet */ ! { ! x->x_ac2 = 1; ! x->x_type2 = A_SYMBOL; ! SETSYMBOL(x->x_at2, s); ! x->x_sym2 = &s_list; ! } ! else /* if 1st inlet */ ! { ! x->x_ac1 = 1; ! x->x_type1 = A_SYMBOL; ! SETSYMBOL(x->x_at12, s); ! prepend_kernel_out(x); ! } ! } ! ! static void prepend_kernel_pointer(t_prepend_kernel *x, t_gpointer *gp) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! x->x_ac2 = 1; ! x->x_type2 = A_POINTER; ! SETPOINTER(x->x_at2, gp); ! x->x_sym2 = &s_list; ! } ! else /* if 1st inlet */ ! { ! x->x_ac1 = 1; ! x->x_type1 = A_POINTER; ! SETPOINTER(x->x_at12, gp); ! prepend_kernel_out(x); ! } ! } ! ! static void prepend_kernel_list(t_prepend_kernel *x, t_symbol *s, int ac, t_atom *av) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! if(ac > x->x_size2) ! { ! x->x_at2 = (t_atom *)resizebytes(x->x_at2, x->x_size2*sizeof(t_atom), 2*ac*sizeof(t_atom)); ! x->x_size2 = 2*ac; ! } ! x->x_ac2 = ac; ! x->x_type2 = A_GIMME; ! x->x_sym2 = &s_list; ! prepend_kernel_atcopy(av, x->x_at2, ac); ! } ! else /* if 1st inlet */ ! { ! if((x->x_ac1+ac) > x->x_size12) ! { ! x->x_at12 = (t_atom *)resizebytes(x->x_at12, x->x_size12*sizeof(t_atom), 2*(x->x_ac1+ac)*sizeof(t_atom)); ! x->x_size12 = 2*(x->x_ac1+ac); ! } ! x->x_ac1 = ac; ! x->x_type1 = A_GIMME; ! prepend_kernel_atcopy(av, x->x_at12, ac); ! x->x_sym1 = &s_list; ! prepend_kernel_out(x); ! } ! } ! ! static void prepend_kernel_anything(t_prepend_kernel *x, t_symbol *s, int ac, t_atom *av) ! { ! if(x->x_inlet_select) /* if 2nd inlet */ ! { ! if((ac+1) > x->x_size2) ! { ! x->x_at2 = (t_atom *)resizebytes(x->x_at2, x->x_size2*sizeof(t_atom), 2*ac*sizeof(t_atom)); ! x->x_size2 = 2*ac; ! } ! SETSYMBOL(x->x_at2, s); ! x->x_ac2 = ac; ! x->x_type2 = A_COMMA; ! x->x_sym2 = s; ! prepend_kernel_atcopy(av, x->x_at2, ac); ! } ! else /* if 1st inlet */ ! { ! if((x->x_ac1+ac) > x->x_size12) ! { ! x->x_at12 = (t_atom *)resizebytes(x->x_at12, x->x_size12*sizeof(t_atom), (2*x->x_ac1+ac)*sizeof(t_atom)); ! x->x_size12 = (2*x->x_ac1+ac); ! } ! x->x_ac1 = ac; ! x->x_type1 = A_COMMA; ! prepend_kernel_atcopy(av, x->x_at12, ac); ! x->x_sym1 = s; ! prepend_kernel_out(x); ! } ! } ! ! static void prepend_kernel_free(t_prepend_kernel *x) ! { ! if(x->x_at1) ! freebytes(x->x_at1, x->x_size1 * sizeof(t_atom)); ! } ! ! static void *prepend_kernel_new(void) ! { ! t_prepend_kernel *x = (t_prepend_kernel *)pd_new(prepend_kernel_class); ! t_glist *glist = (t_glist *)canvas_getcurrent(); ! t_canvas *canvas=glist_getcanvas(glist); ! int ac=0; ! t_atom *av; ! ! x->x_type2 = A_NULL; ! x->x_sym2 = &s_list; ! x->x_ac2 = 0; ! ! canvas_setcurrent(canvas); ! canvas_getargs(&ac, &av); ! canvas_unsetcurrent(canvas); ! ! x->x_type1 = A_NULL; ! if(!ac) ! { ! x->x_type1 = A_NULL; ! x->x_sym1 = &s_bang; ! x->x_size1 = 10; ! x->x_ac1 = 0; ! x->x_at1 = (t_atom *)getbytes(x->x_size1 * sizeof(t_atom)); ! } ! else if(ac == 1) ! { ! if(IS_A_SYMBOL(av,0)) ! { ! x->x_type1 = A_COMMA; ! x->x_sym1 = atom_getsymbol(av); ! x->x_size1 = 10; ! x->x_ac1 = 0; ! x->x_at1 = (t_atom *)getbytes(x->x_size1 * sizeof(t_atom)); ! } ! else ! { ! if(IS_A_FLOAT(av,0)) ! { ! x->x_type1 = A_FLOAT; ! x->x_sym1 = &s_float; ! } ! else if(IS_A_POINTER(av,0)) ! { ! x->x_type1 = A_POINTER; ! x->x_sym1 = &s_pointer; ! } ! x->x_size1 = 11; ! x->x_ac1 = 1; ! x->x_at1 = (t_atom *)getbytes(x->x_size1 * sizeof(t_atom)); ! x->x_at1[0] = *av; ! } ! } ! else /* ac > 1 */ ! { ! if(IS_A_SYMBOL(av,0)) ! { ! x->x_type1 = A_COMMA;/*for anything*/ ! x->x_sym1 = atom_getsymbol(av++); ! ac--; ! } ! else ! { ! x->x_type1 = A_GIMME; ! x->x_sym1 = &s_list; ! } ! x->x_size1 = ac + 10; ! x->x_ac1 = ac; ! x->x_at1 = (t_atom *)getbytes(x->x_size1 * sizeof(t_atom)); ! prepend_kernel_atcopy(av, x->x_at1, ac); ! } ! ! x->x_inlet_select = 1; ! outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! ! void prepend_kernel_setup(void) ! { ! char str[2]; ! ! str[0] = 1; ! str[1] = 0; ! prepend_kernel_class = class_new(gensym("prepend_kernel"), ! (t_newmethod)prepend_kernel_new, (t_method)prepend_kernel_free, ! sizeof(t_prepend_kernel), 0, 0); ! class_addbang(prepend_kernel_class, (t_method)prepend_kernel_bang); ! class_addpointer(prepend_kernel_class, prepend_kernel_pointer); ! class_addfloat(prepend_kernel_class, (t_method)prepend_kernel_float); ! class_addsymbol(prepend_kernel_class, prepend_kernel_symbol); ! class_addlist(prepend_kernel_class, prepend_kernel_list); ! class_addmethod(prepend_kernel_class, (t_method)prepend_kernel_inlet_select, gensym(str), A_FLOAT, 0); ! class_addanything(prepend_kernel_class, prepend_kernel_anything); ! class_sethelpsymbol(prepend_kernel_class, gensym("iemhelp/help-merge_any")); ! }
Index: iem_anything_kernel.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/iem_anything_kernel.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** iem_anything_kernel.c 18 May 2004 21:33:31 -0000 1.1.1.1 --- iem_anything_kernel.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,148 **** ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "g_canvas.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! EXTERN void canvas_getargs(int *argcp, t_atom **argvp); ! ! /* ------------------------ iem_anything_kernel ---------------------------- */ ! static t_class *iem_anything_kernel_class; ! ! typedef struct _iem_anything_kernel ! { ! t_object x_obj; ! int x_inlet_select; ! int x_size; ! int x_ac; ! t_atom *x_at; ! t_symbol *x_sym; ! } t_iem_anything_kernel; ! ! static void iem_anything_kernel_atcopy(t_atom *src, t_atom *dst, int n) ! { ! while(n--) ! *dst++ = *src++; ! } ! ! static void iem_anything_kernel_inlet_select(t_iem_anything_kernel *x, t_floatarg in_sel_01) ! { ! x->x_inlet_select = (int)in_sel_01; ! } ! ! static void iem_anything_kernel_anything(t_iem_anything_kernel *x, t_symbol *s, int ac, t_atom *av) ! { ! if((ac == 0)&&(s == &s_bang)) ! { ! if(x->x_inlet_select) ! { ! x->x_ac = ac; ! x->x_sym = s; ! } ! else ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac, x->x_at); ! } ! else ! { ! if(ac > x->x_size) ! { ! x->x_at = (t_atom *)resizebytes(x->x_at, x->x_size*sizeof(t_atom), ac*sizeof(t_atom)); ! x->x_size = ac; ! } ! x->x_ac = ac; ! x->x_sym = s; ! iem_anything_kernel_atcopy(av, x->x_at, ac); ! if(!x->x_inlet_select) ! outlet_anything(x->x_obj.ob_outlet, s, ac, av); ! } ! } ! ! static void iem_anything_kernel_free(t_iem_anything_kernel *x) ! { ! if(x->x_at) ! freebytes(x->x_at, x->x_size * sizeof(t_atom)); ! } ! ! static void *iem_anything_kernel_new(void) ! { ! t_iem_anything_kernel *x = (t_iem_anything_kernel *)pd_new(iem_anything_kernel_class); ! t_glist *glist = (t_glist *)canvas_getcurrent(); ! t_canvas *canvas=glist_getcanvas(glist); ! int ac=0; ! t_atom *av; ! ! canvas_setcurrent(canvas); ! canvas_getargs(&ac, &av); ! canvas_unsetcurrent(canvas); ! ! if(!ac) ! { ! x->x_sym = &s_bang; ! x->x_size = 10; ! x->x_ac = 0; ! x->x_at = (t_atom *)getbytes(x->x_size * sizeof(t_atom)); ! } ! else if(ac == 1) ! { ! x->x_size = 10; ! x->x_at = (t_atom *)getbytes(x->x_size * sizeof(t_atom)); ! if(IS_A_SYMBOL(av,0)) ! { ! x->x_sym = atom_getsymbol(av); ! x->x_ac = 0; ! } ! else ! { ! x->x_sym = &s_list; ! x->x_ac = 1; ! x->x_at[0] = *av; ! } ! } ! else /* ac > 1 */ ! { ! if(IS_A_SYMBOL(av,0)) ! { ! x->x_sym = atom_getsymbol(av++); ! ac--; ! } ! else ! x->x_sym = &s_list; ! if(ac < 10) ! x->x_size = 10; ! else ! x->x_size = ac; ! x->x_ac = ac; ! x->x_at = (t_atom *)getbytes(x->x_size * sizeof(t_atom)); ! iem_anything_kernel_atcopy(av, x->x_at, ac); ! } ! x->x_inlet_select = 1; ! outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! ! void iem_anything_kernel_setup(void) ! { ! char str[2]; ! ! str[0] = 1;/*inlet-sym = "\0x01"*/ ! str[1] = 0; ! iem_anything_kernel_class = class_new(gensym("iem_anything_kernel"), ! (t_newmethod)iem_anything_kernel_new, (t_method)iem_anything_kernel_free, ! sizeof(t_iem_anything_kernel), 0, 0); ! class_addmethod(iem_anything_kernel_class, (t_method)iem_anything_kernel_inlet_select, gensym(str), A_FLOAT, 0); ! class_addanything(iem_anything_kernel_class, iem_anything_kernel_anything); ! class_sethelpsymbol(iem_anything_kernel_class, gensym("iemhelp/help-iem_anything")); ! } ! --- 1,148 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "g_canvas.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! EXTERN void canvas_getargs(int *argcp, t_atom **argvp); ! ! /* ------------------------ iem_anything_kernel ---------------------------- */ ! ! static t_class *iem_anything_kernel_class; ! ! typedef struct _iem_anything_kernel ! { ! t_object x_obj; ! int x_inlet_select; ! int x_size; ! int x_ac; ! t_atom *x_at; ! t_symbol *x_sym; ! } t_iem_anything_kernel; ! ! static void iem_anything_kernel_atcopy(t_atom *src, t_atom *dst, int n) ! { ! while(n--) ! *dst++ = *src++; ! } ! ! static void iem_anything_kernel_inlet_select(t_iem_anything_kernel *x, t_floatarg in_sel_01) ! { ! x->x_inlet_select = (int)in_sel_01; ! } ! ! static void iem_anything_kernel_anything(t_iem_anything_kernel *x, t_symbol *s, int ac, t_atom *av) ! { ! if((ac == 0)&&(s == &s_bang)) ! { ! if(x->x_inlet_select) ! { ! x->x_ac = ac; ! x->x_sym = s; ! } ! else ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, x->x_ac, x->x_at); ! } ! else ! { ! if(ac > x->x_size) ! { ! x->x_at = (t_atom *)resizebytes(x->x_at, x->x_size*sizeof(t_atom), ac*sizeof(t_atom)); ! x->x_size = ac; ! } ! x->x_ac = ac; ! x->x_sym = s; ! iem_anything_kernel_atcopy(av, x->x_at, ac); ! if(!x->x_inlet_select) ! outlet_anything(x->x_obj.ob_outlet, s, ac, av); ! } ! } ! ! static void iem_anything_kernel_free(t_iem_anything_kernel *x) ! { ! if(x->x_at) ! freebytes(x->x_at, x->x_size * sizeof(t_atom)); ! } ! ! static void *iem_anything_kernel_new(void) ! { ! t_iem_anything_kernel *x = (t_iem_anything_kernel *)pd_new(iem_anything_kernel_class); ! t_glist *glist = (t_glist *)canvas_getcurrent(); ! t_canvas *canvas=glist_getcanvas(glist); ! int ac=0; ! t_atom *av; ! ! canvas_setcurrent(canvas); ! canvas_getargs(&ac, &av); ! canvas_unsetcurrent(canvas); ! ! if(!ac) ! { ! x->x_sym = &s_bang; ! x->x_size = 10; ! x->x_ac = 0; ! x->x_at = (t_atom *)getbytes(x->x_size * sizeof(t_atom)); ! } ! else if(ac == 1) ! { ! x->x_size = 10; ! x->x_at = (t_atom *)getbytes(x->x_size * sizeof(t_atom)); ! if(IS_A_SYMBOL(av,0)) ! { ! x->x_sym = atom_getsymbol(av); ! x->x_ac = 0; ! } ! else ! { ! x->x_sym = &s_list; ! x->x_ac = 1; ! x->x_at[0] = *av; ! } ! } ! else /* ac > 1 */ ! { ! if(IS_A_SYMBOL(av,0)) ! { ! x->x_sym = atom_getsymbol(av++); ! ac--; ! } ! else ! x->x_sym = &s_list; ! if(ac < 10) ! x->x_size = 10; ! else ! x->x_size = ac; ! x->x_ac = ac; ! x->x_at = (t_atom *)getbytes(x->x_size * sizeof(t_atom)); ! iem_anything_kernel_atcopy(av, x->x_at, ac); ! } ! x->x_inlet_select = 1; ! outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! ! void iem_anything_kernel_setup(void) ! { ! char str[2]; ! ! str[0] = 1;/*inlet-sym = "\0x01"*/ ! str[1] = 0; ! iem_anything_kernel_class = class_new(gensym("iem_anything_kernel"), ! (t_newmethod)iem_anything_kernel_new, (t_method)iem_anything_kernel_free, ! sizeof(t_iem_anything_kernel), 0, 0); ! class_addmethod(iem_anything_kernel_class, (t_method)iem_anything_kernel_inlet_select, gensym(str), A_FLOAT, 0); ! class_addanything(iem_anything_kernel_class, iem_anything_kernel_anything); ! class_sethelpsymbol(iem_anything_kernel_class, gensym("iemhelp/help-iem_anything")); ! }
Index: iem_route.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/iem_route.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** iem_route.c 18 May 2004 21:33:32 -0000 1.1.1.1 --- iem_route.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,198 **** ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* -------------------------- iem_route ------------------------------ */ ! ! static t_class *iem_route_class; ! ! typedef struct _iem_routeelement ! { ! t_word e_w; ! t_outlet *e_outlet; ! } t_iem_routeelement; ! ! typedef struct _iem_route ! { ! t_object x_obj; ! t_atomtype x_type; ! t_int x_nelement; ! t_iem_routeelement *x_vec; ! t_outlet *x_rejectout; ! } t_iem_route; ! ! static void iem_route_anything(t_iem_route *x, t_symbol *sel, int argc, t_atom *argv) ! { ! t_iem_routeelement *e; ! int nelement; ! ! if(x->x_type == A_SYMBOL) ! { ! for(nelement = x->x_nelement, e = x->x_vec; nelement--; e++) ! { ! if(e->e_w.w_symbol == sel) ! { ! if(!argc) ! outlet_bang(e->e_outlet); ! else ! { ! if(argc == 1) ! { ! if(argv[0].a_type == A_FLOAT) ! outlet_float(e->e_outlet, argv[0].a_w.w_float); ! else ! outlet_anything(e->e_outlet, argv[0].a_w.w_symbol, 0, argv+1); ! } ! else ! { ! if(argv[0].a_type == A_SYMBOL) ! outlet_anything(e->e_outlet, argv[0].a_w.w_symbol, argc-1, argv+1); ! else ! outlet_list(e->e_outlet, &s_list, argc, argv); ! } ! } ! return; ! } ! } ! } ! outlet_anything(x->x_rejectout, sel, argc, argv); ! } ! ! static void iem_route_list(t_iem_route *x, t_symbol *sel, int argc, t_atom *argv) ! { ! t_iem_routeelement *e; ! int nelement; ! ! if (x->x_type == A_FLOAT) ! { ! float f; ! ! if(!argc) ! return; ! f = atom_getfloat(argv); ! for(nelement = x->x_nelement, e = x->x_vec; nelement--; e++) ! { ! if(e->e_w.w_float == f) ! { ! if(argc > 1 && argv[1].a_type == A_SYMBOL) ! outlet_anything(e->e_outlet, argv[1].a_w.w_symbol, argc-2, argv+2); ! else ! { ! if(argc == 1) ! outlet_bang(e->e_outlet); ! else if(argc == 2) ! outlet_float(e->e_outlet, atom_getfloat(argv+1)); ! else ! outlet_list(e->e_outlet, &s_list, argc-1, argv+1); ! } ! return; ! } ! } ! } ! else /* symbol arguments */ ! { ! if(argc > 1) /* 2 or more args: treat as "list" */ ! { ! for(nelement = x->x_nelement, e = x->x_vec; nelement--; e++) ! { ! if(e->e_w.w_symbol == &s_list) ! { ! if(argv[0].a_type == A_SYMBOL) ! outlet_anything(e->e_outlet, argv[0].a_w.w_symbol, argc-1, argv+1); ! else ! outlet_list(e->e_outlet, &s_list, argc, argv); ! return; ! } ! } ! } ! else if(argc == 0) /* no args: treat as "bang" */ ! { ! for (nelement = x->x_nelement, e = x->x_vec; nelement--; e++) ! { ! if (e->e_w.w_symbol == &s_bang) ! { ! outlet_bang(e->e_outlet); ! return; ! } ! } ! } ! else if (argv[0].a_type == A_FLOAT) /* one float arg */ ! { ! for (nelement = x->x_nelement, e = x->x_vec; nelement--; e++) ! { ! if (e->e_w.w_symbol == &s_float) ! { ! outlet_float(e->e_outlet, argv[0].a_w.w_float); ! return; ! } ! } ! } ! else ! { ! for (nelement = x->x_nelement, e = x->x_vec; nelement--; e++) ! { ! if (e->e_w.w_symbol == &s_symbol) ! { ! outlet_symbol(e->e_outlet, argv[0].a_w.w_symbol); ! return; ! } ! } ! } ! } ! outlet_list(x->x_rejectout, &s_list, argc, argv); ! } ! ! ! static void iem_route_free(t_iem_route *x) ! { ! freebytes(x->x_vec, x->x_nelement * sizeof(*x->x_vec)); ! } ! ! static void *iem_route_new(t_symbol *s, int argc, t_atom *argv) ! { ! int n; ! t_iem_routeelement *e; ! t_iem_route *x = (t_iem_route *)pd_new(iem_route_class); ! t_atom a; ! if (argc == 0) ! { ! argc = 1; ! SETFLOAT(&a, 0); ! argv = &a; ! } ! x->x_type = argv[0].a_type; ! x->x_nelement = argc; ! x->x_vec = (t_iem_routeelement *)getbytes(argc * sizeof(*x->x_vec)); ! for (n = 0, e = x->x_vec; n < argc; n++, e++) ! { ! e->e_outlet = outlet_new(&x->x_obj, &s_list); ! if (x->x_type == A_FLOAT) ! e->e_w.w_float = atom_getfloatarg(n, argc, argv); ! else e->e_w.w_symbol = atom_getsymbolarg(n, argc, argv); ! } ! x->x_rejectout = outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! ! void iem_route_setup(void) ! { ! iem_route_class = class_new(gensym("iem_route"), (t_newmethod)iem_route_new, ! (t_method)iem_route_free, sizeof(t_iem_route), 0, A_GIMME, 0); ! class_addcreator((t_newmethod)iem_route_new, gensym("ir"), A_GIMME, 0); ! class_addlist(iem_route_class, iem_route_list); ! class_addanything(iem_route_class, iem_route_anything); ! class_sethelpsymbol(iem_route_class, gensym("iemhelp/help-iem_route")); ! } --- 1,199 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* -------------------------- iem_route ------------------------------ */ ! /* -------- like millers route, but can output bangs ----------------- */ ! ! static t_class *iem_route_class; ! ! typedef struct _iem_routeelement ! { ! t_word e_w; ! t_outlet *e_outlet; ! } t_iem_routeelement; ! ! typedef struct _iem_route ! { ! t_object x_obj; ! t_atomtype x_type; ! t_int x_nelement; ! t_iem_routeelement *x_vec; ! t_outlet *x_rejectout; ! } t_iem_route; ! ! static void iem_route_anything(t_iem_route *x, t_symbol *sel, int argc, t_atom *argv) ! { ! t_iem_routeelement *e; ! int nelement; ! ! if(x->x_type == A_SYMBOL) ! { ! for(nelement = x->x_nelement, e = x->x_vec; nelement--; e++) ! { ! if(e->e_w.w_symbol == sel) ! { ! if(!argc) ! outlet_bang(e->e_outlet); ! else ! { ! if(argc == 1) ! { ! if(argv[0].a_type == A_FLOAT) ! outlet_float(e->e_outlet, argv[0].a_w.w_float); ! else ! outlet_anything(e->e_outlet, argv[0].a_w.w_symbol, 0, argv+1); ! } ! else ! { ! if(argv[0].a_type == A_SYMBOL) ! outlet_anything(e->e_outlet, argv[0].a_w.w_symbol, argc-1, argv+1); ! else ! outlet_list(e->e_outlet, &s_list, argc, argv); ! } ! } ! return; ! } ! } ! } ! outlet_anything(x->x_rejectout, sel, argc, argv); ! } ! ! static void iem_route_list(t_iem_route *x, t_symbol *sel, int argc, t_atom *argv) ! { ! t_iem_routeelement *e; ! int nelement; ! ! if (x->x_type == A_FLOAT) ! { ! float f; ! ! if(!argc) ! return; ! f = atom_getfloat(argv); ! for(nelement = x->x_nelement, e = x->x_vec; nelement--; e++) ! { ! if(e->e_w.w_float == f) ! { ! if(argc > 1 && argv[1].a_type == A_SYMBOL) ! outlet_anything(e->e_outlet, argv[1].a_w.w_symbol, argc-2, argv+2); ! else ! { ! if(argc == 1) ! outlet_bang(e->e_outlet); ! else if(argc == 2) ! outlet_float(e->e_outlet, atom_getfloat(argv+1)); ! else ! outlet_list(e->e_outlet, &s_list, argc-1, argv+1); ! } ! return; ! } ! } ! } ! else /* symbol arguments */ ! { ! if(argc > 1) /* 2 or more args: treat as "list" */ ! { ! for(nelement = x->x_nelement, e = x->x_vec; nelement--; e++) ! { ! if(e->e_w.w_symbol == &s_list) ! { ! if(argv[0].a_type == A_SYMBOL) ! outlet_anything(e->e_outlet, argv[0].a_w.w_symbol, argc-1, argv+1); ! else ! outlet_list(e->e_outlet, &s_list, argc, argv); ! return; ! } ! } ! } ! else if(argc == 0) /* no args: treat as "bang" */ ! { ! for (nelement = x->x_nelement, e = x->x_vec; nelement--; e++) ! { ! if (e->e_w.w_symbol == &s_bang) ! { ! outlet_bang(e->e_outlet); ! return; ! } ! } ! } ! else if (argv[0].a_type == A_FLOAT) /* one float arg */ ! { ! for (nelement = x->x_nelement, e = x->x_vec; nelement--; e++) ! { ! if (e->e_w.w_symbol == &s_float) ! { ! outlet_float(e->e_outlet, argv[0].a_w.w_float); ! return; ! } ! } ! } ! else ! { ! for (nelement = x->x_nelement, e = x->x_vec; nelement--; e++) ! { ! if (e->e_w.w_symbol == &s_symbol) ! { ! outlet_symbol(e->e_outlet, argv[0].a_w.w_symbol); ! return; ! } ! } ! } ! } ! outlet_list(x->x_rejectout, &s_list, argc, argv); ! } ! ! ! static void iem_route_free(t_iem_route *x) ! { ! freebytes(x->x_vec, x->x_nelement * sizeof(*x->x_vec)); ! } ! ! static void *iem_route_new(t_symbol *s, int argc, t_atom *argv) ! { ! int n; ! t_iem_routeelement *e; ! t_iem_route *x = (t_iem_route *)pd_new(iem_route_class); ! t_atom a; ! if (argc == 0) ! { ! argc = 1; ! SETFLOAT(&a, 0); ! argv = &a; ! } ! x->x_type = argv[0].a_type; ! x->x_nelement = argc; ! x->x_vec = (t_iem_routeelement *)getbytes(argc * sizeof(*x->x_vec)); ! for (n = 0, e = x->x_vec; n < argc; n++, e++) ! { ! e->e_outlet = outlet_new(&x->x_obj, &s_list); ! if (x->x_type == A_FLOAT) ! e->e_w.w_float = atom_getfloatarg(n, argc, argv); ! else e->e_w.w_symbol = atom_getsymbolarg(n, argc, argv); ! } ! x->x_rejectout = outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! ! void iem_route_setup(void) ! { ! iem_route_class = class_new(gensym("iem_route"), (t_newmethod)iem_route_new, ! (t_method)iem_route_free, sizeof(t_iem_route), 0, A_GIMME, 0); ! class_addcreator((t_newmethod)iem_route_new, gensym("ir"), A_GIMME, 0); ! class_addlist(iem_route_class, iem_route_list); ! class_addanything(iem_route_class, iem_route_anything); ! class_sethelpsymbol(iem_route_class, gensym("iemhelp/help-iem_route")); ! }
Index: unsymbol.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/unsymbol.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** unsymbol.c 18 May 2004 21:33:33 -0000 1.1.1.1 --- unsymbol.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,49 **** ! /* Copyright (c) 1997-2003 Miller Puckette. ! * For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* -------------------------- unsymbol ------------------------------ */ ! ! static t_class *unsymbol_class; ! ! typedef struct _unsymbol ! { ! t_object x_obj; ! t_atom x_at; ! } t_unsymbol; ! ! static void unsymbol_symbol(t_unsymbol *x, t_symbol *s) ! { ! outlet_anything(x->x_obj.ob_outlet, s, 0, &(x->x_at)); ! } ! ! static void *unsymbol_new(void) ! { ! t_unsymbol *x = (t_unsymbol *)pd_new(unsymbol_class); ! ! outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! ! void unsymbol_setup(void) ! { ! unsymbol_class = class_new(gensym("unsymbol"), (t_newmethod)unsymbol_new, ! 0, sizeof(t_unsymbol), 0, 0); ! class_addcreator((t_newmethod)unsymbol_new, gensym("unsym"), 0); ! class_addsymbol(unsymbol_class, unsymbol_symbol); ! class_sethelpsymbol(unsymbol_class, gensym("iemhelp/help-unsymbol")); ! } --- 1,48 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! ! /* ----------- unsymbol ------------------------- */ ! /* -- converts a symbol to an anything message -- */ ! ! static t_class *unsymbol_class; ! ! typedef struct _unsymbol ! { ! t_object x_obj; ! t_atom x_at; ! } t_unsymbol; ! ! static void unsymbol_symbol(t_unsymbol *x, t_symbol *s) ! { ! outlet_anything(x->x_obj.ob_outlet, s, 0, &(x->x_at)); ! } ! ! static void *unsymbol_new(void) ! { ! t_unsymbol *x = (t_unsymbol *)pd_new(unsymbol_class); ! ! outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! ! void unsymbol_setup(void) ! { ! unsymbol_class = class_new(gensym("unsymbol"), (t_newmethod)unsymbol_new, ! 0, sizeof(t_unsymbol), 0, 0); ! class_addcreator((t_newmethod)unsymbol_new, gensym("unsym"), 0); ! class_addsymbol(unsymbol_class, unsymbol_symbol); ! class_sethelpsymbol(unsymbol_class, gensym("iemhelp/help-unsymbol")); ! }
Index: iemlib.h =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/iemlib.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** iemlib.h 18 May 2004 21:33:32 -0000 1.1.1.1 --- iemlib.h 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,98 **** ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib1 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifndef __IEMLIB_H__ ! #define __IEMLIB_H__ ! ! ! #define IS_A_POINTER(atom,index) ((atom+index)->a_type == A_POINTER) ! #define IS_A_FLOAT(atom,index) ((atom+index)->a_type == A_FLOAT) ! #define IS_A_SYMBOL(atom,index) ((atom+index)->a_type == A_SYMBOL) ! #define IS_A_DOLLAR(atom,index) ((atom+index)->a_type == A_DOLLAR) ! #define IS_A_DOLLSYM(atom,index) ((atom+index)->a_type == A_DOLLSYM) ! #define IS_A_SEMI(atom,index) ((atom+index)->a_type == A_SEMI) ! #define IS_A_COMMA(atom,index) ((atom+index)->a_type == A_COMMA) ! ! ! #ifdef NT ! int sys_noloadbang; ! //t_symbol *iemgui_key_sym=0; ! #include <io.h> ! #else ! extern int sys_noloadbang; ! //extern t_symbol *iemgui_key_sym; ! #include <unistd.h> ! #endif ! ! #define DEFDELVS 64 ! #define XTRASAMPS 4 ! #define SAMPBLK 4 ! ! ! #define UNITBIT32 1572864. /* 3*2^19; bit 32 has place value 1 */ ! ! /* machine-dependent definitions. These ifdefs really ! should have been by CPU type and not by operating system! */ ! #ifdef IRIX ! /* big-endian. Most significant byte is at low address in memory */ ! #define HIOFFSET 0 /* word offset to find MSB */ ! #define LOWOFFSET 1 /* word offset to find LSB */ ! #define int32 long /* a data type that has 32 bits */ ! #else ! #ifdef MSW ! /* little-endian; most significant byte is at highest address */ ! #define HIOFFSET 1 ! #define LOWOFFSET 0 ! #define int32 long ! #else ! #ifdef __FreeBSD__ ! #include <machine/endian.h> ! #if BYTE_ORDER == LITTLE_ENDIAN ! #define HIOFFSET 1 ! #define LOWOFFSET 0 ! #else ! #define HIOFFSET 0 /* word offset to find MSB */ ! #define LOWOFFSET 1 /* word offset to find LSB */ ! #endif /* BYTE_ORDER */ ! #include <sys/types.h> ! #define int32 int32_t ! #endif ! #ifdef __linux__ ! ! #include <endian.h> ! ! #if !defined(__BYTE_ORDER) || !defined(__LITTLE_ENDIAN) ! #error No byte order defined ! #endif ! ! #if __BYTE_ORDER == __LITTLE_ENDIAN ! #define HIOFFSET 1 ! #define LOWOFFSET 0 ! #else ! #define HIOFFSET 0 /* word offset to find MSB */ ! #define LOWOFFSET 1 /* word offset to find LSB */ ! #endif /* __BYTE_ORDER */ ! ! #include <sys/types.h> ! #define int32 int32_t ! ! #else ! #ifdef MACOSX ! #define HIOFFSET 0 /* word offset to find MSB */ ! #define LOWOFFSET 1 /* word offset to find LSB */ ! #define int32 int /* a data type that has 32 bits */ ! ! #endif /* MACOSX */ ! #endif /* __linux__ */ ! #endif /* MSW */ ! #endif /* SGI */ ! ! union tabfudge ! { ! double tf_d; ! int32 tf_i[2]; ! }; ! ! #endif --- 1,102 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifndef __IEMLIB_H__ ! #define __IEMLIB_H__ ! ! ! #define IS_A_POINTER(atom,index) ((atom+index)->a_type == A_POINTER) ! #define IS_A_FLOAT(atom,index) ((atom+index)->a_type == A_FLOAT) ! #define IS_A_SYMBOL(atom,index) ((atom+index)->a_type == A_SYMBOL) ! #define IS_A_DOLLAR(atom,index) ((atom+index)->a_type == A_DOLLAR) ! #define IS_A_DOLLSYM(atom,index) ((atom+index)->a_type == A_DOLLSYM) ! #define IS_A_SEMI(atom,index) ((atom+index)->a_type == A_SEMI) ! #define IS_A_COMMA(atom,index) ((atom+index)->a_type == A_COMMA) ! ! ! #ifdef NT ! int sys_noloadbang; ! //t_symbol *iemgui_key_sym=0; ! #include <io.h> ! #else ! extern int sys_noloadbang; ! //extern t_symbol *iemgui_key_sym; ! #include <unistd.h> ! #endif ! ! #define DEFDELVS 64 ! #define XTRASAMPS 4 ! #define SAMPBLK 4 ! ! ! #define UNITBIT32 1572864. /* 3*2^19; bit 32 has place value 1 */ ! ! /* machine-dependent definitions. These ifdefs really ! should have been by CPU type and not by operating system! */ ! #ifdef IRIX ! /* big-endian. Most significant byte is at low address in memory */ ! #define HIOFFSET 0 /* word offset to find MSB */ ! #define LOWOFFSET 1 /* word offset to find LSB */ ! #define int32 long /* a data type that has 32 bits */ ! #else ! #ifdef MSW ! /* little-endian; most significant byte is at highest address */ ! #define HIOFFSET 1 ! #define LOWOFFSET 0 ! #define int32 long ! #else ! #ifdef __FreeBSD__ ! #include <machine/endian.h> ! #if BYTE_ORDER == LITTLE_ENDIAN ! #define HIOFFSET 1 ! #define LOWOFFSET 0 ! #else ! #define HIOFFSET 0 /* word offset to find MSB */ ! #define LOWOFFSET 1 /* word offset to find LSB */ ! #endif /* BYTE_ORDER */ ! #include <sys/types.h> ! #define int32 int32_t ! #endif ! #ifdef __linux__ ! ! #include <endian.h> ! ! #if !defined(__BYTE_ORDER) || !defined(__LITTLE_ENDIAN) ! #error No byte order defined ! #endif ! ! #if __BYTE_ORDER == __LITTLE_ENDIAN ! #define HIOFFSET 1 ! #define LOWOFFSET 0 ! #else ! #define HIOFFSET 0 /* word offset to find MSB */ ! #define LOWOFFSET 1 /* word offset to find LSB */ ! #endif /* __BYTE_ORDER */ ! ! #include <sys/types.h> ! #define int32 int32_t ! ! #else ! #ifdef __APPLE__ ! #define HIOFFSET 0 /* word offset to find MSB */ ! #define LOWOFFSET 1 /* word offset to find LSB */ ! #define int32 int /* a data type that has 32 bits */ ! ! #endif /* __APPLE__ */ ! #endif /* __linux__ */ ! #endif /* MSW */ ! #endif /* SGI */ ! ! union tabfudge ! { ! double tf_d; ! int32 tf_i[2]; ! }; ! ! #define IEM_DENORMAL(f) ((((*(unsigned int*)&(f))&0x60000000)==0) || \ ! (((*(unsigned int*)&(f))&0x60000000)==0x60000000)) ! /* more stringent test: anything not between 1e-19 and 1e19 in absolute val */ ! ! #endif
Index: bpe.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/bpe.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** bpe.c 18 May 2004 21:33:31 -0000 1.1.1.1 --- bpe.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,125 **** ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ------------------------ bpe ---------------------------- */ ! static t_class *bpe_class; ! ! typedef struct _bpe ! { ! t_object x_obj; ! t_clock *x_clock; ! int x_maxnum; ! int x_curnum; ! int x_curindex; ! t_atom *x_beg; ! void *x_out_val; ! void *x_out_time; ! void *x_out_finished; ! } t_bpe; ! ! static void bpe_stop(t_bpe *x) ! { ! clock_unset(x->x_clock); ! } ! ! static void bpe_tick(t_bpe *x) ! { ! t_atom *vec = x->x_beg; ! float val, time; ! ! if(x->x_curindex >= x->x_curnum) ! { ! bpe_stop(x); ! outlet_bang(x->x_out_finished); ! } ! else ! { ! vec += x->x_curindex; ! val = atom_getfloat(vec++); ! time = atom_getfloat(vec); ! outlet_float(x->x_out_time, time); ! outlet_float(x->x_out_val, val); ! x->x_curindex += 2; ! clock_delay(x->x_clock, time); ! } ! } ! ! static void bpe_bang(t_bpe *x) ! { ! t_atom *vec = x->x_beg; ! float val, time; ! ! if(x->x_curnum) ! { ! x->x_curindex = 2; ! val = atom_getfloat(vec++); ! time = atom_getfloat(vec); ! outlet_float(x->x_out_time, time); ! outlet_float(x->x_out_val, val); ! clock_delay(x->x_clock, time); ! } ! } ! ! static void bpe_list(t_bpe *x, t_symbol *s, int ac, t_atom *av) ! { ! int n = ac & 0xfffffffe, i; ! t_atom *vec = x->x_beg; ! if(n > x->x_maxnum) ! { ! freebytes(x->x_beg, x->x_maxnum*sizeof(t_atom)); ! x->x_maxnum = 2 + n; ! x->x_beg = (t_atom *)getbytes(x->x_maxnum*sizeof(t_atom)); ! vec = x->x_beg; ! } ! x->x_curnum = n; ! for(i=0; i<n; i++) ! { ! *vec++ = *av++; ! } ! } ! ! static void bpe_free(t_bpe *x) ! { ! freebytes(x->x_beg, x->x_maxnum*sizeof(t_atom)); ! clock_free(x->x_clock); ! } ! ! static void *bpe_new(void) ! { ! t_bpe *x = (t_bpe *)pd_new(bpe_class); ! ! x->x_curindex = 0; ! x->x_maxnum = 20; ! x->x_curnum = 0; ! x->x_beg = (t_atom *)getbytes(x->x_maxnum*sizeof(t_atom)); ! x->x_clock = clock_new(x, (t_method)bpe_tick); ! x->x_out_val = outlet_new(&x->x_obj, &s_float); ! x->x_out_time = outlet_new(&x->x_obj, &s_float); ! x->x_out_finished = outlet_new(&x->x_obj, &s_bang); ! return (x); ! } ! ! void bpe_setup(void) ! { ! bpe_class = class_new(gensym("bpe"), (t_newmethod)bpe_new, ! (t_method)bpe_free, sizeof(t_bpe), 0, 0); ! class_addmethod(bpe_class, (t_method)bpe_stop, gensym("stop"), 0); ! class_addbang(bpe_class, bpe_bang); ! class_addlist(bpe_class, (t_method)bpe_list); ! class_sethelpsymbol(bpe_class, gensym("iemhelp/help-bpe")); ! } ! --- 1,122 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* --------------------------- bpe -------------------------------- */ ! /* -- break-point-envelope, convert a list of value-time-doubles -- */ ! /* ------- into a time-scheduled stream of value-time-pairs ------- */ ! ! static t_class *bpe_class; ! ! typedef struct _bpe ! { ! t_object x_obj; ! t_clock *x_clock; ! int x_maxnum; ! int x_curnum; ! int x_curindex; ! t_atom *x_beg; ! void *x_out_val; ! void *x_out_time; ! void *x_out_finished; ! } t_bpe; ! ! static void bpe_stop(t_bpe *x) ! { ! clock_unset(x->x_clock); ! } ! ! static void bpe_tick(t_bpe *x) ! { ! t_atom *vec = x->x_beg; ! float val, time; ! ! if(x->x_curindex >= x->x_curnum) ! { ! bpe_stop(x); ! outlet_bang(x->x_out_finished); ! } ! else ! { ! vec += x->x_curindex; ! val = atom_getfloat(vec++); ! time = atom_getfloat(vec); ! outlet_float(x->x_out_time, time); ! outlet_float(x->x_out_val, val); ! x->x_curindex += 2; ! clock_delay(x->x_clock, time); ! } ! } ! ! static void bpe_bang(t_bpe *x) ! { ! t_atom *vec = x->x_beg; ! float val, time; ! ! if(x->x_curnum) ! { ! x->x_curindex = 2; ! val = atom_getfloat(vec++); ! time = atom_getfloat(vec); ! outlet_float(x->x_out_time, time); ! outlet_float(x->x_out_val, val); ! clock_delay(x->x_clock, time); ! } ! } ! ! static void bpe_list(t_bpe *x, t_symbol *s, int ac, t_atom *av) ! { ! int n = ac & 0xfffffffe, i; ! t_atom *vec = x->x_beg; ! if(n > x->x_maxnum) ! { ! freebytes(x->x_beg, x->x_maxnum*sizeof(t_atom)); ! x->x_maxnum = 2 + n; ! x->x_beg = (t_atom *)getbytes(x->x_maxnum*sizeof(t_atom)); ! vec = x->x_beg; ! } ! x->x_curnum = n; ! for(i=0; i<n; i++) ! { ! *vec++ = *av++; ! } ! } ! ! static void bpe_free(t_bpe *x) ! { ! freebytes(x->x_beg, x->x_maxnum*sizeof(t_atom)); ! clock_free(x->x_clock); ! } ! ! static void *bpe_new(void) ! { ! t_bpe *x = (t_bpe *)pd_new(bpe_class); ! ! x->x_curindex = 0; ! x->x_maxnum = 20; ! x->x_curnum = 0; ! x->x_beg = (t_atom *)getbytes(x->x_maxnum*sizeof(t_atom)); ! x->x_clock = clock_new(x, (t_method)bpe_tick); ! x->x_out_val = outlet_new(&x->x_obj, &s_float); ! x->x_out_time = outlet_new(&x->x_obj, &s_float); ! x->x_out_finished = outlet_new(&x->x_obj, &s_bang); ! return (x); ! } ! ! void bpe_setup(void) ! { ! bpe_class = class_new(gensym("bpe"), (t_newmethod)bpe_new, ! (t_method)bpe_free, sizeof(t_bpe), 0, 0); ! class_addmethod(bpe_class, (t_method)bpe_stop, gensym("stop"), 0); ! class_addbang(bpe_class, bpe_bang); ! class_addlist(bpe_class, (t_method)bpe_list); ! class_sethelpsymbol(bpe_class, gensym("iemhelp/help-bpe")); ! }
Index: post_netreceive.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/post_netreceive.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** post_netreceive.c 18 May 2004 21:33:32 -0000 1.1.1.1 --- post_netreceive.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,243 **** ! /* Copyright (c) 1997-2003 Miller Puckette. ! * For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ------------------------ post_netreceive ---------------------------- */ ! static t_class *post_netreceive_class; ! ! typedef struct _post_netreceive ! { ! t_object x_obj; ! int x_max_send_entries; ! int x_min_send_entries; ! char *x_snd_able; ! t_symbol **x_send_entries; ! t_symbol **x_plus_entries; ! t_symbol *x_set; ! t_atom x_at[2]; ! t_atom *x_atbuf; ! t_symbol *x_send; ! t_symbol *x_setall; ! } t_post_netreceive; ! ! static void post_netreceive_list(t_post_netreceive *x, t_symbol *s, int ac, t_atom *av) ! { ! int identifier_index = (int)atom_getintarg(0, ac, av); ! t_symbol *sender=0; ! ! if((identifier_index >= x->x_min_send_entries) && (identifier_index < x->x_max_send_entries)) ! { ! if(x->x_snd_able[identifier_index] == 1) ! { ! sender = x->x_send_entries[identifier_index]; ! if(sender->s_thing) ! { ! if(ac == 2) ! pd_float(sender->s_thing, atom_getfloatarg(1, ac, av)); ! else ! pd_list(sender->s_thing, &s_list, ac-1, av+1); ! } ! } ! else if(x->x_snd_able[identifier_index] == 2) ! { ! sender = x->x_send_entries[identifier_index]; ! if(sender->s_thing) ! { ! typedmess(sender->s_thing, x->x_plus_entries[identifier_index], ac-1, av+1); ! } ! } ! if(IS_A_FLOAT(av,1)) ! SETFLOAT(x->x_atbuf+identifier_index+1, atom_getfloatarg(1, ac, av)); ! else if(IS_A_SYMBOL(av,1)) ! SETSYMBOL(x->x_atbuf+identifier_index+1, atom_getsymbolarg(1, ac, av)); ! } ! } ! ! /*static void post_netreceive_set_item_name(t_post_netreceive *x, t_symbol *snd, t_float findex) ! { ! int index = (int)findex; ! ! if((index >= 0) && (index < x->x_max_send_entries)) ! { ! x->x_send_entries[index] = snd; ! x->x_snd_able[index] = 1; ! } ! }*/ ! ! static void post_netreceive_set_item_name(t_post_netreceive *x, t_symbol *s, int ac, t_atom *av) ! { ! if(ac == 2) ! { ! int identifier_index = (int)atom_getintarg(1, ac, av); ! ! if((identifier_index >= x->x_min_send_entries) && (identifier_index < x->x_max_send_entries)) ! { ! x->x_send_entries[identifier_index] = atom_getsymbolarg(0, ac, av); ! x->x_snd_able[identifier_index] = 1; ! } ! } ! else if(ac >= 3) ! { ! int identifier_index = (int)atom_getintarg(2, ac, av); ! ! if((identifier_index >= 0) && (identifier_index < x->x_max_send_entries)) ! { ! x->x_send_entries[identifier_index] = atom_getsymbolarg(1, ac, av); ! x->x_snd_able[identifier_index] = 2; ! x->x_plus_entries[identifier_index] = atom_getsymbolarg(0, ac, av); ! } ! } ! } ! ! static void post_netreceive_all_parameters(t_post_netreceive *x, t_symbol *s, int ac, t_atom *av) ! { ! int i, min = x->x_min_send_entries, max = x->x_max_send_entries; ! t_symbol *sendname=0; ! ! if(min > ac) ! min = ac; ! if(max > ac) ! max = ac; ! for(i=min; i<max; i++) ! { ! if(x->x_snd_able[i] == 1) ! { ! sendname = x->x_send_entries[i]; ! if(sendname->s_thing) ! { ! pd_float(sendname->s_thing, atom_getfloatarg(i, ac, av)); ! } ! } ! else if(x->x_snd_able[i] == 2) ! { ! sendname = x->x_send_entries[i]; ! if(sendname->s_thing) ! { ! typedmess(sendname->s_thing, x->x_plus_entries[i], 1, av+i); ! } ! } ! if(IS_A_FLOAT(av,i)) ! SETFLOAT(x->x_atbuf+i+1, atom_getfloatarg(i, ac, av)); ! else if(IS_A_SYMBOL(av,i)) ! SETSYMBOL(x->x_atbuf+i+1, atom_getsymbolarg(i, ac, av)); ! } ! } ! ! static void post_netreceive_set_all_parameters(t_post_netreceive *x, t_symbol *s, int ac, t_atom *av) ! { ! int i, min = x->x_min_send_entries, max = x->x_max_send_entries; ! t_symbol *sendname; ! ! if(min > ac) ! min = ac; ! if(max > ac) ! max = ac; ! for(i=min; i<max; i++) ! { ! if(x->x_snd_able[i]) ! { ! sendname = x->x_send_entries[i]; ! if(sendname->s_thing) ! { ! typedmess(sendname->s_thing, x->x_set, 1, av+i); ! } ! } ! } ! } ! ! static void post_netreceive_clear(t_post_netreceive *x) ! { ! int i, max = x->x_max_send_entries; ! ! for(i=0; i<max; i++) ! { ! if(x->x_snd_able[i]) ! { ! x->x_snd_able[i] = 0; ! } ! } ! } ! ! static void post_netreceive_fetch_all_parameters(t_post_netreceive *x, t_float nr_sended_para) ! { ! int nrsp=(int)nr_sended_para; ! t_atom *ap=x->x_atbuf+x->x_min_send_entries; ! ! if(nrsp <= 0) ! nrsp = 1; ! if(nrsp > (x->x_max_send_entries - x->x_min_send_entries)) ! nrsp = (x->x_max_send_entries - x->x_min_send_entries); ! outlet_anything(x->x_obj.ob_outlet, x->x_send, nrsp+1, x->x_atbuf); ! } ! ! static void post_netreceive_free(t_post_netreceive *x) ! { ! freebytes(x->x_snd_able, x->x_max_send_entries * sizeof(char)); ! freebytes(x->x_send_entries, x->x_max_send_entries * sizeof(t_symbol *)); ! freebytes(x->x_atbuf, (x->x_max_send_entries+2) * sizeof(t_atom)); ! freebytes(x->x_plus_entries, x->x_max_send_entries * sizeof(t_symbol *)); ! } ! ! static void *post_netreceive_new(t_float fmin, t_float fmax) ! { ! t_post_netreceive *x = (t_post_netreceive *)pd_new(post_netreceive_class); ! int i, min = (int)fmin, max = (int)fmax; ! t_atom *ap; ! ! if(min < 0) ! min = 0; ! if(max <= 0) ! max = 80; ! x->x_min_send_entries = min; ! x->x_max_send_entries = max; ! x->x_atbuf = (t_atom *)getbytes((x->x_max_send_entries+2) * sizeof(t_atom)); ! x->x_snd_able = (char *)getbytes(x->x_max_send_entries * sizeof(char)); ! x->x_send_entries = (t_symbol **)getbytes(x->x_max_send_entries * sizeof(t_symbol *)); ! x->x_plus_entries = (t_symbol **)getbytes(x->x_max_send_entries * sizeof(t_symbol *)); ! x->x_set = gensym("set"); ! x->x_setall = gensym("set_all_parameters"); ! x->x_send = gensym("send"); ! ap = x->x_atbuf; ! SETSYMBOL(ap, x->x_setall); ! ap++; ! for(i=1; i<=max; i++) ! { ! SETFLOAT(ap, 0.0); ! ap++; ! } ! for(i=0; i<max; i++) ! { ! x->x_snd_able[i] = 0; ! x->x_plus_entries[i] = x->x_set; ! } ! outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! ! void post_netreceive_setup(void) ! { ! post_netreceive_class = class_new(gensym("post_netreceive"), (t_newmethod)post_netreceive_new, ! (t_method)post_netreceive_free, sizeof(t_post_netreceive), 0, A_DEFFLOAT, A_DEFFLOAT, 0); ! class_addlist(post_netreceive_class, post_netreceive_list); ! class_addmethod(post_netreceive_class, (t_method)post_netreceive_set_item_name, gensym("set_item_name"), A_GIMME, 0); ! class_addmethod(post_netreceive_class, (t_method)post_netreceive_all_parameters, gensym("all_parameters"), A_GIMME, 0); ! class_addmethod(post_netreceive_class, (t_method)post_netreceive_set_all_parameters, gensym("set_all_parameters"), A_GIMME, 0); ! class_addmethod(post_netreceive_class, (t_method)post_netreceive_fetch_all_parameters, gensym("fetch_all_parameters"), A_DEFFLOAT, 0); ! class_addmethod(post_netreceive_class, (t_method)post_netreceive_clear, gensym("clear"), 0); ! class_sethelpsymbol(post_netreceive_class, gensym("iemhelp/help-post_netreceive")); ! } ! --- 1,241 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2004 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ------------------------ post_netreceive ---------------------------- */ ! static t_class *post_netreceive_class; ! ! typedef struct _post_netreceive ! { ! t_object x_obj; ! int x_max_send_entries; ! int x_min_send_entries; ! char *x_snd_able; ! t_symbol **x_send_entries; ! t_symbol **x_plus_entries; ! t_symbol *x_set; ! t_atom x_at[2]; ! t_atom *x_atbuf; ! t_symbol *x_send; ! t_symbol *x_setall; ! } t_post_netreceive; ! ! static void post_netreceive_list(t_post_netreceive *x, t_symbol *s, int ac, t_atom *av) ! { ! int identifier_index = (int)atom_getintarg(0, ac, av); ! t_symbol *sender=0; ! ! if((identifier_index >= x->x_min_send_entries) && (identifier_index < x->x_max_send_entries)) ! { ! if(x->x_snd_able[identifier_index] == 1) ! { ! sender = x->x_send_entries[identifier_index]; ! if(sender->s_thing) ! { ! if(ac == 2) ! pd_float(sender->s_thing, atom_getfloatarg(1, ac, av)); ! else ! pd_list(sender->s_thing, &s_list, ac-1, av+1); ! } ! } ! else if(x->x_snd_able[identifier_index] == 2) ! { ! sender = x->x_send_entries[identifier_index]; ! if(sender->s_thing) ! { ! typedmess(sender->s_thing, x->x_plus_entries[identifier_index], ac-1, av+1); ! } ! } ! if(IS_A_FLOAT(av,1)) ! SETFLOAT(x->x_atbuf+identifier_index+1, atom_getfloatarg(1, ac, av)); ! else if(IS_A_SYMBOL(av,1)) ! SETSYMBOL(x->x_atbuf+identifier_index+1, atom_getsymbolarg(1, ac, av)); ! } ! } ! ! /*static void post_netreceive_set_item_name(t_post_netreceive *x, t_symbol *snd, t_float findex) ! { ! int index = (int)findex; ! ! if((index >= 0) && (index < x->x_max_send_entries)) ! { ! x->x_send_entries[index] = snd; ! x->x_snd_able[index] = 1; ! } ! }*/ ! ! static void post_netreceive_set_item_name(t_post_netreceive *x, t_symbol *s, int ac, t_atom *av) ! { ! if(ac == 2) ! { ! int identifier_index = (int)atom_getintarg(1, ac, av); ! ! if((identifier_index >= x->x_min_send_entries) && (identifier_index < x->x_max_send_entries)) ! { ! x->x_send_entries[identifier_index] = atom_getsymbolarg(0, ac, av); ! x->x_snd_able[identifier_index] = 1; ! } ! } ! else if(ac >= 3) ! { ! int identifier_index = (int)atom_getintarg(2, ac, av); ! ! if((identifier_index >= 0) && (identifier_index < x->x_max_send_entries)) ! { ! x->x_send_entries[identifier_index] = atom_getsymbolarg(1, ac, av); ! x->x_snd_able[identifier_index] = 2; ! x->x_plus_entries[identifier_index] = atom_getsymbolarg(0, ac, av); ! } ! } ! } ! ! static void post_netreceive_all_parameters(t_post_netreceive *x, t_symbol *s, int ac, t_atom *av) ! { ! int i, min = x->x_min_send_entries, max = x->x_max_send_entries; ! t_symbol *sendname=0; ! ! if(min > ac) ! min = ac; ! if(max > ac) ! max = ac; ! for(i=min; i<max; i++) ! { ! if(x->x_snd_able[i] == 1) ! { ! sendname = x->x_send_entries[i]; ! if(sendname->s_thing) ! { ! pd_float(sendname->s_thing, atom_getfloatarg(i, ac, av)); ! } ! } ! else if(x->x_snd_able[i] == 2) ! { ! sendname = x->x_send_entries[i]; ! if(sendname->s_thing) ! { ! typedmess(sendname->s_thing, x->x_plus_entries[i], 1, av+i); ! } ! } ! if(IS_A_FLOAT(av,i)) ! SETFLOAT(x->x_atbuf+i+1, atom_getfloatarg(i, ac, av)); ! else if(IS_A_SYMBOL(av,i)) ! SETSYMBOL(x->x_atbuf+i+1, atom_getsymbolarg(i, ac, av)); ! } ! } ! ! static void post_netreceive_set_all_parameters(t_post_netreceive *x, t_symbol *s, int ac, t_atom *av) ! { ! int i, min = x->x_min_send_entries, max = x->x_max_send_entries; ! t_symbol *sendname; ! ! if(min > ac) ! min = ac; ! if(max > ac) ! max = ac; ! for(i=min; i<max; i++) ! { ! if(x->x_snd_able[i]) ! { ! sendname = x->x_send_entries[i]; ! if(sendname->s_thing) ! { ! typedmess(sendname->s_thing, x->x_set, 1, av+i); ! } ! } ! } ! } ! ! static void post_netreceive_clear(t_post_netreceive *x) ! { ! int i, max = x->x_max_send_entries; ! ! for(i=0; i<max; i++) ! { ! if(x->x_snd_able[i]) ! { ! x->x_snd_able[i] = 0; ! } ! } ! } ! ! static void post_netreceive_fetch_all_parameters(t_post_netreceive *x, t_float nr_sended_para) ! { ! int nrsp=(int)nr_sended_para; ! t_atom *ap=x->x_atbuf+x->x_min_send_entries; ! ! if(nrsp <= 0) ! nrsp = 1; ! if(nrsp > (x->x_max_send_entries - x->x_min_send_entries)) ! nrsp = (x->x_max_send_entries - x->x_min_send_entries); ! outlet_anything(x->x_obj.ob_outlet, x->x_send, nrsp+1, x->x_atbuf); ! } ! ! static void post_netreceive_free(t_post_netreceive *x) ! { ! freebytes(x->x_snd_able, x->x_max_send_entries * sizeof(char)); ! freebytes(x->x_send_entries, x->x_max_send_entries * sizeof(t_symbol *)); ! freebytes(x->x_atbuf, (x->x_max_send_entries+2) * sizeof(t_atom)); ! freebytes(x->x_plus_entries, x->x_max_send_entries * sizeof(t_symbol *)); ! } ! ! static void *post_netreceive_new(t_float fmin, t_float fmax) ! { ! t_post_netreceive *x = (t_post_netreceive *)pd_new(post_netreceive_class); ! int i, min = (int)fmin, max = (int)fmax; ! t_atom *ap; ! ! if(min < 0) ! min = 0; ! if(max <= 0) ! max = 80; ! x->x_min_send_entries = min; ! x->x_max_send_entries = max; ! x->x_atbuf = (t_atom *)getbytes((x->x_max_send_entries+2) * sizeof(t_atom)); ! x->x_snd_able = (char *)getbytes(x->x_max_send_entries * sizeof(char)); ! x->x_send_entries = (t_symbol **)getbytes(x->x_max_send_entries * sizeof(t_symbol *)); ! x->x_plus_entries = (t_symbol **)getbytes(x->x_max_send_entries * sizeof(t_symbol *)); ! x->x_set = gensym("set"); ! x->x_setall = gensym("set_all_parameters"); ! x->x_send = gensym("send"); ! ap = x->x_atbuf; ! SETSYMBOL(ap, x->x_setall); ! ap++; ! for(i=1; i<=max; i++) ! { ! SETFLOAT(ap, 0.0); ! ap++; ! } ! for(i=0; i<max; i++) ! { ! x->x_snd_able[i] = 0; ! x->x_plus_entries[i] = x->x_set; ! } ! outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! ! void post_netreceive_setup(void) ! { ! post_netreceive_class = class_new(gensym("post_netreceive"), (t_newmethod)post_netreceive_new, ! (t_method)post_netreceive_free, sizeof(t_post_netreceive), 0, A_DEFFLOAT, A_DEFFLOAT, 0); ! class_addlist(post_netreceive_class, post_netreceive_list); ! class_addmethod(post_netreceive_class, (t_method)post_netreceive_set_item_name, gensym("set_item_name"), A_GIMME, 0); ! class_addmethod(post_netreceive_class, (t_method)post_netreceive_all_parameters, gensym("all_parameters"), A_GIMME, 0); ! class_addmethod(post_netreceive_class, (t_method)post_netreceive_set_all_parameters, gensym("set_all_parameters"), A_GIMME, 0); ! class_addmethod(post_netreceive_class, (t_method)post_netreceive_fetch_all_parameters, gensym("fetch_all_parameters"), A_DEFFLOAT, 0); ! class_addmethod(post_netreceive_class, (t_method)post_netreceive_clear, gensym("clear"), 0); ! class_sethelpsymbol(post_netreceive_class, gensym("iemhelp/help-post_netreceive")); ! }
Index: iem_receive_kernel.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/iem_receive_kernel.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** iem_receive_kernel.c 18 May 2004 21:33:31 -0000 1.1.1.1 --- iem_receive_kernel.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,155 **** ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "g_canvas.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! EXTERN void canvas_getargs(int *argcp, t_atom **argvp); ! ! /* ------------------------ iem_receive_kernel ---------------------------- */ ! ! static t_class *iem_receive_kernel_class; ! ! typedef struct _iem_receive_kernel ! { ! t_object x_obj; ! t_symbol *x_sym; ! } t_iem_receive_kernel; ! ! void iem_receive_kernel_copy_at(t_atom *src, t_atom *dst, int n) ! { ! while(n--) ! *dst++ = *src++; ! } ! ! static void iem_receive_kernel_set_name(t_iem_receive_kernel *x, t_symbol *s, int argc, t_atom *argv) ! { ! if((argc > 0)&&((IS_A_SYMBOL(argv,0))||(IS_A_FLOAT(argv,0)))) ! { ! if(x->x_sym) ! pd_unbind(&x->x_obj.ob_pd, x->x_sym); ! if(IS_A_SYMBOL(argv,0)) ! x->x_sym = atom_getsymbol(argv); ! else if(IS_A_FLOAT(argv,0)) ! { ! char str[100]; ! ! sprintf(str, "%g", atom_getfloat(argv)); ! x->x_sym = gensym(str); ! } ! pd_bind(&x->x_obj.ob_pd, x->x_sym); ! } ! } ! ! static void iem_receive_kernel_clear(t_iem_receive_kernel *x) ! { ! if(x->x_sym) ! pd_unbind(&x->x_obj.ob_pd, x->x_sym); ! x->x_sym = 0; ! } ! ! static void iem_receive_kernel_bang(t_iem_receive_kernel *x) ! { ! outlet_bang(x->x_obj.ob_outlet); ! } ! ! static void iem_receive_kernel_float(t_iem_receive_kernel *x, t_float f) ! { ! outlet_float(x->x_obj.ob_outlet, f); ! } ! ! static void iem_receive_kernel_symbol(t_iem_receive_kernel *x, t_symbol *s) ! { ! outlet_symbol(x->x_obj.ob_outlet, s); ! } ! ! static void iem_receive_kernel_pointer(t_iem_receive_kernel *x, t_gpointer *gp) ! { ! outlet_pointer(x->x_obj.ob_outlet, gp); ! } ! ! static void iem_receive_kernel_list(t_iem_receive_kernel *x, t_symbol *s, int argc, t_atom *argv) ! { ! outlet_list(x->x_obj.ob_outlet, &s_list, argc, argv); ! } ! ! static void iem_receive_kernel_anything(t_iem_receive_kernel *x, t_symbol *s, int argc, t_atom *argv) ! { ! outlet_anything(x->x_obj.ob_outlet, s, argc, argv); ! } ! ! static void iem_receive_kernel_free(t_iem_receive_kernel *x) ! { ! if(x->x_sym) ! pd_unbind(&x->x_obj.ob_pd, x->x_sym); ! } ! ! static void *iem_receive_kernel_new(void) ! { ! t_iem_receive_kernel *x = (t_iem_receive_kernel *)pd_new(iem_receive_kernel_class); ! t_glist *glist = (t_glist *)canvas_getcurrent(); ! t_canvas *canvas=glist_getcanvas(glist); ! int ac=0; ! t_atom *av; ! ! canvas_setcurrent(canvas); ! canvas_getargs(&ac, &av); ! canvas_unsetcurrent(canvas); ! ! if(ac > 0) ! { ! if(IS_A_SYMBOL(av,0)) ! { ! x->x_sym = atom_getsymbol(av); ! pd_bind(&x->x_obj.ob_pd, x->x_sym); ! } ! else if(IS_A_FLOAT(av,0)) ! { ! char str[100]; ! ! sprintf(str, "%g", atom_getfloat(av)); ! x->x_sym = gensym(str); ! pd_bind(&x->x_obj.ob_pd, x->x_sym); ! } ! else ! x->x_sym = 0; ! } ! else ! x->x_sym = 0; ! ! outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! ! void iem_receive_kernel_setup(void) ! { ! char str[2]; ! ! str[1] = 0; ! iem_receive_kernel_class = class_new(gensym("iem_receive_kernel"), (t_newmethod)iem_receive_kernel_new, ! (t_method)iem_receive_kernel_free, sizeof(t_iem_receive_kernel), 0, 0); ! class_addbang(iem_receive_kernel_class, iem_receive_kernel_bang); ! class_addfloat(iem_receive_kernel_class, iem_receive_kernel_float); ! class_addsymbol(iem_receive_kernel_class, iem_receive_kernel_symbol); ! class_addpointer(iem_receive_kernel_class, iem_receive_kernel_pointer); ! class_addlist(iem_receive_kernel_class, iem_receive_kernel_list); ! class_addanything(iem_receive_kernel_class, iem_receive_kernel_anything); ! // class_addmethod(iem_receive_kernel_class, (t_method)iem_receive_kernel_set, gensym("set"), A_GIMME, 0); ! str[0] = 1;/*inlet-sym = "\0x01"*/ ! class_addmethod(iem_receive_kernel_class, (t_method)iem_receive_kernel_set_name, gensym(str), A_GIMME, 0); ! str[0] = 2;/*inlet-sym = "\0x02"*/ ! class_addmethod(iem_receive_kernel_class, (t_method)iem_receive_kernel_clear, gensym(str), 0); ! class_sethelpsymbol(iem_receive_kernel_class, gensym("iemhelp/help-iem_receive")); ! } --- 1,155 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2004 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "g_canvas.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! EXTERN void canvas_getargs(int *argcp, t_atom **argvp); ! ! /* ------------------------ iem_receive_kernel ---------------------------- */ ! ! static t_class *iem_receive_kernel_class; ! ! typedef struct _iem_receive_kernel ! { ! t_object x_obj; ! t_symbol *x_sym; ! } t_iem_receive_kernel; ! ! void iem_receive_kernel_copy_at(t_atom *src, t_atom *dst, int n) ! { ! while(n--) ! *dst++ = *src++; ! } ! ! static void iem_receive_kernel_set_name(t_iem_receive_kernel *x, t_symbol *s, int argc, t_atom *argv) ! { ! if((argc > 0)&&((IS_A_SYMBOL(argv,0))||(IS_A_FLOAT(argv,0)))) ! { ! if(x->x_sym) ! pd_unbind(&x->x_obj.ob_pd, x->x_sym); ! if(IS_A_SYMBOL(argv,0)) ! x->x_sym = atom_getsymbol(argv); ! else if(IS_A_FLOAT(argv,0)) ! { ! char str[100]; ! ! sprintf(str, "%g", atom_getfloat(argv)); ! x->x_sym = gensym(str); ! } ! pd_bind(&x->x_obj.ob_pd, x->x_sym); ! } ! } ! ! static void iem_receive_kernel_clear(t_iem_receive_kernel *x) ! { ! if(x->x_sym) ! pd_unbind(&x->x_obj.ob_pd, x->x_sym); ! x->x_sym = 0; ! } ! ! static void iem_receive_kernel_bang(t_iem_receive_kernel *x) ! { ! outlet_bang(x->x_obj.ob_outlet); ! } ! ! static void iem_receive_kernel_float(t_iem_receive_kernel *x, t_float f) ! { ! outlet_float(x->x_obj.ob_outlet, f); ! } ! ! static void iem_receive_kernel_symbol(t_iem_receive_kernel *x, t_symbol *s) ! { ! outlet_symbol(x->x_obj.ob_outlet, s); ! } ! ! static void iem_receive_kernel_pointer(t_iem_receive_kernel *x, t_gpointer *gp) ! { ! outlet_pointer(x->x_obj.ob_outlet, gp); ! } ! ! static void iem_receive_kernel_list(t_iem_receive_kernel *x, t_symbol *s, int argc, t_atom *argv) ! { ! outlet_list(x->x_obj.ob_outlet, &s_list, argc, argv); ! } ! ! static void iem_receive_kernel_anything(t_iem_receive_kernel *x, t_symbol *s, int argc, t_atom *argv) ! { ! outlet_anything(x->x_obj.ob_outlet, s, argc, argv); ! } ! ! static void iem_receive_kernel_free(t_iem_receive_kernel *x) ! { ! if(x->x_sym) ! pd_unbind(&x->x_obj.ob_pd, x->x_sym); ! } ! ! static void *iem_receive_kernel_new(void) ! { ! t_iem_receive_kernel *x = (t_iem_receive_kernel *)pd_new(iem_receive_kernel_class); ! t_glist *glist = (t_glist *)canvas_getcurrent(); ! t_canvas *canvas=glist_getcanvas(glist); ! int ac=0; ! t_atom *av; ! ! canvas_setcurrent(canvas); ! canvas_getargs(&ac, &av); ! canvas_unsetcurrent(canvas); ! ! if(ac > 0) ! { ! if(IS_A_SYMBOL(av,0)) ! { ! x->x_sym = atom_getsymbol(av); ! pd_bind(&x->x_obj.ob_pd, x->x_sym); ! } ! else if(IS_A_FLOAT(av,0)) ! { ! char str[100]; ! ! sprintf(str, "%g", atom_getfloat(av)); ! x->x_sym = gensym(str); ! pd_bind(&x->x_obj.ob_pd, x->x_sym); ! } ! else ! x->x_sym = 0; ! } ! else ! x->x_sym = 0; ! ! outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! ! void iem_receive_kernel_setup(void) ! { ! char str[2]; ! ! str[1] = 0; ! iem_receive_kernel_class = class_new(gensym("iem_receive_kernel"), (t_newmethod)iem_receive_kernel_new, ! (t_method)iem_receive_kernel_free, sizeof(t_iem_receive_kernel), 0, 0); ! class_addbang(iem_receive_kernel_class, iem_receive_kernel_bang); ! class_addfloat(iem_receive_kernel_class, iem_receive_kernel_float); ! class_addsymbol(iem_receive_kernel_class, iem_receive_kernel_symbol); ! class_addpointer(iem_receive_kernel_class, iem_receive_kernel_pointer); ! class_addlist(iem_receive_kernel_class, iem_receive_kernel_list); ! class_addanything(iem_receive_kernel_class, iem_receive_kernel_anything); ! // class_addmethod(iem_receive_kernel_class, (t_method)iem_receive_kernel_set, gensym("set"), A_GIMME, 0); ! str[0] = 1;/*inlet-sym = "\0x01"*/ ! class_addmethod(iem_receive_kernel_class, (t_method)iem_receive_kernel_set_name, gensym(str), A_GIMME, 0); ! str[0] = 2;/*inlet-sym = "\0x02"*/ ! class_addmethod(iem_receive_kernel_class, (t_method)iem_receive_kernel_clear, gensym(str), 0); ! class_sethelpsymbol(iem_receive_kernel_class, gensym("iemhelp/help-iem_receive")); ! }
Index: iem_pbank_csv.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/iem_pbank_csv.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** iem_pbank_csv.c 18 May 2004 21:33:31 -0000 1.1.1.1 --- iem_pbank_csv.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,801 **** ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! [...1574 lines suppressed...] ! inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("ft1")); ! x->x_canvas = canvas_getcurrent(); ! return (x); ! } ! ! /* ---------------- global setup function -------------------- */ ! ! void iem_pbank_csv_setup(void ) ! { ! iem_pbank_csv_class = class_new(gensym("iem_pbank_csv"), (t_newmethod)iem_pbank_csv_new, ! (t_method)iem_pbank_csv_free, sizeof(t_iem_pbank_csv), 0, A_GIMME, 0); ! class_addmethod(iem_pbank_csv_class, (t_method)iem_pbank_csv_recall, gensym("recall"), A_GIMME, 0); ! class_addmethod(iem_pbank_csv_class, (t_method)iem_pbank_csv_store, gensym("store"), A_GIMME, 0); ! class_addmethod(iem_pbank_csv_class, (t_method)iem_pbank_csv_read, gensym("read"), A_SYMBOL, A_DEFSYM, 0); ! class_addmethod(iem_pbank_csv_class, (t_method)iem_pbank_csv_write, gensym("write"), A_SYMBOL, A_DEFSYM, 0); ! class_addlist(iem_pbank_csv_class, iem_pbank_csv_list); ! class_addbang(iem_pbank_csv_class, iem_pbank_csv_bang); ! class_addmethod(iem_pbank_csv_class, (t_method)iem_pbank_csv_ft1, gensym("ft1"), A_FLOAT, 0); ! class_sethelpsymbol(iem_pbank_csv_class, gensym("iemhelp/help-iem_pbank_csv")); ! }
Index: pre_inlet.c =================================================================== RCS file: /cvsroot/pure-data/externals/iemlib/src/iemlib2/pre_inlet.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** pre_inlet.c 18 May 2004 21:33:32 -0000 1.1.1.1 --- pre_inlet.c 2 Jun 2005 18:25:00 -0000 1.2 *************** *** 1,94 **** ! /* Copyright (c) 1997-2003 Miller Puckette. ! * For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil (c) IEM KUG Graz Austria 2000 - 2003 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ------------------------ pre_inlet ---------------------------- */ ! static t_class *pre_inlet_class; ! ! typedef struct _pre_inlet ! { ! t_object x_obj; ! t_atom x_at; ! t_symbol *x_sym; ! } t_pre_inlet; ! ! static void pre_inlet_bang(t_pre_inlet *x) ! { ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, 1, &x->x_at); ! outlet_bang(x->x_obj.ob_outlet); ! } ! ! static void pre_inlet_float(t_pre_inlet *x, t_float f) ! { ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, 1, &x->x_at); ! outlet_float(x->x_obj.ob_outlet, f); ! } ! ! static void pre_inlet_symbol(t_pre_inlet *x, t_symbol *s) ! { ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, 1, &x->x_at); ! outlet_symbol(x->x_obj.ob_outlet, s); ! } ! ! static void pre_inlet_pointer(t_pre_inlet *x, t_gpointer *gp) ! { ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, 1, &x->x_at); ! outlet_pointer(x->x_obj.ob_outlet, gp); ! } ! ! static void pre_inlet_list(t_pre_inlet *x, t_symbol *s, int ac, t_atom *av) ! { ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, 1, &x->x_at); ! outlet_list(x->x_obj.ob_outlet, s, ac, av); ! } ! ! static void pre_inlet_anything(t_pre_inlet *x, t_symbol *s, int ac, t_atom *av) ! { ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, 1, &x->x_at); ! outlet_anything(x->x_obj.ob_outlet, s, ac, av); ! } ! ! static void pre_inlet_free(t_pre_inlet *x) ! { ! } ! ! static void *pre_inlet_new(t_floatarg fsym, t_floatarg finlet) ! { ! t_pre_inlet *x = (t_pre_inlet *)pd_new(pre_inlet_class); ! char str[2]; ! ! SETFLOAT(&x->x_at, finlet); ! str[0] = (char)((int)(fsym)&0xff); ! str[1] = 0; ! x->x_sym = gensym(str); ! outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! ! void pre_inlet_setup(void) ! { ! pre_inlet_class = class_new(gensym("pre_inlet"), (t_newmethod)pre_inlet_new, ! (t_method)pre_inlet_free, sizeof(t_pre_inlet), 0, A_DEFFLOAT, A_DEFFLOAT, 0); ! class_addbang(pre_inlet_class, (t_method)pre_inlet_bang); ! class_addfloat(pre_inlet_class, (t_method)pre_inlet_float); ! class_addsymbol(pre_inlet_class, pre_inlet_symbol); ! class_addpointer(pre_inlet_class, pre_inlet_pointer); ! class_addlist(pre_inlet_class, pre_inlet_list); ! class_addanything(pre_inlet_class, pre_inlet_anything); ! class_sethelpsymbol(pre_inlet_class, gensym("iemhelp/help-pre_inlet")); ! } ! --- 1,99 ---- ! /* For information on usage and redistribution, and for a DISCLAIMER OF ALL ! * WARRANTIES, see the file, "LICENSE.txt," in this distribution. ! ! iemlib2 written by Thomas Musil, Copyright (c) IEM KUG Graz Austria 2000 - 2005 */ ! ! #ifdef NT ! #pragma warning( disable : 4244 ) ! #pragma warning( disable : 4305 ) ! #endif ! ! #include "m_pd.h" ! #include "iemlib.h" ! #include <stdlib.h> ! #include <string.h> ! #include <stdio.h> ! #include <math.h> ! ! /* ------------------------ pre_inlet ---------------------------- */ ! /* --------- any incoming message produce additionally a --------- */ ! /* ----- special anything message at output, followed by the ----- */ ! /* --- original message. this pre message contains a selector ---- */ ! /* ---- symbol made of one character of the m-th entry of the ---- */ ! /* --- ASCII-table, followed by one float atom list entry with --- */ ! /* ---- with value n. "m" and "n" are the 2 initial arguments ---- */ ! ! static t_class *pre_inlet_class; ! ! typedef struct _pre_inlet ! { ! t_object x_obj; ! t_atom x_at; ! t_symbol *x_sym; ! } t_pre_inlet; ! ! static void pre_inlet_bang(t_pre_inlet *x) ! { ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, 1, &x->x_at); ! outlet_bang(x->x_obj.ob_outlet); ! } ! ! static void pre_inlet_float(t_pre_inlet *x, t_float f) ! { ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, 1, &x->x_at); ! outlet_float(x->x_obj.ob_outlet, f); ! } ! ! static void pre_inlet_symbol(t_pre_inlet *x, t_symbol *s) ! { ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, 1, &x->x_at); ! outlet_symbol(x->x_obj.ob_outlet, s); ! } ! ! static void pre_inlet_pointer(t_pre_inlet *x, t_gpointer *gp) ! { ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, 1, &x->x_at); ! outlet_pointer(x->x_obj.ob_outlet, gp); ! } ! ! static void pre_inlet_list(t_pre_inlet *x, t_symbol *s, int ac, t_atom *av) ! { ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, 1, &x->x_at); ! outlet_list(x->x_obj.ob_outlet, s, ac, av); ! } ! ! static void pre_inlet_anything(t_pre_inlet *x, t_symbol *s, int ac, t_atom *av) ! { ! outlet_anything(x->x_obj.ob_outlet, x->x_sym, 1, &x->x_at); ! outlet_anything(x->x_obj.ob_outlet, s, ac, av); ! } ! ! static void pre_inlet_free(t_pre_inlet *x) ! { ! } ! ! static void *pre_inlet_new(t_floatarg fsym, t_floatarg finlet) ! { ! t_pre_inlet *x = (t_pre_inlet *)pd_new(pre_inlet_class); ! char str[2]; ! ! SETFLOAT(&x->x_at, finlet); ! str[0] = (char)((int)(fsym)&0xff); ! str[1] = 0; ! x->x_sym = gensym(str); ! outlet_new(&x->x_obj, &s_list); ! return (x); ! } ! ! void pre_inlet_setup(void) ! { ! pre_inlet_class = class_new(gensym("pre_inlet"), (t_newmethod)pre_inlet_new, ! (t_method)pre_inlet_free, sizeof(t_pre_inlet), 0, A_DEFFLOAT, A_DEFFLOAT, 0); ! class_addbang(pre_inlet_class, (t_method)pre_inlet_bang); ! class_addfloat(pre_inlet_class, (t_method)pre_inlet_float); ! class_addsymbol(pre_inlet_class, pre_inlet_symbol); ! class_addpointer(pre_inlet_class, pre_inlet_pointer); ! class_addlist(pre_inlet_class, pre_inlet_list); ! class_addanything(pre_inlet_class, pre_inlet_anything); ! class_sethelpsymbol(pre_inlet_class, gensym("iemhelp/help-pre_inlet")); ! }