aboutsummaryrefslogtreecommitdiff
path: root/control/serialize.c
diff options
context:
space:
mode:
authorGuenter Geiger <ggeiger@users.sourceforge.net>2002-06-17 10:13:57 +0000
committerGuenter Geiger <ggeiger@users.sourceforge.net>2002-06-17 10:13:57 +0000
commitfc3d3c0a4f110a23335398c327ac0a4fc949d5cb (patch)
tree1849d6afbe34cee9cec97bdb2295401f5126870b /control/serialize.c
This commit was generated by cvs2svn to compensate for changes in r12,svn2git-root
which included commits to RCS files with non-trunk default branches. svn path=/trunk/externals/ggee/; revision=13
Diffstat (limited to 'control/serialize.c')
-rwxr-xr-xcontrol/serialize.c58
1 files changed, 58 insertions, 0 deletions
diff --git a/control/serialize.c b/control/serialize.c
new file mode 100755
index 0000000..d288ec4
--- /dev/null
+++ b/control/serialize.c
@@ -0,0 +1,58 @@
+/* (C) Guenter Geiger <geiger@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);
+}
+
+