aboutsummaryrefslogtreecommitdiff
path: root/src/rawprint.c
diff options
context:
space:
mode:
authorIOhannes m zmölnig <zmoelnig@users.sourceforge.net>2010-02-25 17:08:11 +0000
committerIOhannes m zmölnig <zmoelnig@users.sourceforge.net>2010-02-25 17:08:11 +0000
commitb1dc3811bea3fdb76d9d7d85094bb546350f6b2a (patch)
tree9451d9099785d192b733ce8eb0ff98e3b43040f1 /src/rawprint.c
parent198e2d7ccfb9c7b8b7a5c274ab67973209e11836 (diff)
added [rawprint], a [print] clone without all the fanciness
svn path=/trunk/externals/zexy/; revision=13190
Diffstat (limited to 'src/rawprint.c')
-rw-r--r--src/rawprint.c101
1 files changed, 101 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");
+}