Update of /cvsroot/pure-data/externals/ggee/control
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8684/control
Modified Files:
concat.c constant.c inv.c prepend.c qread.c rl.c rtout.c
serial_bird.c serial_ms.c serial_mt.c serialize.c shell.c
sinh.c sl.c stripdir.c unserialize.c unwonk.c
Log Message:
these pragmas are only used for MSVC, not MinGW or Cygwin, therefore changing the define from NT to _MSC_VER
Index: stripdir.c
===================================================================
RCS file: /cvsroot/pure-data/externals/ggee/control/stripdir.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** stripdir.c 17 Jun 2002 10:13:53 -0000 1.1.1.1
--- stripdir.c 14 Nov 2005 21:59:08 -0000 1.2
***************
*** 1,48 ****
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
! #include <string.h>
! #ifdef NT
! #pragma warning( disable : 4244 )
! #pragma warning( disable : 4305 )
! #endif
!
! /* ------------------------ stripdir ----------------------------- */
!
! static t_class *stripdir_class;
!
!
! typedef struct _stripdir
! {
! t_object x_obj;
! } t_stripdir;
!
!
! void stripdir_symbol(t_stripdir *x,t_symbol* s)
! {
! int len = strlen(s->s_name);
!
! while (len--)
! if (*(s->s_name + len) == '/') {
! outlet_symbol(x->x_obj.ob_outlet,gensym(s->s_name + len + 1));
! break;
! }
!
! }
!
! static void *stripdir_new()
! {
! t_stripdir *x = (t_stripdir *)pd_new(stripdir_class);
! outlet_new(&x->x_obj, &s_float);
! return (x);
! }
!
! void stripdir_setup(void)
! {
! stripdir_class = class_new(gensym("stripdir"), (t_newmethod)stripdir_new, 0,
! sizeof(t_stripdir), 0,0);
! class_addsymbol(stripdir_class,stripdir_symbol);
! }
!
!
--- 1,48 ----
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
! #include <string.h>
! #ifdef _MSC_VER
! #pragma warning( disable : 4244 )
! #pragma warning( disable : 4305 )
! #endif
!
! /* ------------------------ stripdir ----------------------------- */
!
! static t_class *stripdir_class;
!
!
! typedef struct _stripdir
! {
! t_object x_obj;
! } t_stripdir;
!
!
! void stripdir_symbol(t_stripdir *x,t_symbol* s)
! {
! int len = strlen(s->s_name);
!
! while (len--)
! if (*(s->s_name + len) == '/') {
! outlet_symbol(x->x_obj.ob_outlet,gensym(s->s_name + len + 1));
! break;
! }
!
! }
!
! static void *stripdir_new()
! {
! t_stripdir *x = (t_stripdir *)pd_new(stripdir_class);
! outlet_new(&x->x_obj, &s_float);
! return (x);
! }
!
! void stripdir_setup(void)
! {
! stripdir_class = class_new(gensym("stripdir"), (t_newmethod)stripdir_new, 0,
! sizeof(t_stripdir), 0,0);
! class_addsymbol(stripdir_class,stripdir_symbol);
! }
!
!
Index: serialize.c
===================================================================
RCS file: /cvsroot/pure-data/externals/ggee/control/serialize.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** serialize.c 17 Jun 2002 10:13:53 -0000 1.1.1.1
--- serialize.c 14 Nov 2005 21:59:08 -0000 1.2
***************
*** 1,58 ****
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
! #ifdef NT
! #pragma warning( disable : 4244 )
! #pragma warning( disable : 4305 )
! #endif
!
! /* ------------------------ serialize ----------------------------- */
!
! #define MAX_ELEMENTS 256
!
! static t_class *serialize_class;
!
!
! typedef struct _serialize
! {
! t_object x_obj;
! t_atom x_abuf[MAX_ELEMENTS];
! t_int x_count;
! t_float x_elements;
! } t_serialize;
!
!
! void serialize_float(t_serialize *x,t_floatarg f)
! {
! SETFLOAT(&x->x_abuf[x->x_count],f);
! x->x_count++;
!
! if (x->x_count == x->x_elements) {
! outlet_list(x->x_obj.ob_outlet,0,x->x_count,x->x_abuf);
! x->x_count = 0;
! }
! }
!
!
! static void *serialize_new(t_floatarg f)
! {
! t_serialize *x = (t_serialize *)pd_new(serialize_class);
! outlet_new(&x->x_obj,&s_float);
! x->x_elements = f;
! x->x_count=0;
! if ((f <= 0) || (f > MAX_ELEMENTS)) x->x_elements = 1;
! floatinlet_new(&x->x_obj, &x->x_elements);
! return (x);
! }
!
!
!
! void serialize_setup(void)
! {
! serialize_class = class_new(gensym("serialize"), (t_newmethod)serialize_new, 0,
! sizeof(t_serialize),0, A_DEFFLOAT,0);
! class_addfloat(serialize_class,serialize_float);
! }
!
!
--- 1,58 ----
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
! #ifdef _MSC_VER
! #pragma warning( disable : 4244 )
! #pragma warning( disable : 4305 )
! #endif
!
! /* ------------------------ serialize ----------------------------- */
!
! #define MAX_ELEMENTS 256
!
! static t_class *serialize_class;
!
!
! typedef struct _serialize
! {
! t_object x_obj;
! t_atom x_abuf[MAX_ELEMENTS];
! t_int x_count;
! t_float x_elements;
! } t_serialize;
!
!
! void serialize_float(t_serialize *x,t_floatarg f)
! {
! SETFLOAT(&x->x_abuf[x->x_count],f);
! x->x_count++;
!
! if (x->x_count == x->x_elements) {
! outlet_list(x->x_obj.ob_outlet,0,x->x_count,x->x_abuf);
! x->x_count = 0;
! }
! }
!
!
! static void *serialize_new(t_floatarg f)
! {
! t_serialize *x = (t_serialize *)pd_new(serialize_class);
! outlet_new(&x->x_obj,&s_float);
! x->x_elements = f;
! x->x_count=0;
! if ((f <= 0) || (f > MAX_ELEMENTS)) x->x_elements = 1;
! floatinlet_new(&x->x_obj, &x->x_elements);
! return (x);
! }
!
!
!
! void serialize_setup(void)
! {
! serialize_class = class_new(gensym("serialize"), (t_newmethod)serialize_new, 0,
! sizeof(t_serialize),0, A_DEFFLOAT,0);
! class_addfloat(serialize_class,serialize_float);
! }
!
!
Index: concat.c
===================================================================
RCS file: /cvsroot/pure-data/externals/ggee/control/concat.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** concat.c 18 Sep 2003 11:27:02 -0000 1.2
--- concat.c 14 Nov 2005 21:59:07 -0000 1.3
***************
*** 1,59 ****
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
! #include <string.h>
!
! /* ------------------------ concat ----------------------------- */
!
! #define MAX_ELEMENTS 256
!
! static t_class *concat_class;
!
!
! typedef struct _concat
! {
! t_object x_obj;
! t_symbol* x_sym;
! } t_concat;
!
! static char tsym[2048];
!
! void concat_float(t_concat *x,t_float f)
! {
! sprintf(tsym,"%g",f);
! strcat(tsym,x->x_sym->s_name);
!
! outlet_symbol(x->x_obj.ob_outlet,gensym(tsym));
! }
!
! void concat_symbol(t_concat *x,t_symbol* s)
! {
! strcpy(tsym,s->s_name);
! strcat(tsym,x->x_sym->s_name);
!
! outlet_symbol(x->x_obj.ob_outlet,gensym(tsym));
! }
!
!
! static void *concat_new(t_symbol* s)
! {
! t_concat *x = (t_concat *)pd_new(concat_class);
! outlet_new(&x->x_obj,&s_float);
! symbolinlet_new(&x->x_obj, &x->x_sym);
! x->x_sym = s;
! *tsym = 0;
! return (x);
! }
!
!
!
! void concat_setup(void)
! {
! concat_class = class_new(gensym("concat"), (t_newmethod)concat_new, 0,
! sizeof(t_concat),0, A_DEFSYM,0);
! class_addsymbol(concat_class,concat_symbol);
! class_addfloat(concat_class,concat_float);
! }
!
!
--- 1,59 ----
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
! #include <string.h>
!
! /* ------------------------ concat ----------------------------- */
!
! #define MAX_ELEMENTS 256
!
! static t_class *concat_class;
!
!
! typedef struct _concat
! {
! t_object x_obj;
! t_symbol* x_sym;
! } t_concat;
!
! static char tsym[2048];
!
! void concat_float(t_concat *x,t_float f)
! {
! sprintf(tsym,"%g",f);
! strcat(tsym,x->x_sym->s_name);
!
! outlet_symbol(x->x_obj.ob_outlet,gensym(tsym));
! }
!
! void concat_symbol(t_concat *x,t_symbol* s)
! {
! strcpy(tsym,s->s_name);
! strcat(tsym,x->x_sym->s_name);
!
! outlet_symbol(x->x_obj.ob_outlet,gensym(tsym));
! }
!
!
! static void *concat_new(t_symbol* s)
! {
! t_concat *x = (t_concat *)pd_new(concat_class);
! outlet_new(&x->x_obj,&s_float);
! symbolinlet_new(&x->x_obj, &x->x_sym);
! x->x_sym = s;
! *tsym = 0;
! return (x);
! }
!
!
!
! void concat_setup(void)
! {
! concat_class = class_new(gensym("concat"), (t_newmethod)concat_new, 0,
! sizeof(t_concat),0, A_DEFSYM,0);
! class_addsymbol(concat_class,concat_symbol);
! class_addfloat(concat_class,concat_float);
! }
!
!
Index: serial_bird.c
===================================================================
RCS file: /cvsroot/pure-data/externals/ggee/control/serial_bird.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** serial_bird.c 9 Mar 2003 11:10:53 -0000 1.2
--- serial_bird.c 14 Nov 2005 21:59:08 -0000 1.3
***************
*** 1,265 ****
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
! #include <string.h>
!
! #define DEBUG(x)
! /*#define DEBUG(x) x*/
!
! static t_class *serial_bird_class;
!
!
! #define BIRD_DATA_START 0x80
!
! #define BIRDCMD_MODE_POS 86
! #define BIRD_BYTES_POS 6
!
! #define BIRDCMD_MODE_POSANG 89
! #define BIRD_BYTES_POSANG 12
!
! #define BIRDCMD_MODE_POSMAT 90
! #define BIRD_BYTES_POSMAT 24
!
! #define BIRDCMD_MODE_POSQUAT 93
! #define BIRD_BYTES_POSQUAT 14
!
! #define BIRDCMD_MODE_QUAT 92
! #define BIRD_BYTES_QUAT 8
!
! #define BIRDCMD_STREAM 64
! #define BIRDCMD_POINT 66
!
! #define BIRD_GETDATA(x,y) ((float)((short)(y<<9 | x<<2)))
!
! #define MAXBUFFER 32
!
!
!
! typedef struct _serial_bird
! {
! t_object x_obj;
! char x_c[MAXBUFFER];
! t_int x_dataformat;
! t_int x_maxcount;
! t_int x_count;
! t_float x_posx;
! t_float x_posy;
! t_float x_posz;
! t_outlet *x_out2;
! } t_serial_bird;
!
!
! static void serial_bird_reset( t_serial_bird* x)
! {
! x->x_posx=0;
! x->x_posy=0;
! x->x_count = 0;
! outlet_float(x->x_obj.ob_outlet, x->x_posx);
! outlet_float(x->x_out2, x->x_posy);
! }
!
! static void serial_bird_float( t_serial_bird* x,t_floatarg f)
! {
! unsigned char c = (unsigned char) f;
! t_atom at[BIRD_BYTES_POSMAT];
! t_int ac = 0;
!
! if (c&BIRD_DATA_START) {
! x->x_count=0;
! x->x_c[x->x_count] = c & 0x7f;
! }
! else
! x->x_c[x->x_count] = c;
!
! DEBUG(post("data %d in = %x, start = %d",x->x_count,c,c&BIRD_DATA_START);)
!
! if (x->x_count == x->x_maxcount-1) {
! switch (x->x_dataformat) {
! case BIRDCMD_MODE_POS:
! ac = 3;
! SETFLOAT(&at[0], 0.25*BIRD_GETDATA(x->x_c[0],x->x_c[1]));
! SETFLOAT(&at[1], 0.25*BIRD_GETDATA(x->x_c[2],x->x_c[3]));
! SETFLOAT(&at[2], 0.25*BIRD_GETDATA(x->x_c[4],x->x_c[5]));
! break;
! case BIRDCMD_MODE_POSANG:
! ac = 6;
! SETFLOAT(&at[0], 0.25*BIRD_GETDATA(x->x_c[0],x->x_c[1]));
! SETFLOAT(&at[1], 0.25*BIRD_GETDATA(x->x_c[2],x->x_c[3]));
! SETFLOAT(&at[2], 0.25*BIRD_GETDATA(x->x_c[4],x->x_c[5]));
! SETFLOAT(&at[3], BIRD_GETDATA(x->x_c[6],x->x_c[7]));
! SETFLOAT(&at[4], BIRD_GETDATA(x->x_c[8],x->x_c[9]));
! SETFLOAT(&at[5], BIRD_GETDATA(x->x_c[10],x->x_c[11]));
! break;
! case BIRDCMD_MODE_POSMAT:
! ac = 12;
! SETFLOAT(&at[0], BIRD_GETDATA(x->x_c[0],x->x_c[1]));
! SETFLOAT(&at[1], BIRD_GETDATA(x->x_c[2],x->x_c[3]));
! SETFLOAT(&at[2], BIRD_GETDATA(x->x_c[4],x->x_c[5]));
! SETFLOAT(&at[3], BIRD_GETDATA(x->x_c[6],x->x_c[7]));
! SETFLOAT(&at[4], BIRD_GETDATA(x->x_c[8],x->x_c[9]));
! SETFLOAT(&at[5], BIRD_GETDATA(x->x_c[10],x->x_c[11]));
! SETFLOAT(&at[6], BIRD_GETDATA(x->x_c[12],x->x_c[13]));
! SETFLOAT(&at[7], BIRD_GETDATA(x->x_c[14],x->x_c[15]));
! SETFLOAT(&at[8], BIRD_GETDATA(x->x_c[16],x->x_c[17]));
! SETFLOAT(&at[9], BIRD_GETDATA(x->x_c[18],x->x_c[19]));
! SETFLOAT(&at[10], BIRD_GETDATA(x->x_c[20],x->x_c[21]));
! SETFLOAT(&at[11], BIRD_GETDATA(x->x_c[22],x->x_c[23]));
! break;
! case BIRDCMD_MODE_POSQUAT:
! ac = 7;
! SETFLOAT(&at[0], BIRD_GETDATA(x->x_c[0],x->x_c[1]));
! SETFLOAT(&at[1], BIRD_GETDATA(x->x_c[2],x->x_c[3]));
! SETFLOAT(&at[2], BIRD_GETDATA(x->x_c[4],x->x_c[5]));
! SETFLOAT(&at[3], BIRD_GETDATA(x->x_c[6],x->x_c[7]));
! SETFLOAT(&at[4], BIRD_GETDATA(x->x_c[8],x->x_c[9]));
! SETFLOAT(&at[5], BIRD_GETDATA(x->x_c[10],x->x_c[11]));
! SETFLOAT(&at[6], BIRD_GETDATA(x->x_c[12],x->x_c[13]));
! break;
! case BIRDCMD_MODE_QUAT:
! ac = 4;
! SETFLOAT(&at[0], BIRD_GETDATA(x->x_c[0],x->x_c[1]));
! SETFLOAT(&at[1], BIRD_GETDATA(x->x_c[2],x->x_c[3]));
! SETFLOAT(&at[2], BIRD_GETDATA(x->x_c[4],x->x_c[5]));
! SETFLOAT(&at[3], BIRD_GETDATA(x->x_c[6],x->x_c[7]));
! break;
! }
!
! /* post("posx %d, posy %d",x->x_posx,x->x_posy);*/
! outlet_list(x->x_obj.ob_outlet,&s_list, ac, at);
! }
!
! x->x_count = (++x->x_count)%(x->x_maxcount);
! }
!
! static void serial_bird_poll( t_serial_bird* x)
! {
! post("poll");
! /* outlet_float(x->x_out2,(float)x->x_dataformat);*/
! outlet_float(x->x_out2,(float)BIRDCMD_POINT);
! }
!
! static void serial_bird_mode( t_serial_bird* x,t_symbol* s)
! {
! post("mode");
! /* outlet_float(x->x_out2,(float)x->x_dataformat);*/
!
!
! if (!strcmp(s->s_name,"position")) {
! x->x_dataformat = BIRDCMD_MODE_POS;
! x->x_maxcount = BIRD_BYTES_POS;
! }
!
! if (!strcmp(s->s_name,"positionangle")) {
! x->x_dataformat = BIRDCMD_MODE_POSANG;
! x->x_maxcount = BIRD_BYTES_POSANG;
! }
!
! if (!strcmp(s->s_name,"positionmatrix")) {
! x->x_dataformat = BIRDCMD_MODE_POSMAT;
! x->x_maxcount = BIRD_BYTES_POSMAT;
! }
!
! if (!strcmp(s->s_name,"positionquat")) {
! x->x_dataformat = BIRDCMD_MODE_POSQUAT;
! x->x_maxcount = BIRD_BYTES_POSQUAT;
! }
!
! if (!strcmp(s->s_name,"quaternion")) {
! x->x_dataformat = BIRDCMD_MODE_QUAT;
! x->x_maxcount = BIRD_BYTES_QUAT;
! }
!
! outlet_float(x->x_out2,(float)x->x_dataformat);
! }
!
! static void serial_bird_init( t_serial_bird* x)
! {
! t_atom cmd[8];
!
! SETFLOAT(cmd,14400.);
! outlet_anything(x->x_out2,gensym("speed"),1,cmd);
!
!
! SETFLOAT(cmd,0.);
! SETSYMBOL(cmd+1,gensym("CLOCAL"));
! SETSYMBOL(cmd+2,gensym("CREAD"));
! SETSYMBOL(cmd+3,gensym("CS8"));
! outlet_anything(x->x_out2,gensym("setcontrol"),4,cmd);
!
! SETFLOAT(cmd,0.);
! SETSYMBOL(cmd+1,gensym("IXOFF"));
! outlet_anything(x->x_out2,gensym("setinput"),2,cmd);
!
! SETFLOAT(cmd,0.);
! outlet_anything(x->x_out2,gensym("setlocal"),1,cmd);
!
! SETFLOAT(cmd,0.);
! SETFLOAT(cmd+1,20.);
! outlet_anything(x->x_out2,gensym("vtime"),2,cmd);
!
!
! SETSYMBOL(cmd,gensym("RTS"));
! SETFLOAT(cmd+1,0.);
! outlet_anything(x->x_out2,gensym("setlines"),2,cmd);
!
! SETSYMBOL(cmd,gensym("DTR"));
! SETFLOAT(cmd+1,1.);
! outlet_anything(x->x_out2,gensym("setlines"),2,cmd);
!
!
! /* start the polling on the serial device immediately */
!
! outlet_anything(x->x_out2,gensym("start"),0,cmd);
!
! }
!
! static void serial_bird_start( t_serial_bird* x)
! {
! post("start");
! /* outlet_float(x->x_out2,(float)x->x_dataformat);*/
! outlet_float(x->x_out2,(float)BIRDCMD_STREAM);
! }
!
!
! static void serial_bird_stop( t_serial_bird* x)
! {
! post("stop");
! outlet_float(x->x_out2,(float)BIRDCMD_POINT);
! }
!
! static void *serial_bird_new(t_symbol *s)
! {
! t_serial_bird *x = (t_serial_bird *)pd_new(serial_bird_class);
!
! x->x_count = 0;
! x->x_posx = 0;
! x->x_posy = 0;
! x->x_dataformat = BIRDCMD_MODE_POSANG;
! x->x_maxcount = BIRD_BYTES_POSANG;
!
!
! outlet_new(&x->x_obj, &s_float);
! x->x_out2 = outlet_new(&x->x_obj, &s_float);
!
! return x;
! }
!
!
! void serial_bird_setup(void)
! {
! serial_bird_class = class_new(gensym("serial_bird"), (t_newmethod)serial_bird_new,
! NULL,
! sizeof(t_serial_bird), 0,A_DEFSYM,0);
! class_addfloat(serial_bird_class,serial_bird_float);
! class_addmethod(serial_bird_class,(t_method) serial_bird_reset,gensym("reset"),0);
! class_addmethod(serial_bird_class,(t_method) serial_bird_init,gensym("init"),0);
!
!
! class_addmethod(serial_bird_class,(t_method) serial_bird_start,gensym("start"),0);
! class_addmethod(serial_bird_class,(t_method) serial_bird_stop,gensym("stop"),0);
! class_addmethod(serial_bird_class,(t_method) serial_bird_poll,gensym("poll"),0);
! class_addmethod(serial_bird_class,(t_method) serial_bird_mode,gensym("mode"),A_SYMBOL,NULL);
! }
!
!
--- 1,265 ----
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
! #include <string.h>
!
! #define DEBUG(x)
! /*#define DEBUG(x) x*/
!
! static t_class *serial_bird_class;
!
!
! #define BIRD_DATA_START 0x80
!
! #define BIRDCMD_MODE_POS 86
! #define BIRD_BYTES_POS 6
!
! #define BIRDCMD_MODE_POSANG 89
! #define BIRD_BYTES_POSANG 12
!
! #define BIRDCMD_MODE_POSMAT 90
! #define BIRD_BYTES_POSMAT 24
!
! #define BIRDCMD_MODE_POSQUAT 93
! #define BIRD_BYTES_POSQUAT 14
!
! #define BIRDCMD_MODE_QUAT 92
! #define BIRD_BYTES_QUAT 8
!
! #define BIRDCMD_STREAM 64
! #define BIRDCMD_POINT 66
!
! #define BIRD_GETDATA(x,y) ((float)((short)(y<<9 | x<<2)))
!
! #define MAXBUFFER 32
!
!
!
! typedef struct _serial_bird
! {
! t_object x_obj;
! char x_c[MAXBUFFER];
! t_int x_dataformat;
! t_int x_maxcount;
! t_int x_count;
! t_float x_posx;
! t_float x_posy;
! t_float x_posz;
! t_outlet *x_out2;
! } t_serial_bird;
!
!
! static void serial_bird_reset( t_serial_bird* x)
! {
! x->x_posx=0;
! x->x_posy=0;
! x->x_count = 0;
! outlet_float(x->x_obj.ob_outlet, x->x_posx);
! outlet_float(x->x_out2, x->x_posy);
! }
!
! static void serial_bird_float( t_serial_bird* x,t_floatarg f)
! {
! unsigned char c = (unsigned char) f;
! t_atom at[BIRD_BYTES_POSMAT];
! t_int ac = 0;
!
! if (c&BIRD_DATA_START) {
! x->x_count=0;
! x->x_c[x->x_count] = c & 0x7f;
! }
! else
! x->x_c[x->x_count] = c;
!
! DEBUG(post("data %d in = %x, start = %d",x->x_count,c,c&BIRD_DATA_START);)
!
! if (x->x_count == x->x_maxcount-1) {
! switch (x->x_dataformat) {
! case BIRDCMD_MODE_POS:
! ac = 3;
! SETFLOAT(&at[0], 0.25*BIRD_GETDATA(x->x_c[0],x->x_c[1]));
! SETFLOAT(&at[1], 0.25*BIRD_GETDATA(x->x_c[2],x->x_c[3]));
! SETFLOAT(&at[2], 0.25*BIRD_GETDATA(x->x_c[4],x->x_c[5]));
! break;
! case BIRDCMD_MODE_POSANG:
! ac = 6;
! SETFLOAT(&at[0], 0.25*BIRD_GETDATA(x->x_c[0],x->x_c[1]));
! SETFLOAT(&at[1], 0.25*BIRD_GETDATA(x->x_c[2],x->x_c[3]));
! SETFLOAT(&at[2], 0.25*BIRD_GETDATA(x->x_c[4],x->x_c[5]));
! SETFLOAT(&at[3], BIRD_GETDATA(x->x_c[6],x->x_c[7]));
! SETFLOAT(&at[4], BIRD_GETDATA(x->x_c[8],x->x_c[9]));
! SETFLOAT(&at[5], BIRD_GETDATA(x->x_c[10],x->x_c[11]));
! break;
! case BIRDCMD_MODE_POSMAT:
! ac = 12;
! SETFLOAT(&at[0], BIRD_GETDATA(x->x_c[0],x->x_c[1]));
! SETFLOAT(&at[1], BIRD_GETDATA(x->x_c[2],x->x_c[3]));
! SETFLOAT(&at[2], BIRD_GETDATA(x->x_c[4],x->x_c[5]));
! SETFLOAT(&at[3], BIRD_GETDATA(x->x_c[6],x->x_c[7]));
! SETFLOAT(&at[4], BIRD_GETDATA(x->x_c[8],x->x_c[9]));
! SETFLOAT(&at[5], BIRD_GETDATA(x->x_c[10],x->x_c[11]));
! SETFLOAT(&at[6], BIRD_GETDATA(x->x_c[12],x->x_c[13]));
! SETFLOAT(&at[7], BIRD_GETDATA(x->x_c[14],x->x_c[15]));
! SETFLOAT(&at[8], BIRD_GETDATA(x->x_c[16],x->x_c[17]));
! SETFLOAT(&at[9], BIRD_GETDATA(x->x_c[18],x->x_c[19]));
! SETFLOAT(&at[10], BIRD_GETDATA(x->x_c[20],x->x_c[21]));
! SETFLOAT(&at[11], BIRD_GETDATA(x->x_c[22],x->x_c[23]));
! break;
! case BIRDCMD_MODE_POSQUAT:
! ac = 7;
! SETFLOAT(&at[0], BIRD_GETDATA(x->x_c[0],x->x_c[1]));
! SETFLOAT(&at[1], BIRD_GETDATA(x->x_c[2],x->x_c[3]));
! SETFLOAT(&at[2], BIRD_GETDATA(x->x_c[4],x->x_c[5]));
! SETFLOAT(&at[3], BIRD_GETDATA(x->x_c[6],x->x_c[7]));
! SETFLOAT(&at[4], BIRD_GETDATA(x->x_c[8],x->x_c[9]));
! SETFLOAT(&at[5], BIRD_GETDATA(x->x_c[10],x->x_c[11]));
! SETFLOAT(&at[6], BIRD_GETDATA(x->x_c[12],x->x_c[13]));
! break;
! case BIRDCMD_MODE_QUAT:
! ac = 4;
! SETFLOAT(&at[0], BIRD_GETDATA(x->x_c[0],x->x_c[1]));
! SETFLOAT(&at[1], BIRD_GETDATA(x->x_c[2],x->x_c[3]));
! SETFLOAT(&at[2], BIRD_GETDATA(x->x_c[4],x->x_c[5]));
! SETFLOAT(&at[3], BIRD_GETDATA(x->x_c[6],x->x_c[7]));
! break;
! }
!
! /* post("posx %d, posy %d",x->x_posx,x->x_posy);*/
! outlet_list(x->x_obj.ob_outlet,&s_list, ac, at);
! }
!
! x->x_count = (++x->x_count)%(x->x_maxcount);
! }
!
! static void serial_bird_poll( t_serial_bird* x)
! {
! post("poll");
! /* outlet_float(x->x_out2,(float)x->x_dataformat);*/
! outlet_float(x->x_out2,(float)BIRDCMD_POINT);
! }
!
! static void serial_bird_mode( t_serial_bird* x,t_symbol* s)
! {
! post("mode");
! /* outlet_float(x->x_out2,(float)x->x_dataformat);*/
!
!
! if (!strcmp(s->s_name,"position")) {
! x->x_dataformat = BIRDCMD_MODE_POS;
! x->x_maxcount = BIRD_BYTES_POS;
! }
!
! if (!strcmp(s->s_name,"positionangle")) {
! x->x_dataformat = BIRDCMD_MODE_POSANG;
! x->x_maxcount = BIRD_BYTES_POSANG;
! }
!
! if (!strcmp(s->s_name,"positionmatrix")) {
! x->x_dataformat = BIRDCMD_MODE_POSMAT;
! x->x_maxcount = BIRD_BYTES_POSMAT;
! }
!
! if (!strcmp(s->s_name,"positionquat")) {
! x->x_dataformat = BIRDCMD_MODE_POSQUAT;
! x->x_maxcount = BIRD_BYTES_POSQUAT;
! }
!
! if (!strcmp(s->s_name,"quaternion")) {
! x->x_dataformat = BIRDCMD_MODE_QUAT;
! x->x_maxcount = BIRD_BYTES_QUAT;
! }
!
! outlet_float(x->x_out2,(float)x->x_dataformat);
! }
!
! static void serial_bird_init( t_serial_bird* x)
! {
! t_atom cmd[8];
!
! SETFLOAT(cmd,14400.);
! outlet_anything(x->x_out2,gensym("speed"),1,cmd);
!
!
! SETFLOAT(cmd,0.);
! SETSYMBOL(cmd+1,gensym("CLOCAL"));
! SETSYMBOL(cmd+2,gensym("CREAD"));
! SETSYMBOL(cmd+3,gensym("CS8"));
! outlet_anything(x->x_out2,gensym("setcontrol"),4,cmd);
!
! SETFLOAT(cmd,0.);
! SETSYMBOL(cmd+1,gensym("IXOFF"));
! outlet_anything(x->x_out2,gensym("setinput"),2,cmd);
!
! SETFLOAT(cmd,0.);
! outlet_anything(x->x_out2,gensym("setlocal"),1,cmd);
!
! SETFLOAT(cmd,0.);
! SETFLOAT(cmd+1,20.);
! outlet_anything(x->x_out2,gensym("vtime"),2,cmd);
!
!
! SETSYMBOL(cmd,gensym("RTS"));
! SETFLOAT(cmd+1,0.);
! outlet_anything(x->x_out2,gensym("setlines"),2,cmd);
!
! SETSYMBOL(cmd,gensym("DTR"));
! SETFLOAT(cmd+1,1.);
! outlet_anything(x->x_out2,gensym("setlines"),2,cmd);
!
!
! /* start the polling on the serial device immediately */
!
! outlet_anything(x->x_out2,gensym("start"),0,cmd);
!
! }
!
! static void serial_bird_start( t_serial_bird* x)
! {
! post("start");
! /* outlet_float(x->x_out2,(float)x->x_dataformat);*/
! outlet_float(x->x_out2,(float)BIRDCMD_STREAM);
! }
!
!
! static void serial_bird_stop( t_serial_bird* x)
! {
! post("stop");
! outlet_float(x->x_out2,(float)BIRDCMD_POINT);
! }
!
! static void *serial_bird_new(t_symbol *s)
! {
! t_serial_bird *x = (t_serial_bird *)pd_new(serial_bird_class);
!
! x->x_count = 0;
! x->x_posx = 0;
! x->x_posy = 0;
! x->x_dataformat = BIRDCMD_MODE_POSANG;
! x->x_maxcount = BIRD_BYTES_POSANG;
!
!
! outlet_new(&x->x_obj, &s_float);
! x->x_out2 = outlet_new(&x->x_obj, &s_float);
!
! return x;
! }
!
!
! void serial_bird_setup(void)
! {
! serial_bird_class = class_new(gensym("serial_bird"), (t_newmethod)serial_bird_new,
! NULL,
! sizeof(t_serial_bird), 0,A_DEFSYM,0);
! class_addfloat(serial_bird_class,serial_bird_float);
! class_addmethod(serial_bird_class,(t_method) serial_bird_reset,gensym("reset"),0);
! class_addmethod(serial_bird_class,(t_method) serial_bird_init,gensym("init"),0);
!
!
! class_addmethod(serial_bird_class,(t_method) serial_bird_start,gensym("start"),0);
! class_addmethod(serial_bird_class,(t_method) serial_bird_stop,gensym("stop"),0);
! class_addmethod(serial_bird_class,(t_method) serial_bird_poll,gensym("poll"),0);
! class_addmethod(serial_bird_class,(t_method) serial_bird_mode,gensym("mode"),A_SYMBOL,NULL);
! }
!
!
Index: rl.c
===================================================================
RCS file: /cvsroot/pure-data/externals/ggee/control/rl.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** rl.c 6 Apr 2003 20:44:07 -0000 1.3
--- rl.c 14 Nov 2005 21:59:08 -0000 1.4
***************
*** 1,81 ****
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
! #include <stdio.h>
! #ifdef NT
! #pragma warning( disable : 4244 )
! #pragma warning( disable : 4305 )
! #endif
!
!
! /* -------------------- lreceive ------------------------------ */
!
! static t_class *lreceive_class;
!
! typedef struct _lreceive
! {
! t_object x_obj;
! t_symbol *x_sym;
! } t_lreceive;
!
! static void lreceive_bang(t_lreceive *x)
! {
! outlet_bang(x->x_obj.ob_outlet);
! }
!
! static void lreceive_float(t_lreceive *x, t_float f)
! {
! outlet_float(x->x_obj.ob_outlet, f);
! }
!
! static void lreceive_symbol(t_lreceive *x, t_symbol *s)
! {
! outlet_symbol(x->x_obj.ob_outlet, s);
! }
!
! static void lreceive_pointer(t_lreceive *x, t_gpointer *gp)
! {
! outlet_pointer(x->x_obj.ob_outlet, gp);
! }
!
! static void lreceive_list(t_lreceive *x, t_symbol *s, int argc, t_atom *argv)
! {
! outlet_list(x->x_obj.ob_outlet, s, argc, argv);
! }
!
! static void lreceive_anything(t_lreceive *x, t_symbol *s, int argc, t_atom *argv)
! {
! outlet_anything(x->x_obj.ob_outlet, s, argc, argv);
! }
!
! static void *lreceive_new(t_symbol *s)
! {
! t_lreceive *x = (t_lreceive *)pd_new(lreceive_class);
! char mysym[MAXPDSTRING];
!
! sprintf(mysym,"%s%p",s->s_name,canvas_getcurrent());
! x->x_sym = gensym(mysym);
! pd_bind(&x->x_obj.ob_pd, x->x_sym);
! outlet_new(&x->x_obj, 0);
! return (x);
! }
!
! static void lreceive_free(t_lreceive *x)
! {
! pd_unbind(&x->x_obj.ob_pd, x->x_sym);
! }
!
! void rl_setup(void)
! {
! lreceive_class = class_new(gensym("receivelocal"), (t_newmethod)lreceive_new,
! (t_method)lreceive_free, sizeof(t_lreceive), CLASS_NOINLET, A_SYMBOL, 0);
! class_addcreator((t_newmethod)lreceive_new, gensym("rl"), A_DEFSYM, 0);
! class_addbang(lreceive_class, lreceive_bang);
! class_addfloat(lreceive_class, (t_method)lreceive_float);
! class_addsymbol(lreceive_class, lreceive_symbol);
! class_addpointer(lreceive_class, lreceive_pointer);
! class_addlist(lreceive_class, lreceive_list);
! class_addanything(lreceive_class, lreceive_anything);
! post("Warning: receivelocal (rl) is deprecated, please use \"receive $0-var\" instead");
! }
--- 1,81 ----
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
! #include <stdio.h>
! #ifdef _MSC_VER
! #pragma warning( disable : 4244 )
! #pragma warning( disable : 4305 )
! #endif
!
!
! /* -------------------- lreceive ------------------------------ */
!
! static t_class *lreceive_class;
!
! typedef struct _lreceive
! {
! t_object x_obj;
! t_symbol *x_sym;
! } t_lreceive;
!
! static void lreceive_bang(t_lreceive *x)
! {
! outlet_bang(x->x_obj.ob_outlet);
! }
!
! static void lreceive_float(t_lreceive *x, t_float f)
! {
! outlet_float(x->x_obj.ob_outlet, f);
! }
!
! static void lreceive_symbol(t_lreceive *x, t_symbol *s)
! {
! outlet_symbol(x->x_obj.ob_outlet, s);
! }
!
! static void lreceive_pointer(t_lreceive *x, t_gpointer *gp)
! {
! outlet_pointer(x->x_obj.ob_outlet, gp);
! }
!
! static void lreceive_list(t_lreceive *x, t_symbol *s, int argc, t_atom *argv)
! {
! outlet_list(x->x_obj.ob_outlet, s, argc, argv);
! }
!
! static void lreceive_anything(t_lreceive *x, t_symbol *s, int argc, t_atom *argv)
! {
! outlet_anything(x->x_obj.ob_outlet, s, argc, argv);
! }
!
! static void *lreceive_new(t_symbol *s)
! {
! t_lreceive *x = (t_lreceive *)pd_new(lreceive_class);
! char mysym[MAXPDSTRING];
!
! sprintf(mysym,"%s%p",s->s_name,canvas_getcurrent());
! x->x_sym = gensym(mysym);
! pd_bind(&x->x_obj.ob_pd, x->x_sym);
! outlet_new(&x->x_obj, 0);
! return (x);
! }
!
! static void lreceive_free(t_lreceive *x)
! {
! pd_unbind(&x->x_obj.ob_pd, x->x_sym);
! }
!
! void rl_setup(void)
! {
! lreceive_class = class_new(gensym("receivelocal"), (t_newmethod)lreceive_new,
! (t_method)lreceive_free, sizeof(t_lreceive), CLASS_NOINLET, A_SYMBOL, 0);
! class_addcreator((t_newmethod)lreceive_new, gensym("rl"), A_DEFSYM, 0);
! class_addbang(lreceive_class, lreceive_bang);
! class_addfloat(lreceive_class, (t_method)lreceive_float);
! class_addsymbol(lreceive_class, lreceive_symbol);
! class_addpointer(lreceive_class, lreceive_pointer);
! class_addlist(lreceive_class, lreceive_list);
! class_addanything(lreceive_class, lreceive_anything);
! post("Warning: receivelocal (rl) is deprecated, please use \"receive $0-var\" instead");
! }
Index: prepend.c
===================================================================
RCS file: /cvsroot/pure-data/externals/ggee/control/prepend.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** prepend.c 3 Jun 2003 12:59:11 -0000 1.2
--- prepend.c 14 Nov 2005 21:59:08 -0000 1.3
***************
*** 1,76 ****
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
! #ifdef NT
! #pragma warning( disable : 4244 )
! #pragma warning( disable : 4305 )
! #endif
!
! /* ------------------------ prepend ----------------------------- */
!
! static t_class *prepend_class;
!
!
! typedef struct _prepend
! {
! t_object x_obj;
! t_symbol* x_s;
! } t_prepend;
!
!
! void prepend_anything(t_prepend *x,t_symbol* s,t_int argc,t_atom* argv)
! {
! int i = argc;
! t_symbol* cur;
! t_atom a_out[256];
! int c_out = 0;
! t_atom* a = a_out;
!
! if (argv->a_type == A_SYMBOL) {
! SETSYMBOL(a,s);
! a++;
! c_out++;
! }
!
! while (i--) {
! switch( argv->a_type) {
! case A_FLOAT:
! SETFLOAT(a,atom_getfloat(argv));
! a++;
! c_out++;
! break;
! case A_SYMBOL:
! SETSYMBOL(a,atom_getsymbol(argv));
! a++;
! c_out++;
! break;
! default:
! post("unknown type");
! }
! argv++;
! }
! outlet_anything(x->x_obj.ob_outlet,x->x_s,c_out,(t_atom*)&a_out);
! }
!
! static void *prepend_new(t_symbol* s)
! {
! t_prepend *x = (t_prepend *)pd_new(prepend_class);
! outlet_new(&x->x_obj, &s_float);
! if (s != &s_)
! x->x_s = s;
! else {
! x->x_s = gensym("prepend");
! error("prepend needs symbol argument");
! }
! return (x);
! }
!
! void prepend_setup(void)
! {
! prepend_class = class_new(gensym("prepend"), (t_newmethod)prepend_new, 0,
! sizeof(t_prepend), 0,A_DEFSYM,NULL);
! class_addanything(prepend_class,prepend_anything);
! }
!
!
--- 1,76 ----
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
! #ifdef _MSC_VER
! #pragma warning( disable : 4244 )
! #pragma warning( disable : 4305 )
! #endif
!
! /* ------------------------ prepend ----------------------------- */
!
! static t_class *prepend_class;
!
!
! typedef struct _prepend
! {
! t_object x_obj;
! t_symbol* x_s;
! } t_prepend;
!
!
! void prepend_anything(t_prepend *x,t_symbol* s,t_int argc,t_atom* argv)
! {
! int i = argc;
! t_symbol* cur;
! t_atom a_out[256];
! int c_out = 0;
! t_atom* a = a_out;
!
! if (argv->a_type == A_SYMBOL) {
! SETSYMBOL(a,s);
! a++;
! c_out++;
! }
!
! while (i--) {
! switch( argv->a_type) {
! case A_FLOAT:
! SETFLOAT(a,atom_getfloat(argv));
! a++;
! c_out++;
! break;
! case A_SYMBOL:
! SETSYMBOL(a,atom_getsymbol(argv));
! a++;
! c_out++;
! break;
! default:
! post("unknown type");
! }
! argv++;
! }
! outlet_anything(x->x_obj.ob_outlet,x->x_s,c_out,(t_atom*)&a_out);
! }
!
! static void *prepend_new(t_symbol* s)
! {
! t_prepend *x = (t_prepend *)pd_new(prepend_class);
! outlet_new(&x->x_obj, &s_float);
! if (s != &s_)
! x->x_s = s;
! else {
! x->x_s = gensym("prepend");
! error("prepend needs symbol argument");
! }
! return (x);
! }
!
! void prepend_setup(void)
! {
! prepend_class = class_new(gensym("prepend"), (t_newmethod)prepend_new, 0,
! sizeof(t_prepend), 0,A_DEFSYM,NULL);
! class_addanything(prepend_class,prepend_anything);
! }
!
!
Index: serial_ms.c
===================================================================
RCS file: /cvsroot/pure-data/externals/ggee/control/serial_ms.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** serial_ms.c 17 Jun 2002 10:13:53 -0000 1.1.1.1
--- serial_ms.c 14 Nov 2005 21:59:08 -0000 1.2
***************
*** 1,120 ****
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
!
!
! static t_class *serial_ms_class;
!
!
! typedef struct _serial_ms
! {
! t_object x_obj;
! char x_c[4];
! t_int x_count;
! t_int x_posx;
! t_int x_posy;
! t_outlet *x_out2;
! } t_serial_ms;
!
!
! static void serial_ms_reset( t_serial_ms* x)
! {
! x->x_posx=0;
! x->x_posy=0;
! x->x_count = 0;
! outlet_float(x->x_obj.ob_outlet, x->x_posx);
! outlet_float(x->x_out2, x->x_posy);
! }
!
! static void serial_ms_init( t_serial_ms* x)
! {
! t_atom cmd[8];
!
! SETFLOAT(cmd,0.);
! SETSYMBOL(cmd+1,gensym("CLOCAL"));
! SETSYMBOL(cmd+2,gensym("CREAD"));
! SETSYMBOL(cmd+3,gensym("CS7"));
! /* SETSYMBOL(cmd+4,gensym("HUPCL")); */
! outlet_anything(x->x_out2,gensym("setcontrol"),4,cmd);
!
! SETFLOAT(cmd,0.);
! SETSYMBOL(cmd+1,gensym("IGNBRK"));
! SETSYMBOL(cmd+2,gensym("IGNPAR"));
! outlet_anything(x->x_out2,gensym("setinput"),3,cmd);
!
! SETFLOAT(cmd,0.);
! SETFLOAT(cmd+1,1.);
! outlet_anything(x->x_out2,gensym("vtime"),2,cmd);
!
! SETFLOAT(cmd,1200.);
! outlet_anything(x->x_out2,gensym("speed"),1,cmd);
!
! SETSYMBOL(cmd,gensym("*n"));
! outlet_anything(x->x_out2,gensym("send"),1,cmd);
!
!
! SETSYMBOL(cmd,gensym("N"));
! outlet_anything(x->x_out2,gensym("send"),1,cmd);
!
!
! }
!
!
!
! static void serial_ms_float( t_serial_ms* x,t_floatarg f)
! {
! int dx,dy;
! t_atom at[2];
!
! x->x_c[x->x_count] = (char) f;
!
! x->x_count = (++x->x_count)%3;
!
! if (x->x_count==2) {
! dx= (signed char)(((x->x_c[0] & 0x03) << 6) |
! (x->x_c[1] & 0x3F));
! dy= (signed char)(((x->x_c[0] & 0x0C) << 4) |
! (x->x_c[2] & 0x3F));
! x->x_posx += dx;
! x->x_posy += dy;
! /* post("posx %d, posy %d",x->x_posx,x->x_posy);*/
!
! SETFLOAT(at,x->x_posx);
! SETFLOAT(at+1,x->x_posy);
! outlet_list(x->x_obj.ob_outlet,&s_list, 2, at);
! }
!
!
! }
!
!
! static void *serial_ms_new(t_symbol *s)
! {
! t_serial_ms *x = (t_serial_ms *)pd_new(serial_ms_class);
!
! x->x_count = 0;
! x->x_posx = 0;
! x->x_posy = 0;
!
!
! outlet_new(&x->x_obj, &s_float);
! x->x_out2 = outlet_new(&x->x_obj, &s_float);
!
! return x;
! }
!
!
! void serial_ms_setup(void)
! {
! serial_ms_class = class_new(gensym("serial_ms"), (t_newmethod)serial_ms_new,
! NULL,
! sizeof(t_serial_ms), 0,A_DEFSYM,0);
! class_addfloat(serial_ms_class,serial_ms_float);
! class_addmethod(serial_ms_class,(t_method) serial_ms_reset,gensym("reset"),0);
! class_addmethod(serial_ms_class, (t_method)serial_ms_init, gensym("init"),0);
!
!
! }
!
!
--- 1,120 ----
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
!
!
! static t_class *serial_ms_class;
!
!
! typedef struct _serial_ms
! {
! t_object x_obj;
! char x_c[4];
! t_int x_count;
! t_int x_posx;
! t_int x_posy;
! t_outlet *x_out2;
! } t_serial_ms;
!
!
! static void serial_ms_reset( t_serial_ms* x)
! {
! x->x_posx=0;
! x->x_posy=0;
! x->x_count = 0;
! outlet_float(x->x_obj.ob_outlet, x->x_posx);
! outlet_float(x->x_out2, x->x_posy);
! }
!
! static void serial_ms_init( t_serial_ms* x)
! {
! t_atom cmd[8];
!
! SETFLOAT(cmd,0.);
! SETSYMBOL(cmd+1,gensym("CLOCAL"));
! SETSYMBOL(cmd+2,gensym("CREAD"));
! SETSYMBOL(cmd+3,gensym("CS7"));
! /* SETSYMBOL(cmd+4,gensym("HUPCL")); */
! outlet_anything(x->x_out2,gensym("setcontrol"),4,cmd);
!
! SETFLOAT(cmd,0.);
! SETSYMBOL(cmd+1,gensym("IGNBRK"));
! SETSYMBOL(cmd+2,gensym("IGNPAR"));
! outlet_anything(x->x_out2,gensym("setinput"),3,cmd);
!
! SETFLOAT(cmd,0.);
! SETFLOAT(cmd+1,1.);
! outlet_anything(x->x_out2,gensym("vtime"),2,cmd);
!
! SETFLOAT(cmd,1200.);
! outlet_anything(x->x_out2,gensym("speed"),1,cmd);
!
! SETSYMBOL(cmd,gensym("*n"));
! outlet_anything(x->x_out2,gensym("send"),1,cmd);
!
!
! SETSYMBOL(cmd,gensym("N"));
! outlet_anything(x->x_out2,gensym("send"),1,cmd);
!
!
! }
!
!
!
! static void serial_ms_float( t_serial_ms* x,t_floatarg f)
! {
! int dx,dy;
! t_atom at[2];
!
! x->x_c[x->x_count] = (char) f;
!
! x->x_count = (++x->x_count)%3;
!
! if (x->x_count==2) {
! dx= (signed char)(((x->x_c[0] & 0x03) << 6) |
! (x->x_c[1] & 0x3F));
! dy= (signed char)(((x->x_c[0] & 0x0C) << 4) |
! (x->x_c[2] & 0x3F));
! x->x_posx += dx;
! x->x_posy += dy;
! /* post("posx %d, posy %d",x->x_posx,x->x_posy);*/
!
! SETFLOAT(at,x->x_posx);
! SETFLOAT(at+1,x->x_posy);
! outlet_list(x->x_obj.ob_outlet,&s_list, 2, at);
! }
!
!
! }
!
!
! static void *serial_ms_new(t_symbol *s)
! {
! t_serial_ms *x = (t_serial_ms *)pd_new(serial_ms_class);
!
! x->x_count = 0;
! x->x_posx = 0;
! x->x_posy = 0;
!
!
! outlet_new(&x->x_obj, &s_float);
! x->x_out2 = outlet_new(&x->x_obj, &s_float);
!
! return x;
! }
!
!
! void serial_ms_setup(void)
! {
! serial_ms_class = class_new(gensym("serial_ms"), (t_newmethod)serial_ms_new,
! NULL,
! sizeof(t_serial_ms), 0,A_DEFSYM,0);
! class_addfloat(serial_ms_class,serial_ms_float);
! class_addmethod(serial_ms_class,(t_method) serial_ms_reset,gensym("reset"),0);
! class_addmethod(serial_ms_class, (t_method)serial_ms_init, gensym("init"),0);
!
!
! }
!
!
Index: constant.c
===================================================================
RCS file: /cvsroot/pure-data/externals/ggee/control/constant.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** constant.c 17 Jun 2002 10:13:53 -0000 1.1.1.1
--- constant.c 14 Nov 2005 21:59:07 -0000 1.2
***************
*** 1,61 ****
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
! #include <math.h>
! #include <string.h>
! #ifdef NT
! #pragma warning( disable : 4244 )
! #pragma warning( disable : 4305 )
! #endif
!
! /* ------------------------ constant ----------------------------- */
! #ifndef M_PI
! #define M_PI 3.141593f
! #endif
!
! static t_class *constant_class;
!
!
! typedef struct _constant
! {
! t_object x_obj;
! t_float x_constant;
! } t_constant;
!
!
! void constant_bang(t_constant *x)
! {
! outlet_float(x->x_obj.ob_outlet, x->x_constant);
! }
!
! static void *constant_new(t_symbol* s)
! {
! t_constant *x = (t_constant *)pd_new(constant_class);
!
! if (s == &s_)
! x->x_constant = M_PI;
!
! if (!strcmp(s->s_name,"PI"))
! x->x_constant = M_PI;
!
! if (!strcmp(s->s_name,"TWOPI"))
! x->x_constant = 2*M_PI;
!
! if (!strcmp(s->s_name,"e"))
! x->x_constant = exp(1.0);
!
!
!
! outlet_new(&x->x_obj, &s_float);
! return (x);
! }
!
! void constant_setup(void)
! {
! constant_class = class_new(gensym("constant"), (t_newmethod)constant_new, 0,
! sizeof(t_constant), 0,0);
! class_addbang(constant_class,constant_bang);
! }
!
!
--- 1,61 ----
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
! #include <math.h>
! #include <string.h>
! #ifdef _MSC_VER
! #pragma warning( disable : 4244 )
! #pragma warning( disable : 4305 )
! #endif
!
! /* ------------------------ constant ----------------------------- */
! #ifndef M_PI
! #define M_PI 3.141593f
! #endif
!
! static t_class *constant_class;
!
!
! typedef struct _constant
! {
! t_object x_obj;
! t_float x_constant;
! } t_constant;
!
!
! void constant_bang(t_constant *x)
! {
! outlet_float(x->x_obj.ob_outlet, x->x_constant);
! }
!
! static void *constant_new(t_symbol* s)
! {
! t_constant *x = (t_constant *)pd_new(constant_class);
!
! if (s == &s_)
! x->x_constant = M_PI;
!
! if (!strcmp(s->s_name,"PI"))
! x->x_constant = M_PI;
!
! if (!strcmp(s->s_name,"TWOPI"))
! x->x_constant = 2*M_PI;
!
! if (!strcmp(s->s_name,"e"))
! x->x_constant = exp(1.0);
!
!
!
! outlet_new(&x->x_obj, &s_float);
! return (x);
! }
!
! void constant_setup(void)
! {
! constant_class = class_new(gensym("constant"), (t_newmethod)constant_new, 0,
! sizeof(t_constant), 0,0);
! class_addbang(constant_class,constant_bang);
! }
!
!
Index: sinh.c
===================================================================
RCS file: /cvsroot/pure-data/externals/ggee/control/sinh.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** sinh.c 17 Jun 2002 10:13:53 -0000 1.1.1.1
--- sinh.c 14 Nov 2005 21:59:08 -0000 1.2
***************
*** 1,54 ****
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
! #ifdef NT
! #pragma warning( disable : 4244 )
! #pragma warning( disable : 4305 )
! #endif
!
! #include <math.h>
!
!
!
! /* ------------------------ sinh ----------------------------- */
!
! static t_class *sinh_class;
!
!
! typedef struct _sinh
! {
! t_object x_obj;
! } t_sinh;
!
!
! void sinh_bang(t_sinh *x)
! {
! post("bang");
! }
!
!
! void sinh_float(t_sinh *x,t_floatarg f)
! {
!
! outlet_float(x->x_obj.ob_outlet,sinh(f));
! }
!
!
! static void *sinh_new()
! {
! t_sinh *x = (t_sinh *)pd_new(sinh_class);
!
! outlet_new(&x->x_obj,&s_float);
! return (x);
! }
!
! void sinh_setup(void)
! {
! sinh_class = class_new(gensym("sinh"), (t_newmethod)sinh_new, 0,
! sizeof(t_sinh), 0,0);
! class_addbang(sinh_class,sinh_bang);
! class_addfloat(sinh_class,sinh_float);
! }
!
!
--- 1,54 ----
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
! #ifdef _MSC_VER
! #pragma warning( disable : 4244 )
! #pragma warning( disable : 4305 )
! #endif
!
! #include <math.h>
!
!
!
! /* ------------------------ sinh ----------------------------- */
!
! static t_class *sinh_class;
!
!
! typedef struct _sinh
! {
! t_object x_obj;
! } t_sinh;
!
!
! void sinh_bang(t_sinh *x)
! {
! post("bang");
! }
!
!
! void sinh_float(t_sinh *x,t_floatarg f)
! {
!
! outlet_float(x->x_obj.ob_outlet,sinh(f));
! }
!
!
! static void *sinh_new()
! {
! t_sinh *x = (t_sinh *)pd_new(sinh_class);
!
! outlet_new(&x->x_obj,&s_float);
! return (x);
! }
!
! void sinh_setup(void)
! {
! sinh_class = class_new(gensym("sinh"), (t_newmethod)sinh_new, 0,
! sizeof(t_sinh), 0,0);
! class_addbang(sinh_class,sinh_bang);
! class_addfloat(sinh_class,sinh_float);
! }
!
!
Index: unserialize.c
===================================================================
RCS file: /cvsroot/pure-data/externals/ggee/control/unserialize.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** unserialize.c 17 Jun 2002 10:13:53 -0000 1.1.1.1
--- unserialize.c 14 Nov 2005 21:59:08 -0000 1.2
***************
*** 1,57 ****
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
! #ifdef NT
! #pragma warning( disable : 4244 )
! #pragma warning( disable : 4305 )
! #endif
!
! /* ------------------------ unserialize ----------------------------- */
!
! #define MAX_ELEMENTS 256
!
! static t_class *unserialize_class;
!
!
! typedef struct _unserialize
! {
! t_object x_obj;
! t_atom x_abuf[MAX_ELEMENTS];
! t_int x_count;
! t_int x_elements;
! } t_unserialize;
!
!
! void unserialize_float(t_unserialize *x,t_floatarg f)
! {
! SETFLOAT(&x->x_abuf[x->x_count],f);
! x->x_count++;
!
! if (x->x_count == x->x_elements) {
! outlet_list(x->x_obj.ob_outlet,0,x->x_count,x->x_abuf);
! x->x_count = 0;
! }
! }
!
!
! static void *unserialize_new(t_floatarg f)
! {
! t_unserialize *x = (t_unserialize *)pd_new(unserialize_class);
! outlet_new(&x->x_obj,&s_float);
! x->x_elements = f;
! x->x_count=0;
! if ((f <= 0) || (f > MAX_ELEMENTS)) x->x_elements = 1;
! return (x);
! }
!
!
!
! void unserialize_setup(void)
! {
! unserialize_class = class_new(gensym("unserialize"), (t_newmethod)unserialize_new,
! 0,sizeof(t_unserialize),0, A_DEFFLOAT,0);
! class_addfloat(unserialize_class,unserialize_float);
! }
!
!
--- 1,57 ----
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
! #ifdef _MSC_VER
! #pragma warning( disable : 4244 )
! #pragma warning( disable : 4305 )
! #endif
!
! /* ------------------------ unserialize ----------------------------- */
!
! #define MAX_ELEMENTS 256
!
! static t_class *unserialize_class;
!
!
! typedef struct _unserialize
! {
! t_object x_obj;
! t_atom x_abuf[MAX_ELEMENTS];
! t_int x_count;
! t_int x_elements;
! } t_unserialize;
!
!
! void unserialize_float(t_unserialize *x,t_floatarg f)
! {
! SETFLOAT(&x->x_abuf[x->x_count],f);
! x->x_count++;
!
! if (x->x_count == x->x_elements) {
! outlet_list(x->x_obj.ob_outlet,0,x->x_count,x->x_abuf);
! x->x_count = 0;
! }
! }
!
!
! static void *unserialize_new(t_floatarg f)
! {
! t_unserialize *x = (t_unserialize *)pd_new(unserialize_class);
! outlet_new(&x->x_obj,&s_float);
! x->x_elements = f;
! x->x_count=0;
! if ((f <= 0) || (f > MAX_ELEMENTS)) x->x_elements = 1;
! return (x);
! }
!
!
!
! void unserialize_setup(void)
! {
! unserialize_class = class_new(gensym("unserialize"), (t_newmethod)unserialize_new,
! 0,sizeof(t_unserialize),0, A_DEFFLOAT,0);
! class_addfloat(unserialize_class,unserialize_float);
! }
!
!
Index: shell.c
===================================================================
RCS file: /cvsroot/pure-data/externals/ggee/control/shell.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** shell.c 7 Oct 2004 09:49:59 -0000 1.8
--- shell.c 14 Nov 2005 21:59:08 -0000 1.9
***************
*** 1,312 ****
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
! #include <m_pd.h>
! #ifdef NT
! #pragma warning( disable : 4244 )
! #pragma warning( disable : 4305 )
! #endif
!
! #include <unistd.h>
! #include <stdlib.h>
! #include <string.h>
! #include <stdio.h>
! #include <sys/types.h>
! #include <sys/wait.h>
! #include <signal.h>
! #include <sched.h>
!
! void sys_rmpollfn(int fd);
! void sys_addpollfn(int fd, void* fn, void *ptr);
!
! /* ------------------------ shell ----------------------------- */
!
! #define INBUFSIZE 1024
!
! static t_class *shell_class;
!
!
! static void drop_priority(void)
! {
! #ifdef _POSIX_PRIORITY_SCHEDULING
! struct sched_param par;
! int p1 ,p2, p3;
! par.sched_priority = 0;
! sched_setscheduler(0,SCHED_OTHER,&par);
! #endif
! }
!
!
! typedef struct _shell
! {
! t_object x_obj;
! int x_echo;
! char *sr_inbuf;
! int sr_inhead;
! int sr_intail;
! void* x_binbuf;
! int fdpipe[2];
! int fdinpipe[2];
! int pid;
! int x_del;
! t_outlet* x_done;
! t_clock* x_clock;
! } t_shell;
!
! static int shell_pid;
!
!
! void shell_cleanup(t_shell* x)
! {
! sys_rmpollfn(x->fdpipe[0]);
!
! if (x->fdpipe[0]>0) close(x->fdpipe[0]);
! if (x->fdpipe[1]>0) close(x->fdpipe[1]);
! if (x->fdinpipe[0]>0) close(x->fdinpipe[0]);
! if (x->fdinpipe[1]>0) close(x->fdinpipe[1]);
!
! x->fdpipe[0] = -1;
! x->fdpipe[1] = -1;
! x->fdinpipe[0] = -1;
! x->fdinpipe[1] = -1;
! clock_unset(x->x_clock);
! }
!
! void shell_check(t_shell* x)
! {
! int ret;
! int status;
! ret = waitpid(x->pid,&status,WNOHANG);
! if (ret == x->pid) {
! shell_cleanup(x);
! if (WIFEXITED(status)) {
! outlet_float(x->x_done,WEXITSTATUS(status));
! }
! else outlet_float(x->x_done,0);
! }
! else {
! if (x->x_del < 100) x->x_del+=2; /* increment poll times */
! clock_delay(x->x_clock,x->x_del);
! }
! }
!
!
! void shell_bang(t_shell *x)
! {
! post("bang");
! }
!
! /* snippet from pd's code */
! static void shell_doit(void *z, t_binbuf *b)
! {
! t_shell *x = (t_shell *)z;
! int msg, natom = binbuf_getnatom(b);
! t_atom *at = binbuf_getvec(b);
!
! for (msg = 0; msg < natom;)
! {
! int emsg;
! for (emsg = msg; emsg < natom && at[emsg].a_type != A_COMMA
! && at[emsg].a_type != A_SEMI; emsg++)
! ;
! if (emsg > msg)
! {
! int i;
! for (i = msg; i < emsg; i++)
! if (at[i].a_type == A_DOLLAR || at[i].a_type == A_DOLLSYM)
! {
! pd_error(x, "netreceive: got dollar sign in message");
! goto nodice;
! }
! if (at[msg].a_type == A_FLOAT)
! {
! if (emsg > msg + 1)
! outlet_list(x->x_obj.ob_outlet, 0, emsg-msg, at + msg);
! else outlet_float(x->x_obj.ob_outlet, at[msg].a_w.w_float);
! }
! else if (at[msg].a_type == A_SYMBOL)
! outlet_anything(x->x_obj.ob_outlet, at[msg].a_w.w_symbol,
! emsg-msg-1, at + msg + 1);
! }
! nodice:
! msg = emsg + 1;
! }
! }
!
!
! void shell_read(t_shell *x, int fd)
! {
! char buf[INBUFSIZE];
! t_binbuf* bbuf = binbuf_new();
! int i;
! int readto =
! (x->sr_inhead >= x->sr_intail ? INBUFSIZE : x->sr_intail-1);
! int ret;
!
! ret = read(fd, buf,INBUFSIZE-1);
! buf[ret] = '\0';
!
! for (i=0;i<ret;i++)
! if (buf[i] == '\n') buf[i] = ';';
! if (ret < 0)
! {
! error("shell: pipe read error");
! sys_rmpollfn(fd);
! x->fdpipe[0] = -1;
! close(fd);
! return;
! }
! else if (ret == 0)
! {
! post("EOF on socket %d\n", fd);
! sys_rmpollfn(fd);
! x->fdpipe[0] = -1;
! close(fd);
! return;
! }
! else
! {
! int natom;
! t_atom *at;
! binbuf_text(bbuf, buf, strlen(buf));
!
! natom = binbuf_getnatom(bbuf);
! at = binbuf_getvec(bbuf);
! shell_doit(x,bbuf);
! }
! binbuf_free(bbuf);
! }
!
!
! static void shell_send(t_shell *x, t_symbol *s,int ac, t_atom *at)
! {
! int i;
! char tmp[MAXPDSTRING];
! int size = 0;
!
! if (x->fdinpipe[0] == -1) return; /* nothing to send to */
!
! for (i=0;i<ac;i++) {
! atom_string(at,tmp+size,MAXPDSTRING - size);
! at++;
! size=strlen(tmp);
! tmp[size++] = ' ';
! }
! tmp[size-1] = '\0';
! post("sending %s",tmp);
! write(x->fdinpipe[0],tmp,strlen(tmp));
! }
!
! static void shell_anything(t_shell *x, t_symbol *s, int ac, t_atom *at)
! {
! int i;
! char* argv[20];
! t_symbol* sym;
!
! if (!strcmp(s->s_name,"send")) {
! post("send");
! shell_send(x,s,ac,at);
! return;
! }
!
! argv[0] = s->s_name;
!
! if (x->fdpipe[0] != -1) {
! post("shell: old process still running");
! kill(x->pid,SIGKILL);
! shell_cleanup(x);
! }
!
!
! if (pipe(x->fdpipe) < 0) {
! error("unable to create pipe");
! return;
! }
!
! if (pipe(x->fdinpipe) < 0) {
! error("unable to create input pipe");
! return;
! }
!
!
! sys_addpollfn(x->fdpipe[0],shell_read,x);
!
! if (!(x->pid = fork())) {
! int status;
! char* cmd = getbytes(1024);
! char* tcmd = getbytes(1024);
! strcpy(cmd,s->s_name);
!
! #if 0
! for (i=1;i<=ac;i++) {
! argv[i] = getbytes(255);
! atom_string(at,argv[i],255);
! /* post("argument %s",argv[i]); */
! at++;
! }
! argv[i] = 0;
! #endif
! for (i=1;i<=ac;i++) {
! atom_string(at,tcmd,255);
! strcat(cmd," ");
! strcat(cmd,tcmd);
! at++;
! }
!
!
! /* reassign stdout */
! dup2(x->fdpipe[1],1);
! dup2(x->fdinpipe[1],0);
!
! /* drop privileges */
! drop_priority();
! seteuid(getuid()); /* lose setuid priveliges */
!
! post("executing %s",cmd);
! system(cmd);
! // execvp(s->s_name,argv);
! exit(0);
! }
! x->x_del = 4;
! clock_delay(x->x_clock,x->x_del);
!
! if (x->x_echo)
! outlet_anything(x->x_obj.ob_outlet, s, ac, at);
! }
!
!
!
! void shell_free(t_shell* x)
! {
! binbuf_free(x->x_binbuf);
! }
!
! static void *shell_new(void)
! {
! t_shell *x = (t_shell *)pd_new(shell_class);
!
! x->x_echo = 0;
! x->fdpipe[0] = -1;
! x->fdpipe[1] = -1;
! x->fdinpipe[0] = -1;
! x->fdinpipe[1] = -1;
!
! x->sr_inhead = x->sr_intail = 0;
! if (!(x->sr_inbuf = (char*) malloc(INBUFSIZE))) bug("t_shell");;
!
! x->x_binbuf = binbuf_new();
!
! outlet_new(&x->x_obj, &s_list);
! x->x_done = outlet_new(&x->x_obj, &s_bang);
! x->x_clock = clock_new(x, (t_method) shell_check);
! return (x);
! }
!
! void shell_setup(void)
! {
! shell_class = class_new(gensym("shell"), (t_newmethod)shell_new,
! (t_method)shell_free,sizeof(t_shell), 0,0);
! class_addbang(shell_class,shell_bang);
! class_addanything(shell_class, shell_anything);
! }
!
!
--- 1,312 ----
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
! #include <m_pd.h>
! #ifdef _MSC_VER
! #pragma warning( disable : 4244 )
! #pragma warning( disable : 4305 )
! #endif
!
! #include <unistd.h>
! #include <stdlib.h>
! #include <string.h>
! #include <stdio.h>
! #include <sys/types.h>
! #include <sys/wait.h>
! #include <signal.h>
! #include <sched.h>
!
! void sys_rmpollfn(int fd);
! void sys_addpollfn(int fd, void* fn, void *ptr);
!
! /* ------------------------ shell ----------------------------- */
!
! #define INBUFSIZE 1024
!
! static t_class *shell_class;
!
!
! static void drop_priority(void)
! {
! #ifdef _POSIX_PRIORITY_SCHEDULING
! struct sched_param par;
! int p1 ,p2, p3;
! par.sched_priority = 0;
! sched_setscheduler(0,SCHED_OTHER,&par);
! #endif
! }
!
!
! typedef struct _shell
! {
! t_object x_obj;
! int x_echo;
! char *sr_inbuf;
! int sr_inhead;
! int sr_intail;
! void* x_binbuf;
! int fdpipe[2];
! int fdinpipe[2];
! int pid;
! int x_del;
! t_outlet* x_done;
! t_clock* x_clock;
! } t_shell;
!
! static int shell_pid;
!
!
! void shell_cleanup(t_shell* x)
! {
! sys_rmpollfn(x->fdpipe[0]);
!
! if (x->fdpipe[0]>0) close(x->fdpipe[0]);
! if (x->fdpipe[1]>0) close(x->fdpipe[1]);
! if (x->fdinpipe[0]>0) close(x->fdinpipe[0]);
! if (x->fdinpipe[1]>0) close(x->fdinpipe[1]);
!
! x->fdpipe[0] = -1;
! x->fdpipe[1] = -1;
! x->fdinpipe[0] = -1;
! x->fdinpipe[1] = -1;
! clock_unset(x->x_clock);
! }
!
! void shell_check(t_shell* x)
! {
! int ret;
! int status;
! ret = waitpid(x->pid,&status,WNOHANG);
! if (ret == x->pid) {
! shell_cleanup(x);
! if (WIFEXITED(status)) {
! outlet_float(x->x_done,WEXITSTATUS(status));
! }
! else outlet_float(x->x_done,0);
! }
! else {
! if (x->x_del < 100) x->x_del+=2; /* increment poll times */
! clock_delay(x->x_clock,x->x_del);
! }
! }
!
!
! void shell_bang(t_shell *x)
! {
! post("bang");
! }
!
! /* snippet from pd's code */
! static void shell_doit(void *z, t_binbuf *b)
! {
! t_shell *x = (t_shell *)z;
! int msg, natom = binbuf_getnatom(b);
! t_atom *at = binbuf_getvec(b);
!
! for (msg = 0; msg < natom;)
! {
! int emsg;
! for (emsg = msg; emsg < natom && at[emsg].a_type != A_COMMA
! && at[emsg].a_type != A_SEMI; emsg++)
! ;
! if (emsg > msg)
! {
! int i;
! for (i = msg; i < emsg; i++)
! if (at[i].a_type == A_DOLLAR || at[i].a_type == A_DOLLSYM)
! {
! pd_error(x, "netreceive: got dollar sign in message");
! goto nodice;
! }
! if (at[msg].a_type == A_FLOAT)
! {
! if (emsg > msg + 1)
! outlet_list(x->x_obj.ob_outlet, 0, emsg-msg, at + msg);
! else outlet_float(x->x_obj.ob_outlet, at[msg].a_w.w_float);
! }
! else if (at[msg].a_type == A_SYMBOL)
! outlet_anything(x->x_obj.ob_outlet, at[msg].a_w.w_symbol,
! emsg-msg-1, at + msg + 1);
! }
! nodice:
! msg = emsg + 1;
! }
! }
!
!
! void shell_read(t_shell *x, int fd)
! {
! char buf[INBUFSIZE];
! t_binbuf* bbuf = binbuf_new();
! int i;
! int readto =
! (x->sr_inhead >= x->sr_intail ? INBUFSIZE : x->sr_intail-1);
! int ret;
!
! ret = read(fd, buf,INBUFSIZE-1);
! buf[ret] = '\0';
!
! for (i=0;i<ret;i++)
! if (buf[i] == '\n') buf[i] = ';';
! if (ret < 0)
! {
! error("shell: pipe read error");
! sys_rmpollfn(fd);
! x->fdpipe[0] = -1;
! close(fd);
! return;
! }
! else if (ret == 0)
! {
! post("EOF on socket %d\n", fd);
! sys_rmpollfn(fd);
! x->fdpipe[0] = -1;
! close(fd);
! return;
! }
! else
! {
! int natom;
! t_atom *at;
! binbuf_text(bbuf, buf, strlen(buf));
!
! natom = binbuf_getnatom(bbuf);
! at = binbuf_getvec(bbuf);
! shell_doit(x,bbuf);
! }
! binbuf_free(bbuf);
! }
!
!
! static void shell_send(t_shell *x, t_symbol *s,int ac, t_atom *at)
! {
! int i;
! char tmp[MAXPDSTRING];
! int size = 0;
!
! if (x->fdinpipe[0] == -1) return; /* nothing to send to */
!
! for (i=0;i<ac;i++) {
! atom_string(at,tmp+size,MAXPDSTRING - size);
! at++;
! size=strlen(tmp);
! tmp[size++] = ' ';
! }
! tmp[size-1] = '\0';
! post("sending %s",tmp);
! write(x->fdinpipe[0],tmp,strlen(tmp));
! }
!
! static void shell_anything(t_shell *x, t_symbol *s, int ac, t_atom *at)
! {
! int i;
! char* argv[20];
! t_symbol* sym;
!
! if (!strcmp(s->s_name,"send")) {
! post("send");
! shell_send(x,s,ac,at);
! return;
! }
!
! argv[0] = s->s_name;
!
! if (x->fdpipe[0] != -1) {
! post("shell: old process still running");
! kill(x->pid,SIGKILL);
! shell_cleanup(x);
! }
!
!
! if (pipe(x->fdpipe) < 0) {
! error("unable to create pipe");
! return;
! }
!
! if (pipe(x->fdinpipe) < 0) {
! error("unable to create input pipe");
! return;
! }
!
!
! sys_addpollfn(x->fdpipe[0],shell_read,x);
!
! if (!(x->pid = fork())) {
! int status;
! char* cmd = getbytes(1024);
! char* tcmd = getbytes(1024);
! strcpy(cmd,s->s_name);
!
! #if 0
! for (i=1;i<=ac;i++) {
! argv[i] = getbytes(255);
! atom_string(at,argv[i],255);
! /* post("argument %s",argv[i]); */
! at++;
! }
! argv[i] = 0;
! #endif
! for (i=1;i<=ac;i++) {
! atom_string(at,tcmd,255);
! strcat(cmd," ");
! strcat(cmd,tcmd);
! at++;
! }
!
!
! /* reassign stdout */
! dup2(x->fdpipe[1],1);
! dup2(x->fdinpipe[1],0);
!
! /* drop privileges */
! drop_priority();
! seteuid(getuid()); /* lose setuid priveliges */
!
! post("executing %s",cmd);
! system(cmd);
! // execvp(s->s_name,argv);
! exit(0);
! }
! x->x_del = 4;
! clock_delay(x->x_clock,x->x_del);
!
! if (x->x_echo)
! outlet_anything(x->x_obj.ob_outlet, s, ac, at);
! }
!
!
!
! void shell_free(t_shell* x)
! {
! binbuf_free(x->x_binbuf);
! }
!
! static void *shell_new(void)
! {
! t_shell *x = (t_shell *)pd_new(shell_class);
!
! x->x_echo = 0;
! x->fdpipe[0] = -1;
! x->fdpipe[1] = -1;
! x->fdinpipe[0] = -1;
! x->fdinpipe[1] = -1;
!
! x->sr_inhead = x->sr_intail = 0;
! if (!(x->sr_inbuf = (char*) malloc(INBUFSIZE))) bug("t_shell");;
!
! x->x_binbuf = binbuf_new();
!
! outlet_new(&x->x_obj, &s_list);
! x->x_done = outlet_new(&x->x_obj, &s_bang);
! x->x_clock = clock_new(x, (t_method) shell_check);
! return (x);
! }
!
! void shell_setup(void)
! {
! shell_class = class_new(gensym("shell"), (t_newmethod)shell_new,
! (t_method)shell_free,sizeof(t_shell), 0,0);
! class_addbang(shell_class,shell_bang);
! class_addanything(shell_class, shell_anything);
! }
!
!
Index: serial_mt.c
===================================================================
RCS file: /cvsroot/pure-data/externals/ggee/control/serial_mt.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** serial_mt.c 17 Jun 2002 10:13:53 -0000 1.1.1.1
--- serial_mt.c 14 Nov 2005 21:59:08 -0000 1.2
***************
*** 1,77 ****
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
!
!
! static t_class *serial_mt_class;
!
!
! typedef struct _serial_mt
! {
! t_object x_obj;
! char x_c[4];
! t_int x_count;
! t_int x_posx;
! t_int x_posy;
! t_outlet *x_out2;
! } t_serial_mt;
!
!
! static void serial_mt_reset( t_serial_mt* x)
! {
! x->x_posx=0;
! x->x_posy=0;
! x->x_count = 0;
! }
!
! static void serial_mt_float( t_serial_mt* x,t_floatarg f)
! {
! int dx,dy;
!
! x->x_c[x->x_count] = (char) f;
!
! x->x_count = (++x->x_count)%3;
!
! if (x->x_count==2) {
! dx= (signed char)(((x->x_c[0] & 0x03) << 6) |
! (x->x_c[1] & 0x3F));
! dy= (signed char)(((x->x_c[0] & 0x0C) << 4) |
! (x->x_c[2] & 0x3F));
! x->x_posx += dx;
! x->x_posy += dy;
! /* post("posx %d, posy %d",x->x_posx,x->x_posy); */
! outlet_float(x->x_obj.ob_outlet, x->x_posx);
! outlet_float(x->x_out2, x->x_posy);
! }
!
!
! }
!
!
! static void *serial_mt_new(t_symbol *s)
! {
! t_serial_mt *x = (t_serial_mt *)pd_new(serial_mt_class);
!
! x->x_count = 0;
! x->x_posx = 0;
! x->x_posy = 0;
!
!
! outlet_new(&x->x_obj, &s_float);
! x->x_out2 = outlet_new(&x->x_obj, &s_float);
!
! return x;
! }
!
!
! void serial_mt_setup(void)
! {
! serial_mt_class = class_new(gensym("serial_mt"), (t_newmethod)serial_mt_new,
! NULL,
! sizeof(t_serial_mt), 0,A_DEFSYM,0);
! class_addfloat(serial_mt_class,serial_mt_float);
! class_addmethod(serial_mt_class,(t_method) serial_mt_reset,gensym("reset"),0);
! }
!
!
--- 1,77 ----
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
!
!
! static t_class *serial_mt_class;
!
!
! typedef struct _serial_mt
! {
! t_object x_obj;
! char x_c[4];
! t_int x_count;
! t_int x_posx;
! t_int x_posy;
! t_outlet *x_out2;
! } t_serial_mt;
!
!
! static void serial_mt_reset( t_serial_mt* x)
! {
! x->x_posx=0;
! x->x_posy=0;
! x->x_count = 0;
! }
!
! static void serial_mt_float( t_serial_mt* x,t_floatarg f)
! {
! int dx,dy;
!
! x->x_c[x->x_count] = (char) f;
!
! x->x_count = (++x->x_count)%3;
!
! if (x->x_count==2) {
! dx= (signed char)(((x->x_c[0] & 0x03) << 6) |
! (x->x_c[1] & 0x3F));
! dy= (signed char)(((x->x_c[0] & 0x0C) << 4) |
! (x->x_c[2] & 0x3F));
! x->x_posx += dx;
! x->x_posy += dy;
! /* post("posx %d, posy %d",x->x_posx,x->x_posy); */
! outlet_float(x->x_obj.ob_outlet, x->x_posx);
! outlet_float(x->x_out2, x->x_posy);
! }
!
!
! }
!
!
! static void *serial_mt_new(t_symbol *s)
! {
! t_serial_mt *x = (t_serial_mt *)pd_new(serial_mt_class);
!
! x->x_count = 0;
! x->x_posx = 0;
! x->x_posy = 0;
!
!
! outlet_new(&x->x_obj, &s_float);
! x->x_out2 = outlet_new(&x->x_obj, &s_float);
!
! return x;
! }
!
!
! void serial_mt_setup(void)
! {
! serial_mt_class = class_new(gensym("serial_mt"), (t_newmethod)serial_mt_new,
! NULL,
! sizeof(t_serial_mt), 0,A_DEFSYM,0);
! class_addfloat(serial_mt_class,serial_mt_float);
! class_addmethod(serial_mt_class,(t_method) serial_mt_reset,gensym("reset"),0);
! }
!
!
Index: sl.c
===================================================================
RCS file: /cvsroot/pure-data/externals/ggee/control/sl.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** sl.c 6 Apr 2003 20:44:07 -0000 1.3
--- sl.c 14 Nov 2005 21:59:08 -0000 1.4
***************
*** 1,74 ****
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
! #include <stdio.h>
! #ifdef NT
! #pragma warning( disable : 4244 )
! #pragma warning( disable : 4305 )
! #endif
!
!
! /* -------------------- lsend ------------------------------ */
!
! static t_class *lsend_class;
!
! typedef struct _lsend
! {
! t_object x_obj;
! t_symbol *x_sym;
! } t_lsend;
!
! static void lsend_bang(t_lsend *x)
! {
! if (x->x_sym->s_thing) pd_bang(x->x_sym->s_thing);
! }
!
! static void lsend_float(t_lsend *x, t_float f)
! {
! if (x->x_sym->s_thing) pd_float(x->x_sym->s_thing, f);
! }
!
! static void lsend_symbol(t_lsend *x, t_symbol *s)
! {
! if (x->x_sym->s_thing) pd_symbol(x->x_sym->s_thing, s);
! }
!
! static void lsend_pointer(t_lsend *x, t_gpointer *gp)
! {
! if (x->x_sym->s_thing) pd_pointer(x->x_sym->s_thing, gp);
! }
!
! static void lsend_list(t_lsend *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 lsend_anything(t_lsend *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 *lsend_new(t_symbol *s)
! {
! t_lsend *x = (t_lsend *)pd_new(lsend_class);
! char mysym[MAXPDSTRING];
!
! sprintf(mysym,"%s%p",s->s_name,canvas_getcurrent());
! x->x_sym = gensym(mysym);
! return (x);
! }
!
! void sl_setup(void)
! {
! lsend_class = class_new(gensym("sendlocal"), (t_newmethod)lsend_new, 0,
! sizeof(t_lsend), 0, A_DEFSYM, 0);
! class_addcreator((t_newmethod)lsend_new, gensym("sl"), A_DEFSYM, 0);
! class_addbang(lsend_class, lsend_bang);
! class_addfloat(lsend_class, lsend_float);
! class_addsymbol(lsend_class, lsend_symbol);
! class_addpointer(lsend_class, lsend_pointer);
! class_addlist(lsend_class, lsend_list);
! class_addanything(lsend_class, lsend_anything);
! post("Warning: sendlocal (sl) is deprecated, please use \"send $0-var\" instead");
! }
--- 1,74 ----
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
! #include <stdio.h>
! #ifdef _MSC_VER
! #pragma warning( disable : 4244 )
! #pragma warning( disable : 4305 )
! #endif
!
!
! /* -------------------- lsend ------------------------------ */
!
! static t_class *lsend_class;
!
! typedef struct _lsend
! {
! t_object x_obj;
! t_symbol *x_sym;
! } t_lsend;
!
! static void lsend_bang(t_lsend *x)
! {
! if (x->x_sym->s_thing) pd_bang(x->x_sym->s_thing);
! }
!
! static void lsend_float(t_lsend *x, t_float f)
! {
! if (x->x_sym->s_thing) pd_float(x->x_sym->s_thing, f);
! }
!
! static void lsend_symbol(t_lsend *x, t_symbol *s)
! {
! if (x->x_sym->s_thing) pd_symbol(x->x_sym->s_thing, s);
! }
!
! static void lsend_pointer(t_lsend *x, t_gpointer *gp)
! {
! if (x->x_sym->s_thing) pd_pointer(x->x_sym->s_thing, gp);
! }
!
! static void lsend_list(t_lsend *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 lsend_anything(t_lsend *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 *lsend_new(t_symbol *s)
! {
! t_lsend *x = (t_lsend *)pd_new(lsend_class);
! char mysym[MAXPDSTRING];
!
! sprintf(mysym,"%s%p",s->s_name,canvas_getcurrent());
! x->x_sym = gensym(mysym);
! return (x);
! }
!
! void sl_setup(void)
! {
! lsend_class = class_new(gensym("sendlocal"), (t_newmethod)lsend_new, 0,
! sizeof(t_lsend), 0, A_DEFSYM, 0);
! class_addcreator((t_newmethod)lsend_new, gensym("sl"), A_DEFSYM, 0);
! class_addbang(lsend_class, lsend_bang);
! class_addfloat(lsend_class, lsend_float);
! class_addsymbol(lsend_class, lsend_symbol);
! class_addpointer(lsend_class, lsend_pointer);
! class_addlist(lsend_class, lsend_list);
! class_addanything(lsend_class, lsend_anything);
! post("Warning: sendlocal (sl) is deprecated, please use \"send $0-var\" instead");
! }
Index: unwonk.c
===================================================================
RCS file: /cvsroot/pure-data/externals/ggee/control/unwonk.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** unwonk.c 17 Jun 2002 10:13:53 -0000 1.1.1.1
--- unwonk.c 14 Nov 2005 21:59:08 -0000 1.2
***************
*** 1,119 ****
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
!
!
! /* -------------------------- unwonk ------------------------------ */
!
! static t_class *unwonk_class;
!
! typedef struct unwonkout
! {
! t_atomtype u_type;
! t_outlet *u_outlet;
! } t_unwonkout;
!
! typedef struct _unwonk
! {
! t_object x_obj;
! t_int x_n;
! t_unwonkout *x_vec;
! } t_unwonk;
!
! static void *unwonk_new(t_symbol *s, int argc, t_atom *argv)
! {
! t_unwonk *x = (t_unwonk *)pd_new(unwonk_class);
! t_atom defarg[2], *ap;
! t_unwonkout *u;
! int i;
! if (!argc)
! {
! argv = defarg;
! argc = 2;
! SETFLOAT(&defarg[0], 0);
! SETFLOAT(&defarg[1], 0);
! }
!
! x->x_n = argc + 1;
! x->x_vec = (t_unwonkout *)getbytes(x->x_n * sizeof(*x->x_vec));
!
! for (i = 0, ap = argv, u = x->x_vec; i < argc; u++, ap++, i++)
! {
! t_atomtype type = ap->a_type;
! if (type == A_SYMBOL)
! {
! char c = *ap->a_w.w_symbol->s_name;
! if (c == 's')
! {
! u->u_type = A_SYMBOL;
! u->u_outlet = outlet_new(&x->x_obj, &s_symbol);
! }
! else if (c == 'p')
! {
! u->u_type = A_POINTER;
! u->u_outlet = outlet_new(&x->x_obj, &s_pointer);
! }
! else
! {
! if (c != 'f') error("unwonk: %s: bad type",
! ap->a_w.w_symbol->s_name);
! u->u_type = A_FLOAT;
! u->u_outlet = outlet_new(&x->x_obj, &s_float);
! }
! }
! else
! {
! u->u_type = A_FLOAT;
! u->u_outlet = outlet_new(&x->x_obj, &s_float);
! }
! }
!
! u->u_type = A_GIMME;
! u->u_outlet = outlet_new(&x->x_obj, &s_list);
!
! return (x);
! }
!
! static void unwonk_list(t_unwonk *x, t_symbol *s, int argc, t_atom *argv)
! {
! t_atom *ap;
! t_unwonkout *u;
! int i;
! int margc = argc;
!
!
! if (argc > x->x_n - 1) margc = x->x_n - 1;
!
! if (argc - margc > 0) {
! ap = argv + margc;
! u = x->x_vec + margc;
! outlet_list(u->u_outlet,0,argc - margc, ap);
! }
!
! for (i = margc, u = x->x_vec + i, ap = argv + i; u--, ap--, i--;)
! {
! t_atomtype type = u->u_type;
! if (type != ap->a_type)
! error("unwonk: type mismatch");
! else if (type == A_FLOAT)
! outlet_float(u->u_outlet, ap->a_w.w_float);
! else if (type == A_SYMBOL)
! outlet_symbol(u->u_outlet, ap->a_w.w_symbol);
! else outlet_pointer(u->u_outlet, ap->a_w.w_gpointer);
! }
!
!
! }
!
! static void unwonk_free(t_unwonk *x)
! {
! freebytes(x->x_vec, x->x_n * sizeof(*x->x_vec));
! }
!
! void unwonk_setup(void)
! {
! unwonk_class = class_new(gensym("unwonk"), (t_newmethod)unwonk_new,
! (t_method)unwonk_free, sizeof(t_unwonk), 0, A_GIMME, 0);
! class_addlist(unwonk_class, unwonk_list);
! }
--- 1,119 ----
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
!
!
! /* -------------------------- unwonk ------------------------------ */
!
! static t_class *unwonk_class;
!
! typedef struct unwonkout
! {
! t_atomtype u_type;
! t_outlet *u_outlet;
! } t_unwonkout;
!
! typedef struct _unwonk
! {
! t_object x_obj;
! t_int x_n;
! t_unwonkout *x_vec;
! } t_unwonk;
!
! static void *unwonk_new(t_symbol *s, int argc, t_atom *argv)
! {
! t_unwonk *x = (t_unwonk *)pd_new(unwonk_class);
! t_atom defarg[2], *ap;
! t_unwonkout *u;
! int i;
! if (!argc)
! {
! argv = defarg;
! argc = 2;
! SETFLOAT(&defarg[0], 0);
! SETFLOAT(&defarg[1], 0);
! }
!
! x->x_n = argc + 1;
! x->x_vec = (t_unwonkout *)getbytes(x->x_n * sizeof(*x->x_vec));
!
! for (i = 0, ap = argv, u = x->x_vec; i < argc; u++, ap++, i++)
! {
! t_atomtype type = ap->a_type;
! if (type == A_SYMBOL)
! {
! char c = *ap->a_w.w_symbol->s_name;
! if (c == 's')
! {
! u->u_type = A_SYMBOL;
! u->u_outlet = outlet_new(&x->x_obj, &s_symbol);
! }
! else if (c == 'p')
! {
! u->u_type = A_POINTER;
! u->u_outlet = outlet_new(&x->x_obj, &s_pointer);
! }
! else
! {
! if (c != 'f') error("unwonk: %s: bad type",
! ap->a_w.w_symbol->s_name);
! u->u_type = A_FLOAT;
! u->u_outlet = outlet_new(&x->x_obj, &s_float);
! }
! }
! else
! {
! u->u_type = A_FLOAT;
! u->u_outlet = outlet_new(&x->x_obj, &s_float);
! }
! }
!
! u->u_type = A_GIMME;
! u->u_outlet = outlet_new(&x->x_obj, &s_list);
!
! return (x);
! }
!
! static void unwonk_list(t_unwonk *x, t_symbol *s, int argc, t_atom *argv)
! {
! t_atom *ap;
! t_unwonkout *u;
! int i;
! int margc = argc;
!
!
! if (argc > x->x_n - 1) margc = x->x_n - 1;
!
! if (argc - margc > 0) {
! ap = argv + margc;
! u = x->x_vec + margc;
! outlet_list(u->u_outlet,0,argc - margc, ap);
! }
!
! for (i = margc, u = x->x_vec + i, ap = argv + i; u--, ap--, i--;)
! {
! t_atomtype type = u->u_type;
! if (type != ap->a_type)
! error("unwonk: type mismatch");
! else if (type == A_FLOAT)
! outlet_float(u->u_outlet, ap->a_w.w_float);
! else if (type == A_SYMBOL)
! outlet_symbol(u->u_outlet, ap->a_w.w_symbol);
! else outlet_pointer(u->u_outlet, ap->a_w.w_gpointer);
! }
!
!
! }
!
! static void unwonk_free(t_unwonk *x)
! {
! freebytes(x->x_vec, x->x_n * sizeof(*x->x_vec));
! }
!
! void unwonk_setup(void)
! {
! unwonk_class = class_new(gensym("unwonk"), (t_newmethod)unwonk_new,
! (t_method)unwonk_free, sizeof(t_unwonk), 0, A_GIMME, 0);
! class_addlist(unwonk_class, unwonk_list);
! }
Index: rtout.c
===================================================================
RCS file: /cvsroot/pure-data/externals/ggee/control/rtout.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** rtout.c 17 Jun 2002 10:13:53 -0000 1.1.1.1
--- rtout.c 14 Nov 2005 21:59:08 -0000 1.2
***************
*** 1,41 ****
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
!
! /* -------------------------- rtout -------------------------- */
!
! void sys_putmidimess(int portno, int a, int b, int c);
!
! static t_class *rtout_class;
!
!
!
! typedef struct _rtout
! {
! t_object x_obj;
! t_float x_rt;
! t_float x_channel;
! } t_rtout;
!
! static void *rtout_new(t_floatarg channel)
! {
! t_rtout *x = (t_rtout *)pd_new(rtout_class);
! if (channel <= 0) channel = 1;
! x->x_channel = channel;
! return (x);
! }
!
! static void rtout_float(t_rtout *x, t_float f)
! {
! int binchan = (int) x->x_channel - 1;
! sys_putmidimess((binchan>>4),(int) f,0,0);
! }
!
! void rtout_setup(void)
! {
! rtout_class = class_new(gensym("rtout"), (t_newmethod)rtout_new, 0,
! sizeof(t_rtout), 0, A_DEFFLOAT, A_DEFFLOAT, 0);
! class_addfloat(rtout_class, rtout_float);
! }
!
--- 1,41 ----
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
!
! /* -------------------------- rtout -------------------------- */
!
! void sys_putmidimess(int portno, int a, int b, int c);
!
! static t_class *rtout_class;
!
!
!
! typedef struct _rtout
! {
! t_object x_obj;
! t_float x_rt;
! t_float x_channel;
! } t_rtout;
!
! static void *rtout_new(t_floatarg channel)
! {
! t_rtout *x = (t_rtout *)pd_new(rtout_class);
! if (channel <= 0) channel = 1;
! x->x_channel = channel;
! return (x);
! }
!
! static void rtout_float(t_rtout *x, t_float f)
! {
! int binchan = (int) x->x_channel - 1;
! sys_putmidimess((binchan>>4),(int) f,0,0);
! }
!
! void rtout_setup(void)
! {
! rtout_class = class_new(gensym("rtout"), (t_newmethod)rtout_new, 0,
! sizeof(t_rtout), 0, A_DEFFLOAT, A_DEFFLOAT, 0);
! class_addfloat(rtout_class, rtout_float);
! }
!
Index: inv.c
===================================================================
RCS file: /cvsroot/pure-data/externals/ggee/control/inv.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** inv.c 25 Oct 2002 17:04:51 -0000 1.2
--- inv.c 14 Nov 2005 21:59:07 -0000 1.3
***************
*** 1,77 ****
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
! #include <m_pd.h>
!
!
! typedef struct inv
! {
! t_object x_obj;
! } t_inv;
!
! static t_class *inv_class;
!
! static void *inv_new(void)
! {
! t_inv *x = (t_inv *)pd_new(inv_class);
! outlet_new(&x->x_obj, gensym("signal"));
! return (x);
! }
!
! static t_int *inv_perform(t_int *w) /* not static; also used in d_fft.c */
! {
! float *in = *(t_float **)(w+1), *out = *(t_float **)(w+2);
! t_int n = *(t_int *)(w+3);
! while (n--)
! {
! *out++ = 1/ *in++;
! }
! return (w + 4);
! }
!
! static void inv_dsp(t_inv *x, t_signal **sp)
! {
! dsp_add(inv_perform, 3, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
! }
!
! void inv_tilde_setup(void)
! {
! inv_class = class_new(gensym("inv~"), (t_newmethod)inv_new, 0,
! sizeof(t_inv), 0, 0);
!
! class_addcreator(inv_new,gensym("1/x~"),0);
!
! class_addmethod(inv_class, nullfn, gensym("signal"), 0);
! class_addmethod(inv_class, (t_method)inv_dsp, gensym("dsp"), 0);
! }
!
!
!
!
! typedef struct scalarinv
! {
! t_object x_obj;
! } t_scalarinv;
!
! static t_class *scalarinv_class;
!
! static void *scalarinv_new(void)
! {
! t_scalarinv *x = (t_scalarinv *)pd_new(scalarinv_class);
! outlet_new(&x->x_obj, gensym("float"));
! return (x);
! }
!
! static void scalarinv_float(t_scalarinv *x,t_float val)
! {
! outlet_float(x->x_obj.ob_outlet,1.0f/val);
!
! }
!
! void inv_setup(void)
! {
! scalarinv_class = class_new(gensym("inv"), (t_newmethod)scalarinv_new, 0,
! sizeof(t_scalarinv), 0, 0);
! class_addcreator(scalarinv_new,gensym("1/x"),0);
!
! class_addfloat(scalarinv_class, (t_method)scalarinv_float);
! }
--- 1,77 ----
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
! #include <m_pd.h>
!
!
! typedef struct inv
! {
! t_object x_obj;
! } t_inv;
!
! static t_class *inv_class;
!
! static void *inv_new(void)
! {
! t_inv *x = (t_inv *)pd_new(inv_class);
! outlet_new(&x->x_obj, gensym("signal"));
! return (x);
! }
!
! static t_int *inv_perform(t_int *w) /* not static; also used in d_fft.c */
! {
! float *in = *(t_float **)(w+1), *out = *(t_float **)(w+2);
! t_int n = *(t_int *)(w+3);
! while (n--)
! {
! *out++ = 1/ *in++;
! }
! return (w + 4);
! }
!
! static void inv_dsp(t_inv *x, t_signal **sp)
! {
! dsp_add(inv_perform, 3, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n);
! }
!
! void inv_tilde_setup(void)
! {
! inv_class = class_new(gensym("inv~"), (t_newmethod)inv_new, 0,
! sizeof(t_inv), 0, 0);
!
! class_addcreator(inv_new,gensym("1/x~"),0);
!
! class_addmethod(inv_class, nullfn, gensym("signal"), 0);
! class_addmethod(inv_class, (t_method)inv_dsp, gensym("dsp"), 0);
! }
!
!
!
!
! typedef struct scalarinv
! {
! t_object x_obj;
! } t_scalarinv;
!
! static t_class *scalarinv_class;
!
! static void *scalarinv_new(void)
! {
! t_scalarinv *x = (t_scalarinv *)pd_new(scalarinv_class);
! outlet_new(&x->x_obj, gensym("float"));
! return (x);
! }
!
! static void scalarinv_float(t_scalarinv *x,t_float val)
! {
! outlet_float(x->x_obj.ob_outlet,1.0f/val);
!
! }
!
! void inv_setup(void)
! {
! scalarinv_class = class_new(gensym("inv"), (t_newmethod)scalarinv_new, 0,
! sizeof(t_scalarinv), 0, 0);
! class_addcreator(scalarinv_new,gensym("1/x"),0);
!
! class_addfloat(scalarinv_class, (t_method)scalarinv_float);
! }
Index: qread.c
===================================================================
RCS file: /cvsroot/pure-data/externals/ggee/control/qread.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** qread.c 15 Sep 2003 11:52:08 -0000 1.3
--- qread.c 14 Nov 2005 21:59:08 -0000 1.4
***************
*** 1,129 ****
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
!
! /* ------------------------ qread ----------------------------- */
!
! #include <stdio.h>
!
! static t_class *qread_class;
!
!
! #define MAXLINE 255
!
! typedef struct _qread
! {
! t_object x_obj;
! FILE* x_file;
! int x_size;
! t_clock* x_clock;
! t_glist * x_glist;
! int x_num;
! t_symbol* x_name;
! } t_qread;
!
!
!
! static void qread_open(t_qread *x,t_symbol *filename)
! {
! char fname[MAXPDSTRING];
!
! if (filename == &s_) {
! post("sfread: open without filename");
! return;
! }
!
! canvas_makefilename((void*)glist_getcanvas(x->x_glist), filename->s_name,
! fname, MAXPDSTRING);
!
!
! /* close the old file */
!
! if (x->x_file) fclose(x->x_file);
!
! if (!(x->x_file = fopen(fname,"r")))
! {
! error("can't open %s",fname);
! return;
! }
!
!
! }
!
! void qread_next(t_qread *x)
! {
! int i;
! float delay;
! char name[MAXLINE];
! t_atom at[20];
! int ac=0;
! t_floatarg ff;
!
! if (!x->x_file) return;
!
! fscanf(x->x_file,"%f",&delay);
! if (feof(x->x_file)) {
! clock_unset(x->x_clock);
! return;
! }
!
! fscanf(x->x_file,"%s",name);
! #ifdef DEBUG
! post("next: name = %s delay = %f",name,delay);
! #endif
!
! for (i=0;i<=x->x_num && !feof(x->x_file);i++) {
! fscanf(x->x_file,"%f",&ff);
! SETFLOAT(at+i,ff);
! }
! ac = i-1;
! fscanf(x->x_file,";");
!
!
! clock_delay(x->x_clock,delay);
!
! outlet_list(x->x_obj.ob_outlet, gensym(name), ac, at);
! }
!
! static void qread_bang(t_qread *x)
! {
! if (!x->x_file) return;
!
! fseek(x->x_file,0,SEEK_SET);
! clock_delay(x->x_clock,0);
!
! #ifdef DEBUG
! post("bang");
! #endif
! }
!
! static void qread_stop(t_qread *x)
! {
! clock_unset(x->x_clock);
! }
!
! static void *qread_new(t_floatarg n)
! {
! t_qread *x = (t_qread *)pd_new(qread_class);
! outlet_new(&x->x_obj, &s_float);
!
! x->x_name = gensym("qread");
! x->x_glist = (t_glist*) canvas_getcurrent();
! x->x_clock = clock_new(x, (t_method)qread_next);
! x->x_file = NULL;
! x->x_num = n;
! return (x);
! }
!
! void qread_setup(void)
! {
! qread_class = class_new(gensym("qread"), (t_newmethod)qread_new, 0,
! sizeof(t_qread), 0,A_DEFFLOAT,A_NULL);
! class_addbang(qread_class,qread_bang);
! class_addmethod(qread_class,(t_method)qread_next,gensym("next"),A_NULL);
! class_addmethod(qread_class,(t_method)qread_open,gensym("open"),A_SYMBOL,A_NULL);
! class_addmethod(qread_class,(t_method)qread_stop,gensym("stop"),A_NULL);
! }
!
!
--- 1,129 ----
! /* (C) Guenter Geiger <geiger(a)epy.co.at> */
!
!
! #include <m_pd.h>
!
! /* ------------------------ qread ----------------------------- */
!
! #include <stdio.h>
!
! static t_class *qread_class;
!
!
! #define MAXLINE 255
!
! typedef struct _qread
! {
! t_object x_obj;
! FILE* x_file;
! int x_size;
! t_clock* x_clock;
! t_glist * x_glist;
! int x_num;
! t_symbol* x_name;
! } t_qread;
!
!
!
! static void qread_open(t_qread *x,t_symbol *filename)
! {
! char fname[MAXPDSTRING];
!
! if (filename == &s_) {
! post("sfread: open without filename");
! return;
! }
!
! canvas_makefilename((void*)glist_getcanvas(x->x_glist), filename->s_name,
! fname, MAXPDSTRING);
!
!
! /* close the old file */
!
! if (x->x_file) fclose(x->x_file);
!
! if (!(x->x_file = fopen(fname,"r")))
! {
! error("can't open %s",fname);
! return;
! }
!
!
! }
!
! void qread_next(t_qread *x)
! {
! int i;
! float delay;
! char name[MAXLINE];
! t_atom at[20];
! int ac=0;
! t_floatarg ff;
!
! if (!x->x_file) return;
!
! fscanf(x->x_file,"%f",&delay);
! if (feof(x->x_file)) {
! clock_unset(x->x_clock);
! return;
! }
!
! fscanf(x->x_file,"%s",name);
! #ifdef DEBUG
! post("next: name = %s delay = %f",name,delay);
! #endif
!
! for (i=0;i<=x->x_num && !feof(x->x_file);i++) {
! fscanf(x->x_file,"%f",&ff);
! SETFLOAT(at+i,ff);
! }
! ac = i-1;
! fscanf(x->x_file,";");
!
!
! clock_delay(x->x_clock,delay);
!
! outlet_list(x->x_obj.ob_outlet, gensym(name), ac, at);
! }
!
! static void qread_bang(t_qread *x)
! {
! if (!x->x_file) return;
!
! fseek(x->x_file,0,SEEK_SET);
! clock_delay(x->x_clock,0);
!
! #ifdef DEBUG
! post("bang");
! #endif
! }
!
! static void qread_stop(t_qread *x)
! {
! clock_unset(x->x_clock);
! }
!
! static void *qread_new(t_floatarg n)
! {
! t_qread *x = (t_qread *)pd_new(qread_class);
! outlet_new(&x->x_obj, &s_float);
!
! x->x_name = gensym("qread");
! x->x_glist = (t_glist*) canvas_getcurrent();
! x->x_clock = clock_new(x, (t_method)qread_next);
! x->x_file = NULL;
! x->x_num = n;
! return (x);
! }
!
! void qread_setup(void)
! {
! qread_class = class_new(gensym("qread"), (t_newmethod)qread_new, 0,
! sizeof(t_qread), 0,A_DEFFLOAT,A_NULL);
! class_addbang(qread_class,qread_bang);
! class_addmethod(qread_class,(t_method)qread_next,gensym("next"),A_NULL);
! class_addmethod(qread_class,(t_method)qread_open,gensym("open"),A_SYMBOL,A_NULL);
! class_addmethod(qread_class,(t_method)qread_stop,gensym("stop"),A_NULL);
! }
!
!