diff options
Diffstat (limited to 'test/from_ascii_code.c')
-rw-r--r-- | test/from_ascii_code.c | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/test/from_ascii_code.c b/test/from_ascii_code.c deleted file mode 100644 index 31f5086..0000000 --- a/test/from_ascii_code.c +++ /dev/null @@ -1,111 +0,0 @@ -#include "m_pd.h" - -//static char* from_ascii_code_text; -// Common binbuf to all objects -static t_binbuf* from_ascii_code_binbuf; - -typedef struct _from_ascii_code -{ - - t_object x_ob; - int eof_is_set; - int eof; - t_outlet* outlet_left; - //t_outlet* outlet_right; - char* text; - int text_size; - int size; -} t_from_ascii_code; - -static t_class *from_ascii_code_class; - -// Force output even if eof has not been received -static void from_ascii_code_bang(t_from_ascii_code *x) { - - if ( x->size ) { - binbuf_clear(from_ascii_code_binbuf); - binbuf_text(from_ascii_code_binbuf, x->text, x->size); - t_atom *argv = binbuf_getvec(from_ascii_code_binbuf); - int argc = binbuf_getnatom(from_ascii_code_binbuf); - if ( argc) { - if ( (argv->a_type == A_SYMBOL) ) { - outlet_anything(x->outlet_left,atom_getsymbol(argv),argc-1,argv+1); - } else { - outlet_anything(x->outlet_left,&s_list,argc,argv); - } - } - x->size = 0; - } -} - - -static void from_ascii_code_float(t_from_ascii_code *x, t_float f) { - - if ( x->eof_is_set && f == x->eof ) { - from_ascii_code_bang(x); - } else if ( f > 31 && f < 127 ) { - x->text[x->size] = (char) f; - x->size = x->size + 1; - if ( x->size >= x->text_size ) { - - x->text = resizebytes(x->text, x->text_size * sizeof(*(x->text)), - (x->text_size + 100) * sizeof(*(x->text))); - x->text_size = x->text_size + 100; - } - } -} - -static void from_ascii_code_list(t_from_ascii_code *x, t_symbol *s, int argc, t_atom *argv) { - int i; - for ( i=0; i < argc; i++ ) { - if ( ((argv+i)->a_type == A_FLOAT) ) { - from_ascii_code_float(x,atom_getfloat(argv+i)); - } - } -} - -static void from_ascii_code_free(t_from_ascii_code *x) { - - freebytes(x->text,x->text_size*sizeof(*(x->text))); -} - -static void *from_ascii_code_new(t_symbol *s, int ac, t_atom *av) -{ - t_from_ascii_code *x = (t_from_ascii_code *)pd_new(from_ascii_code_class); - - // set eof if eof is set - if ( ac && ((av)->a_type == A_FLOAT)) { - x->eof = (int) atom_getfloat(av); - x->eof_is_set = 1; - } else { - x->eof_is_set = 0; - } - - // create string - x->text_size = 100; - x->text = getbytes(x->text_size*sizeof(*x->text)); - - x->size = 0; - - x->outlet_left = outlet_new(&x->x_ob, &s_list); - //x->outlet_right = outlet_new(&x->x_ob, &s_float); - - return (x); -} - -void from_ascii_code_setup(void) -{ - // create binbuf (no need to ever free) - from_ascii_code_binbuf = binbuf_new(); - - - - from_ascii_code_class = class_new(gensym("from_ascii_code"), - (t_newmethod)from_ascii_code_new, (t_method)from_ascii_code_free, - sizeof(t_from_ascii_code), 0, A_GIMME, 0); - - class_addbang(from_ascii_code_class, from_ascii_code_bang); - class_addfloat(from_ascii_code_class, from_ascii_code_float); - class_addlist(from_ascii_code_class, from_ascii_code_list); - - } |