diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/rawprint.c | 101 | ||||
-rw-r--r-- | src/z_zexy.c | 1 | ||||
-rw-r--r-- | src/z_zexy.h | 1 |
3 files changed, 103 insertions, 0 deletions
diff --git a/src/rawprint.c b/src/rawprint.c new file mode 100644 index 0000000..e523362 --- /dev/null +++ b/src/rawprint.c @@ -0,0 +1,101 @@ +/****************************************************** + * + * zexy - implementation file + * + * copyleft (c) IOhannes m zmölnig + * + * 1999:forum::für::umläute:2004 + * + * institute of electronic music and acoustics (iem) + * + ****************************************************** + * + * license: GNU General Public License v.2 + * + ******************************************************/ + +/* print the incoming message as raw as possible */ + +#include "zexy.h" +#include <stdio.h> + +static t_class *rawprint_class; + +typedef struct _rawprint { + t_object x_obj; + t_symbol*label; +} t_rawprint; + +static void rawprint_any(t_rawprint *x, t_symbol*s, int argc, t_atom*argv) +{ + char buf[MAXPDSTRING]; + if(x->label) { + startpost("%s: ", x->label->s_name); + } + startpost("\"%s\"", s->s_name); + while(argc--) { + switch(argv->a_type) { + case A_FLOAT: + snprintf(buf, MAXPDSTRING-1, "%f", atom_getfloat(argv)); + break; + case A_SYMBOL: + snprintf(buf, MAXPDSTRING-1, "'%s'", atom_getsymbol(argv)->s_name); + break; + case A_POINTER: + snprintf(buf, MAXPDSTRING-1, "pointer[0x%X]", argv->a_w.w_gpointer); + break; + case A_SEMI: + snprintf(buf, MAXPDSTRING-1, "SEMI"); + break; + case A_COMMA: + snprintf(buf, MAXPDSTRING-1, "COMMA"); + break; + case A_DEFFLOAT: + snprintf(buf, MAXPDSTRING-1, "DEFFLOAT[%f]", atom_getfloat(argv)); + break; + case A_DEFSYM: + snprintf(buf, MAXPDSTRING-1, "DEFSYM['%s']", atom_getsymbol(argv)->s_name); + break; + case A_DOLLAR: + snprintf(buf, MAXPDSTRING-1, "DOLLAR['%s']", atom_getsymbol(argv)->s_name); + break; + case A_DOLLSYM: + snprintf(buf, MAXPDSTRING-1, "DOLLSYM['%s']", atom_getsymbol(argv)->s_name); + break; + case A_GIMME: + snprintf(buf, MAXPDSTRING-1, "GIMME"); + break; + case A_CANT: + snprintf(buf, MAXPDSTRING-1, "CANT"); + break; + default: + snprintf(buf, MAXPDSTRING-1, "unknown[%d]", argv->a_type); + } + buf[MAXPDSTRING-1]=0; + + startpost(" %s", buf); + argv++; + } + endpost(); + +} + +static void *rawprint_new(t_symbol*s) +{ + t_rawprint *x = (t_rawprint *)pd_new(rawprint_class); + x->label=NULL; + if(s&&gensym("")!=s) + x->label=s; + + return (x); +} + +void rawprint_setup(void) { + rawprint_class = class_new(gensym("rawprint"), + (t_newmethod)rawprint_new, + 0, sizeof(t_rawprint), + CLASS_DEFAULT, A_DEFSYMBOL, 0); + + class_addanything(rawprint_class, rawprint_any); + zexy_register("rawprint"); +} diff --git a/src/z_zexy.c b/src/z_zexy.c index 340cd61..89f19ca 100644 --- a/src/z_zexy.c +++ b/src/z_zexy.c @@ -62,6 +62,7 @@ void z_zexy_setup(void) pdf_tilde_setup(); /* pdf~ */ prime_setup(); /* prime */ quantize_tilde_setup(); /* quantize~ */ + rawprint_setup(); /* rawprint */ regex_setup(); /* regex */ relay_setup(); /* relay */ repack_setup(); /* repack */ diff --git a/src/z_zexy.h b/src/z_zexy.h index 81febdf..b72a122 100644 --- a/src/z_zexy.h +++ b/src/z_zexy.h @@ -60,6 +60,7 @@ void packel_setup(void); /* packel */ void pdf_tilde_setup(void); /* pdf~ */ void prime_setup(void); /* prime */ void quantize_tilde_setup(void); /* quantize~ */ +void rawprint_setup(void); /* rawprint */ void regex_setup(void); /* regex */ void relay_setup(void); /* relay */ void repack_setup(void); /* repack */ |