[SCM] pd-zexy/master: New upstream version 2.2.7
umlaeute at users.alioth.debian.org
umlaeute at users.alioth.debian.org
Sun Jan 21 22:21:53 UTC 2018
The following commit has been merged in the master branch:
commit 3ffc2280f6e78f885af003544351cd45ac79eddc
Author: IOhannes m zmölnig <zmoelnig at umlautS.umlaeute.mur.at>
Date: Sun Jan 21 23:03:28 2018 +0100
New upstream version 2.2.7
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 8470021..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,9 +0,0 @@
-# git ls-files --others --exclude-from=.git/info/exclude
-# Lines that start with '#' are comments.
-# For a project mostly in C, the following would be a good set of
-# exclude patterns (uncomment them if you want to use them):
-*.[oa]
-*~
-*.pd_linux
-*.pd_darwin
-*.dll
diff --git a/configure.ac b/configure.ac
index fef1c90..dc65de7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ([2.60])
-AC_INIT([zexy], [2.2.6], [zmoelnig at iem.at], [zexy], [https://git.iem.at/pd/zexy])
+AC_INIT([zexy], [2.2.7], [zmoelnig at iem.at], [zexy], [https://git.iem.at/pd/zexy])
AM_INIT_AUTOMAKE([1.10 foreign])
m4_ifdef([LT_INIT],
[LT_INIT([disable-static win32-dll])],
@@ -171,10 +171,14 @@ AC_ERROR([m_pd.h is desperately needed!
"--with-pd=</path/to/pd/>"])
fi
-AC_SUBST(CFLAGS)
-AC_SUBST(CPPFLAGS)
-AC_SUBST(DEFS)
-AC_SUBST(ARCH_FLAG)
+AC_SUBST([VALGRIND_CHECK_RULES])
+m4_ifdef([AX_VALGRIND_CHECK], [AX_VALGRIND_CHECK])
+
+AC_SUBST([VERBOSE])
+AC_SUBST([CFLAGS])
+AC_SUBST([CPPFLAGS])
+AC_SUBST([DEFS])
+AC_SUBST([ARCH_FLAG])
AC_SUBST([LIBTOOL_DEPS])
AC_SUBST([EXTRA_LTFLAGS])
diff --git a/reference/multireceive-help.pd b/reference/multireceive-help.pd
new file mode 100644
index 0000000..8940eb4
--- /dev/null
+++ b/reference/multireceive-help.pd
@@ -0,0 +1,23 @@
+#N canvas 275 127 834 332 10;
+#X floatatom 389 174 5 0 0 0 - - -, f 5;
+#X obj 153 186 print x;
+#X text 51 32 [multireceive]: combine multiple receives;
+#X obj 389 202 s \$0-a;
+#X msg 442 171 set foo bar;
+#X obj 442 202 s \$0-c;
+#X msg 153 120 set foo bar;
+#X obj 153 164 multireceive \$0-a foo \$0-c;
+#X floatatom 549 154 5 0 0 0 - - -, f 5;
+#X obj 549 202 s foo;
+#X msg 549 173 foo \$1;
+#X obj 602 202 s bar;
+#X msg 602 173 bar-\$1;
+#X floatatom 602 154 5 0 0 0 - - -, f 5;
+#X connect 0 0 3 0;
+#X connect 4 0 5 0;
+#X connect 6 0 7 0;
+#X connect 7 0 1 0;
+#X connect 8 0 10 0;
+#X connect 10 0 9 0;
+#X connect 12 0 11 0;
+#X connect 13 0 12 0;
diff --git a/src/0x260x260x7e.c b/src/0x260x260x7e.c
index 88e4896..492ef75 100644
--- a/src/0x260x260x7e.c
+++ b/src/0x260x260x7e.c
@@ -23,7 +23,7 @@
/* ------------------------ logical~ ----------------------------- */
/* ----------------------------- andand_tilde ----------------------------- */
-static t_class *andand_tilde_class, *scalarandand_tilde_class;
+static t_class *andand_tilde_class=NULL, *scalarandand_tilde_class=NULL;
typedef struct _andand_tilde {
t_object x_obj;
@@ -289,7 +289,7 @@ void setup_0x260x260x7e(void)
(t_newmethod)andand_tilde_new, 0,
sizeof(t_andand_tilde), 0, A_GIMME, 0);
class_addmethod(andand_tilde_class, (t_method)andand_tilde_dsp,
- gensym("dsp"), 0);
+ gensym("dsp"), A_CANT, 0);
CLASS_MAINSIGNALIN(andand_tilde_class, t_andand_tilde, x_f);
class_addmethod (andand_tilde_class, (t_method)andand_tilde_help,
gensym("help"), A_NULL);
@@ -300,7 +300,7 @@ void setup_0x260x260x7e(void)
sizeof(t_scalarandand_tilde), 0, 0);
CLASS_MAINSIGNALIN(scalarandand_tilde_class, t_scalarandand_tilde, x_f);
class_addmethod(scalarandand_tilde_class, (t_method)scalarandand_tilde_dsp,
- gensym("dsp"),
+ gensym("dsp"), A_CANT,
0);
class_addmethod (scalarandand_tilde_class, (t_method)andand_tilde_help,
gensym("help"), A_NULL);
diff --git a/src/0x2e.c b/src/0x2e.c
index 83f4abc..8cf2eea 100644
--- a/src/0x2e.c
+++ b/src/0x2e.c
@@ -20,8 +20,8 @@
#include "zexy.h"
-static t_class *scalmul_class;
-static t_class *scalmul_scal_class;
+static t_class *scalmul_class=NULL;
+static t_class *scalmul_scal_class=NULL;
typedef struct _scalmul {
t_object x_obj;
diff --git a/src/0x3c0x7e.c b/src/0x3c0x7e.c
index c710dd7..30aefac 100644
--- a/src/0x3c0x7e.c
+++ b/src/0x3c0x7e.c
@@ -1,5 +1,5 @@
/*
- * <~: signal comparision
+ * <~: signal comparison
*
* (c) 1999-2011 IOhannes m zmölnig, forum::für::umläute, institute of electronic music and acoustics (iem)
*
@@ -23,7 +23,7 @@
/* ----------------------------- lt_tilde ----------------------------- */
-static t_class *lt_tilde_class, *scalarlt_tilde_class;
+static t_class *lt_tilde_class=NULL, *scalarlt_tilde_class=NULL;
typedef struct _lt_tilde {
t_object x_obj;
@@ -243,7 +243,8 @@ void setup_0x3c0x7e(void)
{
lt_tilde_class = class_new(gensym("<~"), (t_newmethod)lt_tilde_new, 0,
sizeof(t_lt_tilde), 0, A_GIMME, 0);
- class_addmethod(lt_tilde_class, (t_method)lt_tilde_dsp, gensym("dsp"), 0);
+ class_addmethod(lt_tilde_class, (t_method)lt_tilde_dsp, gensym("dsp"),
+ A_CANT, 0);
CLASS_MAINSIGNALIN(lt_tilde_class, t_lt_tilde, x_f);
class_addmethod (lt_tilde_class, (t_method)lt_tilde_help, gensym("help"),
A_NULL);
@@ -254,7 +255,7 @@ void setup_0x3c0x7e(void)
CLASS_MAINSIGNALIN(scalarlt_tilde_class, t_scalarlt_tilde, x_f);
class_addmethod(scalarlt_tilde_class, (t_method)scalarlt_tilde_dsp,
gensym("dsp"),
- 0);
+ A_CANT, 0);
class_addmethod (scalarlt_tilde_class, (t_method)lt_tilde_help,
gensym("help"), A_NULL);
class_sethelpsymbol(scalarlt_tilde_class, gensym("zigbinops"));
diff --git a/src/0x3d0x3d0x7e.c b/src/0x3d0x3d0x7e.c
index 7c0c014..a74e8ff 100644
--- a/src/0x3d0x3d0x7e.c
+++ b/src/0x3d0x3d0x7e.c
@@ -20,7 +20,7 @@
#include "zexySIMD.h"
/* ----------------------------- eq_tilde ----------------------------- */
-static t_class *eq_tilde_class, *scalareq_tilde_class;
+static t_class *eq_tilde_class=NULL, *scalareq_tilde_class=NULL;
typedef struct _eq_tilde {
t_object x_obj;
@@ -242,7 +242,8 @@ void setup_0x3d0x3d0x7e(void)
{
eq_tilde_class = class_new(gensym("==~"), (t_newmethod)eq_tilde_new, 0,
sizeof(t_eq_tilde), 0, A_GIMME, 0);
- class_addmethod(eq_tilde_class, (t_method)eq_tilde_dsp, gensym("dsp"), 0);
+ class_addmethod(eq_tilde_class, (t_method)eq_tilde_dsp, gensym("dsp"),
+ A_CANT, 0);
CLASS_MAINSIGNALIN(eq_tilde_class, t_eq_tilde, x_f);
class_addmethod (eq_tilde_class, (t_method)eq_tilde_help, gensym("help"),
A_NULL);
@@ -253,7 +254,7 @@ void setup_0x3d0x3d0x7e(void)
CLASS_MAINSIGNALIN(scalareq_tilde_class, t_scalareq_tilde, x_f);
class_addmethod(scalareq_tilde_class, (t_method)scalareq_tilde_dsp,
gensym("dsp"),
- 0);
+ A_CANT, 0);
class_addmethod (scalareq_tilde_class, (t_method)eq_tilde_help,
gensym("help"), A_NULL);
class_sethelpsymbol(scalareq_tilde_class, gensym("zigbinops"));
diff --git a/src/0x3e0x7e.c b/src/0x3e0x7e.c
index 9c91e1d..78850b8 100644
--- a/src/0x3e0x7e.c
+++ b/src/0x3e0x7e.c
@@ -1,5 +1,5 @@
/*
- * >~: signal comparision
+ * >~: signal comparison
*
* (c) 1999-2011 IOhannes m zmölnig, forum::für::umläute, institute of electronic music and acoustics (iem)
*
@@ -23,7 +23,7 @@
/* ------------------------ relational~ ----------------------------- */
/* ----------------------------- gt_tilde ----------------------------- */
-static t_class *gt_tilde_class, *scalargt_tilde_class;
+static t_class *gt_tilde_class=NULL, *scalargt_tilde_class=NULL;
typedef struct _gt_tilde {
t_object x_obj;
@@ -246,7 +246,8 @@ void setup_0x3e0x7e(void)
{
gt_tilde_class = class_new(gensym(">~"), (t_newmethod)gt_tilde_new, 0,
sizeof(t_gt_tilde), 0, A_GIMME, 0);
- class_addmethod(gt_tilde_class, (t_method)gt_tilde_dsp, gensym("dsp"), 0);
+ class_addmethod(gt_tilde_class, (t_method)gt_tilde_dsp, gensym("dsp"),
+ A_CANT, 0);
CLASS_MAINSIGNALIN(gt_tilde_class, t_gt_tilde, x_f);
class_addmethod (gt_tilde_class, (t_method)gt_tilde_help, gensym("help"),
A_NULL);
@@ -257,7 +258,7 @@ void setup_0x3e0x7e(void)
CLASS_MAINSIGNALIN(scalargt_tilde_class, t_scalargt_tilde, x_f);
class_addmethod(scalargt_tilde_class, (t_method)scalargt_tilde_dsp,
gensym("dsp"),
- 0);
+ A_CANT, 0);
class_addmethod (scalargt_tilde_class, (t_method)gt_tilde_help,
gensym("help"), A_NULL);
class_sethelpsymbol(scalargt_tilde_class, gensym("zigbinops"));
diff --git a/src/0x7c0x7c0x7e.c b/src/0x7c0x7c0x7e.c
index b1cd497..e9f6553 100644
--- a/src/0x7c0x7c0x7e.c
+++ b/src/0x7c0x7c0x7e.c
@@ -20,7 +20,7 @@
#include "zexySIMD.h"
/* ----------------------------- oror_tilde ----------------------------- */
-static t_class *oror_tilde_class, *scalaroror_tilde_class;
+static t_class *oror_tilde_class=NULL, *scalaroror_tilde_class=NULL;
typedef struct _oror_tilde {
t_object x_obj;
@@ -262,7 +262,7 @@ void setup_0x7c0x7c0x7e(void)
oror_tilde_class = class_new(gensym("||~"), (t_newmethod)oror_tilde_new, 0,
sizeof(t_oror_tilde), 0, A_GIMME, 0);
class_addmethod(oror_tilde_class, (t_method)oror_tilde_dsp, gensym("dsp"),
- 0);
+ A_CANT, 0);
CLASS_MAINSIGNALIN(oror_tilde_class, t_oror_tilde, x_f);
class_addmethod (oror_tilde_class, (t_method)oror_tilde_help,
gensym("help"), A_NULL);
@@ -273,7 +273,7 @@ void setup_0x7c0x7c0x7e(void)
CLASS_MAINSIGNALIN(scalaroror_tilde_class, t_scalaroror_tilde, x_f);
class_addmethod(scalaroror_tilde_class, (t_method)scalaroror_tilde_dsp,
gensym("dsp"),
- 0);
+ A_CANT, 0);
class_addmethod (scalaroror_tilde_class, (t_method)oror_tilde_help,
gensym("help"), A_NULL);
class_sethelpsymbol(scalaroror_tilde_class, gensym("zigbinops"));
diff --git a/src/a2l.c b/src/a2l.c
index 0f9b904..48ed8ae 100644
--- a/src/a2l.c
+++ b/src/a2l.c
@@ -20,7 +20,7 @@
#include "zexy.h"
#include <string.h>
-static t_class *a2l_class;
+static t_class *a2l_class=NULL;
typedef struct _a2l {
t_object x_obj;
@@ -74,26 +74,29 @@ static void *a2l_new(void)
outlet_new(&x->x_obj, 0);
return (x);
}
-
-void a2l_setup(void)
+static t_class* zclass_setup(const char*name)
{
-
- a2l_class = class_new(gensym("a2l"), (t_newmethod)a2l_new,
+ t_class *c = class_new(gensym(name), (t_newmethod)a2l_new,
0, sizeof(t_a2l), 0, 0);
- class_addcreator((t_newmethod)a2l_new, gensym("any2list"), 0);
-
-
- class_addbang (a2l_class, a2l_bang);
- class_addfloat (a2l_class, a2l_float);
- class_addsymbol (a2l_class, a2l_symbol);
- class_addpointer (a2l_class, a2l_pointer);
- class_addlist (a2l_class, a2l_list);
- class_addanything(a2l_class, a2l_anything);
-
+ class_addbang (c, a2l_bang);
+ class_addfloat (c, a2l_float);
+ class_addsymbol (c, a2l_symbol);
+ class_addpointer (c, a2l_pointer);
+ class_addlist (c, a2l_list);
+ class_addanything(c, a2l_anything);
+ return c;
+}
+static void dosetup()
+{
zexy_register("any2list");
+ a2l_class=zclass_setup("any2list");
+ zclass_setup("a2l");
}
-
void any2list_setup(void)
{
- a2l_setup();
+ dosetup();
+}
+void a2l_setup(void)
+{
+ dosetup();
}
diff --git a/src/absgn~.c b/src/absgn~.c
index 94eb3ec..79305ae 100644
--- a/src/absgn~.c
+++ b/src/absgn~.c
@@ -27,7 +27,7 @@ typedef struct _absgn {
/* ------------------------ sigABSGN~ ----------------------------- */
-static t_class *sigABSGN_class;
+static t_class *sigABSGN_class=NULL;
static t_int *sigABSGN_perform(t_int *w)
{
@@ -135,9 +135,10 @@ static void *sigABSGN_new(void)
void absgn_tilde_setup(void)
{
sigABSGN_class = class_new(gensym("absgn~"), (t_newmethod)sigABSGN_new, 0,
- sizeof(t_absgn), 0, A_DEFFLOAT, 0);
+ sizeof(t_absgn), 0, A_NULL);
CLASS_MAINSIGNALIN(sigABSGN_class, t_absgn, x_f);
- class_addmethod(sigABSGN_class, (t_method)sigABSGN_dsp, gensym("dsp"), 0);
+ class_addmethod(sigABSGN_class, (t_method)sigABSGN_dsp, gensym("dsp"),
+ A_CANT, 0);
class_addmethod(sigABSGN_class, (t_method)sigABSGN_helper, gensym("help"),
0);
diff --git a/src/abs~.c b/src/abs~.c
index 69122a9..c3d8b53 100644
--- a/src/abs~.c
+++ b/src/abs~.c
@@ -28,7 +28,7 @@ typedef struct _abs {
/* ------------------------ sigABS~ ----------------------------- */
-static t_class *sigABS_class;
+static t_class *sigABS_class=NULL;
static t_int *sigABS_perform(t_int *w)
{
@@ -153,9 +153,10 @@ static void *sigABS_new(void)
void abs_tilde_setup(void)
{
sigABS_class = class_new(gensym("abs~"), (t_newmethod)sigABS_new, 0,
- sizeof(t_abs), 0, A_DEFFLOAT, 0);
+ sizeof(t_abs), 0, A_NULL);
CLASS_MAINSIGNALIN(sigABS_class, t_abs, x_f);
- class_addmethod(sigABS_class, (t_method)sigABS_dsp, gensym("dsp"), 0);
+ class_addmethod(sigABS_class, (t_method)sigABS_dsp, gensym("dsp"),
+ A_CANT, 0);
class_addmethod(sigABS_class, (t_method)sigABS_helper, gensym("help"), 0);
class_sethelpsymbol(sigABS_class, gensym("zigbinops"));
diff --git a/src/atof.c b/src/atof.c
index 8311d83..35360ee 100644
--- a/src/atof.c
+++ b/src/atof.c
@@ -21,7 +21,7 @@
#include <stdlib.h>
#include <string.h>
-static t_class *atof_class;
+static t_class *atof_class=NULL;
typedef struct _atof {
t_object x_obj;
@@ -81,7 +81,7 @@ void atof_setup(void)
{
atof_class = class_new(gensym("atof"), (t_newmethod)atof_new,
(t_method)atof_free,
- sizeof(t_atof), 0, A_DEFFLOAT, 0);
+ sizeof(t_atof), 0, A_NULL);
class_addbang(atof_class, (t_method)atof_bang);
class_addfloat(atof_class, (t_method)atof_float);
diff --git a/src/atoi.c b/src/atoi.c
index 17e6b99..6dd3d61 100644
--- a/src/atoi.c
+++ b/src/atoi.c
@@ -21,7 +21,7 @@
#include <stdlib.h>
#include <string.h>
-static t_class *atoi_class;
+static t_class *atoi_class=NULL;
typedef struct _atoi {
t_object x_obj;
@@ -99,7 +99,7 @@ void atoi_setup(void)
{
atoi_class = class_new(gensym("atoi"), (t_newmethod)atoi_new,
(t_method)atoi_free,
- sizeof(t_atoi), 0, A_DEFFLOAT, 0);
+ sizeof(t_atoi), 0, A_NULL);
class_addbang(atoi_class, (t_method)atoi_bang);
class_addfloat(atoi_class, (t_method)atoi_float);
diff --git a/src/avg~.c b/src/avg~.c
index 3e68c4c..52097d6 100644
--- a/src/avg~.c
+++ b/src/avg~.c
@@ -23,7 +23,7 @@
/* tilde object to take absolute value. */
-static t_class *avg_class;
+static t_class *avg_class=NULL;
typedef struct _avg {
t_object x_obj;
@@ -74,9 +74,10 @@ static void avg_help(void)
void avg_tilde_setup(void)
{
avg_class = class_new(gensym("avg~"), (t_newmethod)avg_new, 0,
- sizeof(t_avg), 0, A_DEFFLOAT, 0);
+ sizeof(t_avg), 0, A_NULL);
class_addmethod(avg_class, nullfn, gensym("signal"), 0);
- class_addmethod(avg_class, (t_method)avg_dsp, gensym("dsp"), 0);
+ class_addmethod(avg_class, (t_method)avg_dsp, gensym("dsp"),
+ A_CANT, 0);
class_addmethod(avg_class, (t_method)avg_help, gensym("help"), 0);
zexy_register("avg~");
diff --git a/src/blockmirror~.c b/src/blockmirror~.c
index c62c436..9e9d9a3 100644
--- a/src/blockmirror~.c
+++ b/src/blockmirror~.c
@@ -26,7 +26,7 @@
{x[0], x[1], ... x[n-1]} --> {x[n-1], x[n-2], ... x[0]}
*/
-static t_class *blockmirror_class;
+static t_class *blockmirror_class=NULL;
typedef struct _blockmirror {
t_object x_obj;
@@ -112,7 +112,7 @@ void blockmirror_tilde_setup(void)
sizeof(t_blockmirror), 0, A_NULL);
class_addmethod(blockmirror_class, nullfn, gensym("signal"), 0);
class_addmethod(blockmirror_class, (t_method)blockmirror_dsp,
- gensym("dsp"), 0);
+ gensym("dsp"), A_CANT, 0);
class_addfloat(blockmirror_class, blockmirror_float);
diff --git a/src/blockshuffle~.c b/src/blockshuffle~.c
index 36dbff7..4deb852 100644
--- a/src/blockshuffle~.c
+++ b/src/blockshuffle~.c
@@ -26,7 +26,7 @@
{x[0], x[1], ... x[n-1]} --> {x[n-1], x[n-2], ... x[0]}
*/
-static t_class *blockshuffle_class;
+static t_class *blockshuffle_class=NULL;
typedef struct _blockshuffle {
t_object x_obj;
@@ -91,11 +91,11 @@ static t_int *blockshuffle_perform(t_int *w)
t_sample *in = (t_sample *)(w[2]);
t_sample *out = (t_sample *)(w[3]);
int n = (int)(w[4]);
- int i=0;
t_sample *temp=x->blockbuf;
t_int *idx =x->indices;
if(idx) {
+ int i=0;
for(i=0; i<n; i++) {
temp[i]=in[idx[i]];
}
@@ -159,7 +159,7 @@ void blockshuffle_tilde_setup(void)
sizeof(t_blockshuffle), 0, A_NULL);
class_addmethod(blockshuffle_class, nullfn, gensym("signal"), 0);
class_addmethod(blockshuffle_class, (t_method)blockshuffle_dsp,
- gensym("dsp"), 0);
+ gensym("dsp"), A_CANT, 0);
class_addlist(blockshuffle_class, blockshuffle_list);
diff --git a/src/blockswap~.c b/src/blockswap~.c
index 9363858..ded8576 100644
--- a/src/blockswap~.c
+++ b/src/blockswap~.c
@@ -25,7 +25,7 @@
{x[0], x[1], ... x[n-1]} --> {x[n-1], x[n-2], ... x[0]}
*/
-static t_class *blockswap_class;
+static t_class *blockswap_class=NULL;
typedef struct _blockswap {
t_object x_obj;
@@ -111,7 +111,7 @@ void blockswap_tilde_setup(void)
sizeof(t_blockswap), 0, A_NULL);
class_addmethod(blockswap_class, nullfn, gensym("signal"), 0);
class_addmethod(blockswap_class, (t_method)blockswap_dsp, gensym("dsp"),
- 0);
+ A_CANT, 0);
class_addfloat(blockswap_class, blockswap_float);
diff --git a/src/date.c b/src/date.c
index a749d57..377fdde 100644
--- a/src/date.c
+++ b/src/date.c
@@ -61,7 +61,7 @@
/* ----------------------- date --------------------- */
-static t_class *date_class;
+static t_class *date_class=NULL;
typedef struct _date {
t_object x_obj;
@@ -79,10 +79,10 @@ typedef struct _date {
static void *date_new(t_symbol* UNUSED(s), int argc, t_atom *argv)
{
t_date *x = (t_date *)pd_new(date_class);
- char buf[5];
x->GMT=0;
if (argc) {
+ char buf[5];
atom_string(argv, buf, 5);
if (buf[0]=='G' && buf[1]=='M' && buf[2]=='T') {
x->GMT = 1;
diff --git a/src/demultiplex.c b/src/demultiplex.c
index ea6cd4a..598ce50 100644
--- a/src/demultiplex.c
+++ b/src/demultiplex.c
@@ -26,7 +26,7 @@
a demultiplexer
*/
-static t_class *demux_class;
+static t_class *demux_class=NULL;
typedef struct _demux {
t_object x_obj;
@@ -34,17 +34,19 @@ typedef struct _demux {
int n_out;
t_outlet **out, *selected;
-
+ t_float findex;
} t_demux;
-static void demux_select(t_demux *x, t_float f)
+static void demux_select(t_demux *x)
{
+ t_float f = x->findex;
int n = ( (f<0) || (f>x->n_out) ) ? 0 : f;
x->selected = x->out[n];
}
static void demux_list(t_demux *x, t_symbol *s, int argc, t_atom *argv)
{
+ demux_select(x);
switch (argc) {
case 0:
outlet_bang(x->selected);
@@ -70,6 +72,7 @@ static void demux_list(t_demux *x, t_symbol *s, int argc, t_atom *argv)
}
static void demux_any(t_demux *x, t_symbol *s, int argc, t_atom *argv)
{
+ demux_select(x);
outlet_anything(x->selected, s, argc, argv);
}
@@ -80,7 +83,8 @@ static void *demux_new(t_symbol* UNUSED(s), int argc, t_atom* UNUSED(argv))
x->n_out = n - 1;
- inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("float"), gensym("select"));
+ x->findex = 0;
+ floatinlet_new(&x->x_obj, &x->findex);
x->out = (t_outlet **)getbytes(n * sizeof(t_outlet *));
for (n=0; n<=x->n_out; n++) {
@@ -91,23 +95,25 @@ static void *demux_new(t_symbol* UNUSED(s), int argc, t_atom* UNUSED(argv))
return (x);
}
-
-void demultiplex_setup(void)
+static t_class* zclass_setup(const char*name)
+{
+ t_class*c = class_new(gensym(name), (t_newmethod)demux_new,
+ 0, sizeof(t_demux), 0, A_GIMME, 0);
+ class_addanything (c, demux_any);
+ class_addlist (c, demux_list);
+ return c;
+}
+static void dosetup()
{
- demux_class = class_new(gensym("demultiplex"), (t_newmethod)demux_new,
- 0, sizeof(t_demux), 0, A_GIMME, 0);
- class_addcreator((t_newmethod)demux_new, gensym("demux"), A_GIMME, 0);
-
- class_addanything (demux_class, demux_any);
- class_addlist (demux_class, demux_list);
-
- class_addmethod (demux_class, (t_method)demux_select, gensym("select"),
- A_DEFFLOAT, 0);
-
zexy_register("demultiplex");
+ demux_class=zclass_setup("demultiplex");
+ zclass_setup("demux");
+}
+void demultiplex_setup(void)
+{
+ dosetup();
}
void demux_setup(void)
{
- demultiplex_setup();
+ dosetup();
}
-
diff --git a/src/demultiplex~.c b/src/demultiplex~.c
index fbc58e2..9c574ef 100644
--- a/src/demultiplex~.c
+++ b/src/demultiplex~.c
@@ -19,7 +19,7 @@
#include "zexy.h"
-static t_class *demux_class;
+static t_class *demux_tilde_class=NULL;
typedef struct _demux {
t_object x_obj;
@@ -92,7 +92,7 @@ static void demux_free(t_demux *x)
static void *demux_new(t_symbol* UNUSED(s), int argc, t_atom* UNUSED(argv))
{
- t_demux *x = (t_demux *)pd_new(demux_class);
+ t_demux *x = (t_demux *)pd_new(demux_tilde_class);
int i;
if (!argc) {
@@ -113,25 +113,28 @@ static void *demux_new(t_symbol* UNUSED(s), int argc, t_atom* UNUSED(argv))
return (x);
}
-
-void demultiplex_tilde_setup(void)
+static t_class* zclass_setup(const char*name)
+{
+ t_class *c = class_new(gensym(name), (t_newmethod)demux_new,
+ (t_method)demux_free, sizeof(t_demux), 0, A_GIMME, 0);
+ class_addfloat(c, demux_output);
+ class_addmethod(c, (t_method)demux_dsp, gensym("dsp"), A_CANT, 0);
+ class_addmethod(c, nullfn, gensym("signal"), 0);
+
+ class_addmethod(c, (t_method)demux_helper, gensym("help"), 0);
+ return c;
+}
+static void dosetup()
{
- demux_class = class_new(gensym("demultiplex~"), (t_newmethod)demux_new,
- (t_method)demux_free, sizeof(t_demux), 0, A_GIMME, 0);
- class_addcreator((t_newmethod)demux_new, gensym("demux~"), A_GIMME, 0);
-
- class_addfloat(demux_class, demux_output);
- class_addmethod(demux_class, (t_method)demux_dsp, gensym("dsp"), 0);
- class_addmethod(demux_class, nullfn, gensym("signal"), 0);
-
- class_addmethod(demux_class, (t_method)demux_helper, gensym("help"), 0);
-
zexy_register("demultiplex~");
+ demux_tilde_class=zclass_setup("demultiplex~");
+ zclass_setup("demux~");
+}
+void demultiplex_tilde_setup(void)
+{
+ dosetup();
}
void demux_tilde_setup(void)
{
- demultiplex_tilde_setup();
+ dosetup();
}
-
-
-
diff --git a/src/dfreq~.c b/src/dfreq~.c
index ee2adf8..15b0f33 100644
--- a/src/dfreq~.c
+++ b/src/dfreq~.c
@@ -26,7 +26,7 @@
/* datendefinition */
-static t_class *dfreq_class;
+static t_class *dfreq_class=NULL;
typedef struct _dfreq {
t_object x_obj;
@@ -110,7 +110,8 @@ void dfreq_tilde_setup(void)
dfreq_class = class_new(gensym("dfreq~"), (t_newmethod)dfreq_new, 0,
sizeof(t_dfreq), 0, A_NULL);
class_addmethod(dfreq_class, nullfn, gensym("signal"), 0);
- class_addmethod(dfreq_class, (t_method)dfreq_dsp, gensym("dsp"), 0);
+ class_addmethod(dfreq_class, (t_method)dfreq_dsp, gensym("dsp"),
+ A_CANT, 0);
class_addmethod(dfreq_class, (t_method)dfreq_tilde_helper, gensym("help"),
0);
diff --git a/src/dirac~.c b/src/dirac~.c
index c00ab9d..5e4361e 100644
--- a/src/dirac~.c
+++ b/src/dirac~.c
@@ -37,7 +37,7 @@
/* ------------------------ dirac~ ----------------------------- */
-static t_class *dirac_class;
+static t_class *dirac_class=NULL;
typedef struct _dirac {
t_object x_obj;
@@ -151,7 +151,8 @@ void dirac_tilde_setup(void)
sizeof(t_dirac), 0, A_DEFFLOAT, 0);
class_addfloat(dirac_class, dirac_float);
class_addbang(dirac_class, dirac_bang);
- class_addmethod(dirac_class, (t_method)dirac_dsp, gensym("dsp"), 0);
+ class_addmethod(dirac_class, (t_method)dirac_dsp, gensym("dsp"),
+ A_CANT, 0);
class_addmethod(dirac_class, (t_method)dirac_helper, gensym("help"), 0);
zexy_register("dirac~");
diff --git a/src/doublepole~.c b/src/doublepole~.c
index a06e861..6666135 100644
--- a/src/doublepole~.c
+++ b/src/doublepole~.c
@@ -116,7 +116,7 @@ void doublepole_tilde_setup(void)
0, sizeof(t_sigdoublepole), 0, A_GIMME, 0);
CLASS_MAINSIGNALIN(sigdoublepole_class, t_sigdoublepole, x_f);
class_addmethod(sigdoublepole_class, (t_method)sigdoublepole_dsp,
- gensym("dsp"), 0);
+ gensym("dsp"), A_CANT, 0);
class_addlist(sigdoublepole_class, sigdoublepole_list);
class_addmethod(sigdoublepole_class, (t_method)sigdoublepole_set,
gensym("set"),
diff --git a/src/drip.c b/src/drip.c
index 59e504c..b173451 100644
--- a/src/drip.c
+++ b/src/drip.c
@@ -28,7 +28,7 @@ you can adjust the drop-speed in [ms]
#include "zexy.h"
-static t_class *drip_class;
+static t_class *drip_class=NULL;
typedef struct _drip {
t_object x_obj;
@@ -200,10 +200,8 @@ static void *drip_new(t_symbol* UNUSED(s), int argc, t_atom *argv)
void drip_setup(void)
{
drip_class = class_new(gensym("drip"), (t_newmethod)drip_new,
- (t_method)drip_free, sizeof(t_drip), 0 ,A_GIMME, 0);
-
- class_addcreator((t_newmethod)drip_new, gensym("unfold"), A_GIMME, 0);
- /* for historical reasons */
+ (t_method)drip_free,
+ sizeof(t_drip), 0, A_GIMME, 0);
class_addbang (drip_class, drip_bang);
class_addlist (drip_class, drip_list);
diff --git a/src/envrms~.c b/src/envrms~.c
index 1c1db80..5fe1510 100644
--- a/src/envrms~.c
+++ b/src/envrms~.c
@@ -26,7 +26,7 @@
#define MAXOVERLAP 10
#define MAXVSTAKEN 64
-t_class *sigenvrms_class;
+t_class *sigenvrms_class=NULL;
typedef struct sigenvrms {
t_object x_obj; /* header */
@@ -156,7 +156,7 @@ void envrms_tilde_setup(void)
(t_method)sigenvrms_ff, sizeof(t_sigenvrms), 0, A_DEFFLOAT, A_DEFFLOAT, 0);
class_addmethod(sigenvrms_class, nullfn, gensym("signal"), 0);
class_addmethod(sigenvrms_class, (t_method)sigenvrms_dsp, gensym("dsp"),
- 0);
+ A_CANT, 0);
class_addmethod(sigenvrms_class, (t_method)sigenvrms_help, gensym("help"),
0);
diff --git a/src/fifop.c b/src/fifop.c
index 36b9b76..87d0506 100644
--- a/src/fifop.c
+++ b/src/fifop.c
@@ -31,7 +31,7 @@
* high priority means low numeric value
*/
-static t_class *fifop_class;
+static t_class *fifop_class=NULL;
typedef struct _fifop_list {
int argc;
@@ -103,7 +103,6 @@ static t_fifop_prioritylist*fifop_genprioritylist(t_fifop*x,
static int add2fifo(t_fifop_prioritylist*fifoprio, int argc, t_atom *argv)
{
- t_fifop_list*fifo=0;
t_fifop_list*entry=0;
if(fifoprio==0) {
@@ -127,7 +126,7 @@ static int add2fifo(t_fifop_prioritylist*fifoprio, int argc, t_atom *argv)
/* insert entry into fifo */
if(fifoprio->fifo_end) {
/* append to the end of the fifo */
- fifo=fifoprio->fifo_end;
+ t_fifop_list*fifo=fifoprio->fifo_end;
/* add new entry to end of fifo */
fifo->next=entry;
diff --git a/src/freadln.c b/src/freadln.c
index af91114..819d692 100644
--- a/src/freadln.c
+++ b/src/freadln.c
@@ -42,7 +42,7 @@
* into the RAM of your system
*/
-static t_class *freadln_class;
+static t_class *freadln_class=NULL;
typedef struct freadln {
t_object x_ob;
@@ -154,8 +154,8 @@ static int enlarge_cstr_if_required(const char **c_str, int *len,
static int cstr_char_pos(const char *c_str, const char c)
{
- int cnt=1;
if (c_str) {
+ int cnt=1;
do {
if (*c_str==c) {
return cnt;
@@ -179,7 +179,6 @@ static void freadln_readline (t_freadln *x)
t_binbuf *bbuf;
t_atom *abuf;
int abuf_length;
- int rewind_after;
if (!x->x_file) {
pd_error(x, "no file opened for reading");
@@ -212,7 +211,7 @@ static void freadln_readline (t_freadln *x)
!(items_read < x->x_textbuf_length));
if (linebreak_pos-1 < items_read - strlen(x->linebreak_chr)) {
- rewind_after=items_read-linebreak_pos;
+ int rewind_after=items_read-linebreak_pos;
fseek(x->x_file,-(long)(rewind_after),SEEK_CUR);
}
if (linebreak_pos==-1) {
diff --git a/src/fwriteln.c b/src/fwriteln.c
index e630929..6678e68 100644
--- a/src/fwriteln.c
+++ b/src/fwriteln.c
@@ -38,7 +38,7 @@
* iemmatrix
*/
-static t_class *fwriteln_class;
+static t_class *fwriteln_class=NULL;
typedef struct fwriteln {
t_object x_ob;
@@ -107,9 +107,9 @@ static void fwriteln_open (t_fwriteln *x, t_symbol *s, t_symbol*type)
static void fwriteln_write (t_fwriteln *x, t_symbol *s, int argc,
t_atom *argv)
{
- int length=0;
char *text=x->x_textbuf;
if (x->x_file) {
+ int length=0;
if ((s!=gensym("list"))||(argv->a_type==A_SYMBOL)) {
snprintf(text,MAXPDSTRING,"%s ", s->s_name);
text[MAXPDSTRING-1]=0;
diff --git a/src/glue.c b/src/glue.c
index e3a2ee7..fcc8858 100644
--- a/src/glue.c
+++ b/src/glue.c
@@ -20,7 +20,7 @@
#include "zexy.h"
#include <string.h>
-static t_class *glue_class;
+static t_class *glue_class=NULL;
typedef struct _zglue {
t_object x_obj;
diff --git a/src/index.c b/src/index.c
index 9848945..56a6b7e 100644
--- a/src/index.c
+++ b/src/index.c
@@ -42,7 +42,7 @@
/* ----------------------- index --------------------- */
-static t_class *index_class;
+static t_class *index_class=NULL;
typedef struct _index {
t_object x_obj;
@@ -143,9 +143,9 @@ static void index_add(t_index *x, t_symbol *s, t_float f)
|| newentry>=x->maxentries)) {
/* do some resizing */
int maxentries=(newentry>x->maxentries)?newentry:(x->maxentries*2);
- int i;
t_symbol**buf=(t_symbol **)getbytes(sizeof(t_symbol *) * maxentries);
if(buf!=0) {
+ int i;
memcpy(buf, x->names, sizeof(t_symbol *) * x->maxentries);
for(i=x->maxentries; i<maxentries; i++) {
buf[i]=0;
diff --git a/src/length.c b/src/length.c
index 3a745d5..da57e0f 100644
--- a/src/length.c
+++ b/src/length.c
@@ -19,7 +19,7 @@
#include "zexy.h"
-static t_class *length_class;
+static t_class *length_class=NULL;
typedef struct _length {
t_object x_obj;
} t_length;
@@ -45,7 +45,7 @@ static void *length_new(void)
void length_setup(void)
{
length_class = class_new(gensym("length"), (t_newmethod)length_new, 0,
- sizeof(t_length), 0, A_DEFFLOAT, 0);
+ sizeof(t_length), 0, A_NULL);
class_addlist(length_class, (t_method)length_list);
class_addanything(length_class, (t_method)length_any);
diff --git a/src/lifop.c b/src/lifop.c
index 8dd0963..6ffde5a 100644
--- a/src/lifop.c
+++ b/src/lifop.c
@@ -32,7 +32,7 @@
* high priority means low numeric value
*/
-static t_class *lifop_class;
+static t_class *lifop_class=NULL;
typedef struct _lifop_list {
int argc;
diff --git a/src/limiter~.c b/src/limiter~.c
index b6c8523..f713d8b 100644
--- a/src/limiter~.c
+++ b/src/limiter~.c
@@ -89,7 +89,7 @@ static void init_sinc(void)
/* ------------------------------------------------------------------------------------ */
/* first define the structs... */
-static t_class *limiter_class;
+static t_class *limiter_class=NULL;
typedef struct _limctl {
/* variables changed by user */
@@ -774,7 +774,8 @@ void limiter_tilde_setup(void)
sizeof(t_limiter), 0, A_GIMME, 0);
class_addmethod(limiter_class, nullfn, gensym("signal"), 0);
- class_addmethod(limiter_class, (t_method)limiter_dsp, gensym("dsp"), 0);
+ class_addmethod(limiter_class, (t_method)limiter_dsp, gensym("dsp"),
+ A_CANT, 0);
class_addmethod(limiter_class, (t_method)limiter_tilde_helper,
gensym("help"), 0);
diff --git a/src/list2int.c b/src/list2int.c
index 82e2df7..da0a707 100644
--- a/src/list2int.c
+++ b/src/list2int.c
@@ -20,7 +20,7 @@
#include "zexy.h"
#include <string.h>
-static t_class *list2int_class;
+static t_class *list2int_class=NULL;
static void list2int_any(t_mypdlist *x, t_symbol *s, int argc,
t_atom *argv)
@@ -75,22 +75,30 @@ static void mypdlist_free(t_mypdlist *x)
{
freebytes(x->x_list, x->x_n * sizeof(t_atom));
}
-
-void list2int_setup(void)
+static t_class* zclass_setup(const char*name)
+{
+ t_class *c = class_new(gensym(name),
+ (t_newmethod)list2int_new, (t_method)mypdlist_free,
+ sizeof(t_mypdlist), 0, A_GIMME, 0);
+ class_addanything(c, list2int_any);
+ class_addlist(c, list2int_any);
+ class_addbang(c, list2int_bang);
+ class_addfloat(c, list2int_float);
+ class_addsymbol(c, list2int_symbol);
+ class_addpointer(c, list2int_pointer);
+ return c;
+}
+static void dosetup()
{
- list2int_class = class_new(gensym("list2int"), (t_newmethod)list2int_new,
- (t_method)mypdlist_free, sizeof(t_mypdlist), 0, A_GIMME, 0);
- class_addcreator((t_newmethod)list2int_new, gensym("l2i"), A_GIMME, 0);
- class_addanything(list2int_class, list2int_any);
- class_addlist(list2int_class, list2int_any);
- class_addbang(list2int_class, list2int_bang);
- class_addfloat(list2int_class, list2int_float);
- class_addsymbol(list2int_class, list2int_symbol);
- class_addpointer(list2int_class, list2int_pointer);
zexy_register("list2int");
+ list2int_class=zclass_setup("list2int");
+ zclass_setup("l2i");
+}
+void list2int_setup(void)
+{
+ dosetup();
}
-
void l2i_setup(void)
{
- list2int_setup();
+ dosetup();
}
diff --git a/src/list2lists.c b/src/list2lists.c
index f027983..0bbcbea 100644
--- a/src/list2lists.c
+++ b/src/list2lists.c
@@ -29,7 +29,7 @@
# define DEBUGFUN(x)
#endif
-static t_class *list2lists_class;
+static t_class *list2lists_class=NULL;
typedef struct _list2lists {
t_object x_obj;
diff --git a/src/list2symbol.c b/src/list2symbol.c
index 03d0ac2..37ff4c9 100644
--- a/src/list2symbol.c
+++ b/src/list2symbol.c
@@ -23,7 +23,7 @@
/* ------------------------- list2symbol ------------------------------- */
-static t_class *list2symbol_class;
+static t_class *list2symbol_class=NULL;
typedef struct _list2symbol {
t_object x_obj;
@@ -34,11 +34,6 @@ typedef struct _list2symbol {
t_outlet*x_outlet;
} t_list2symbol;
-static void list2symbol_connector(t_list2symbol *x, t_symbol *s)
-{
- x->connector = s;
-}
-
static void list2symbol_bang(t_list2symbol *x)
{
t_atom *argv=x->ap;
@@ -150,18 +145,10 @@ static void *list2symbol_new(t_symbol *s, int argc, t_atom *argv)
t_list2symbol *x = (t_list2symbol *)pd_new(list2symbol_class);
x->x_outlet=outlet_new(&x->x_obj, 0);
- x->x_inlet2=inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("symbol"),
- gensym(""));
-
-#if 0
- /* old behaviour: the argument list is used as the list-to-be-converted */
- x->connector = gensym(" ");
- list2symbol_anything(x, 0, argc, argv);
-#else
- /* new behaviour: set the delimiter with the argument */
- list2symbol_connector(x, (argc)?atom_getsymbol(argv):gensym(" "));
-#endif
+ x->x_inlet2=symbolinlet_new(&x->x_obj, &x->connector);
+ /* set the delimiter with the argument */
+ x->connector = (argc)?atom_getsymbol(argv):gensym(" ");
return (x);
}
@@ -176,24 +163,28 @@ static void list2symbol_free(t_list2symbol *x)
inlet_free(x->x_inlet2);
}
-
-void list2symbol_setup(void)
+static t_class* zclass_setup(const char*name)
{
- list2symbol_class = class_new(gensym("list2symbol"),
+ t_class*c = class_new(gensym(name),
(t_newmethod)list2symbol_new,
(t_method)list2symbol_free, sizeof(t_list2symbol), 0,
A_GIMME, 0);
-
- class_addcreator((t_newmethod)list2symbol_new, gensym("l2s"), A_GIMME, 0);
- class_addbang (list2symbol_class, list2symbol_bang);
- class_addlist (list2symbol_class, list2symbol_list);
- class_addanything(list2symbol_class, list2symbol_anything);
- class_addmethod (list2symbol_class, (t_method)list2symbol_connector,
- gensym(""), A_SYMBOL, 0);
-
+ class_addbang (c, list2symbol_bang);
+ class_addlist (c, list2symbol_list);
+ class_addanything(c, list2symbol_anything);
+ return c;
+}
+static void dosetup()
+{
zexy_register("list2symbol");
+ list2symbol_class=zclass_setup("list2symbol");
+ zclass_setup("l2s");
+}
+void list2symbol_setup(void)
+{
+ dosetup();
}
void l2s_setup(void)
{
- list2symbol_setup();
+ dosetup();
}
diff --git a/src/lister.c b/src/lister.c
index 4b7084b..a313bb8 100644
--- a/src/lister.c
+++ b/src/lister.c
@@ -26,7 +26,7 @@
#define LIST_NGETBYTE 100 /* bigger that this we use alloc, not alloca */
-static t_class *mypdlist_class;
+static t_class *lister_class = NULL;
#ifdef HAVE_ALLOCA_H
# define ATOMS_ALLOCA(x, n) ((x) = (t_atom *)((n) < LIST_NGETBYTE ? \
@@ -89,7 +89,7 @@ static void mypdlist_free(t_mypdlist *x)
static void *mypdlist_new(t_symbol *s, int argc, t_atom *argv)
{
- t_mypdlist *x = (t_mypdlist *)pd_new(mypdlist_class);
+ t_mypdlist *x = (t_mypdlist *)pd_new(lister_class);
outlet_new(&x->x_obj, 0);
inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("list"), gensym("lst2"));
@@ -110,24 +110,28 @@ static void mypdlist_help(t_mypdlist*x)
post("\n"HEARTSYMBOL " lister\t\t:: basic list storage (use pd>=0.39 for real [list] objects)");
}
-void lister_setup(void)
-{
- mypdlist_class = class_new(gensym("lister"), (t_newmethod)mypdlist_new,
- (t_method)mypdlist_free, sizeof(t_mypdlist), 0, A_GIMME, 0);
- /* i don't know how to get this work with name=="list" !!! */
-
- class_addcreator((t_newmethod)mypdlist_new, gensym("l"), A_GIMME, 0);
-
- class_addbang (mypdlist_class, mypdlist_bang);
- class_addlist (mypdlist_class, mypdlist_list);
- class_addmethod (mypdlist_class, (t_method)mypdlist_secondlist,
+static t_class* zclass_setup(const char*name) {
+ t_class *c = class_new(gensym(name), (t_newmethod)mypdlist_new,
+ (t_method)mypdlist_free, sizeof(t_mypdlist), 0, A_GIMME, 0);
+ class_addbang (c, mypdlist_bang);
+ class_addlist (c, mypdlist_list);
+ class_addmethod (c, (t_method)mypdlist_secondlist,
gensym("lst2"), A_GIMME, 0);
-
- class_addmethod(mypdlist_class, (t_method)mypdlist_help, gensym("help"),
+ class_addmethod(c, (t_method)mypdlist_help, gensym("help"),
A_NULL);
+ return c;
+}
+static void dosetup()
+{
zexy_register("lister");
+ lister_class = zclass_setup("lister");
+ zclass_setup("l");
+}
+void lister_setup(void)
+{
+ dosetup();
}
void l_setup(void)
{
- lister_setup();
+ dosetup();
}
diff --git a/src/listfind.c b/src/listfind.c
index fe0df1d..ab30b2f 100644
--- a/src/listfind.c
+++ b/src/listfind.c
@@ -29,7 +29,7 @@
# define DEBUGFUN(x)
#endif
-static t_class *listfind_class;
+static t_class *listfind_class=NULL;
typedef struct _listfind {
diff --git a/src/liststorage.c b/src/liststorage.c
index 7139cee..c67abf1 100644
--- a/src/liststorage.c
+++ b/src/liststorage.c
@@ -62,7 +62,7 @@ typedef struct _liststorage {
t_msglist**x_slots;
} t_liststorage;
-static t_class *liststorage_class;
+static t_class *liststorage_class=NULL;
/* ************************************************************************ */
@@ -237,13 +237,11 @@ static void liststorage_bang(t_liststorage *x)
static void liststorage_add(t_liststorage *x, t_symbol *s, int ac,
t_atom *av)
{
- t_msglist*list=NULL;
int slot=_liststorage_checkslot(x,
"attempting to add data to invalid slot", 1);
if(slot<0) {
return;
}
- list=_liststorage_getslot(x, slot);
x->x_slots[slot]=_liststorage_add2slot(x->x_slots[slot], ac, av);
}
@@ -271,7 +269,7 @@ static void liststorage_clearall(t_liststorage *x)
static void liststorage_insert(t_liststorage *x, t_floatarg f)
{
int current=x->x_currentslot;
- int slot=-1;
+ int slot;
int i=0;
x->x_currentslot=f;
diff --git a/src/longload.c b/src/longload.c
index 0e914e7..ead04f1 100644
--- a/src/longload.c
+++ b/src/longload.c
@@ -28,7 +28,7 @@
#endif
-static t_class *longload_class;
+static t_class *longload_class=NULL;
typedef struct _longload {
t_object x_obj;
diff --git a/src/lpt.c b/src/lpt.c
index ae87cfb..d0939ac 100644
--- a/src/lpt.c
+++ b/src/lpt.c
@@ -104,7 +104,7 @@ static int sys_inb(int port)
static int count_iopl = 0;
-static t_class *lpt_class;
+static t_class *lpt_class=NULL;
typedef struct _lpt {
t_object x_obj;
@@ -165,7 +165,8 @@ static void lpt_bang(t_lpt *x)
static void *lpt_new(t_symbol *s, int argc, t_atom *argv)
{
t_lpt *x = (t_lpt *)pd_new(lpt_class);
- char*devname=atom_getsymbol(argv)->s_name;
+ char*devname=0;
+
if(s==gensym("lp")) {
error("lpt: the use of 'lp' has been deprecated; use 'lpt' instead");
}
@@ -183,12 +184,15 @@ static void *lpt_new(t_symbol *s, int argc, t_atom *argv)
switch ((int)((argc)?atom_getfloat(argv):0)) {
case 0:
x->port = BASE0;
+ devname="lpt0";
break;
case 1:
x->port = BASE1;
+ devname="lpt1";
break;
case 2:
x->port = BASE2;
+ devname="lpt2";
break;
default:
error("lpt : only lpt0, lpt1 and lpt2 are accessible");
@@ -196,10 +200,8 @@ static void *lpt_new(t_symbol *s, int argc, t_atom *argv)
return (x);
}
} else {
- /* SYMBOL might be a file or a hex port-number;
- we ignore the file (device) case by now;
- LATER think about this
- */
+ /* SYMBOL might be a file or a hex port-number */
+ devname=atom_getsymbol(argv)->s_name;
x->device=-1;
x->port=strtol(devname, 0, 16);
if(0==x->port) {
@@ -308,7 +310,7 @@ void lpt_setup(void)
lpt_class = class_new(gensym("lpt"),
(t_newmethod)lpt_new, (t_method)lpt_free,
sizeof(t_lpt), 0, A_GIMME, 0);
- class_addcreator((t_newmethod)lpt_new, gensym("lp"), A_GIMME, 0);
+ //class_addcreator((t_newmethod)lpt_new, gensym("lp"), A_GIMME, 0);
class_addfloat(lpt_class, (t_method)lpt_float);
class_addmethod(lpt_class, (t_method)lpt_control, gensym("control"),
diff --git a/src/makesource.sh b/src/makesource.sh
index f4e4629..327435f 100755
--- a/src/makesource.sh
+++ b/src/makesource.sh
@@ -3,11 +3,6 @@
ZEXY_H=z_zexy.h
ZEXY_C=z_zexy.c
-
-GREP=grep
-AWK=awk
-SED=sed
-
#################################
## functions
diff --git a/src/makesymbol.c b/src/makesymbol.c
index b92eb53..80d3bef 100644
--- a/src/makesymbol.c
+++ b/src/makesymbol.c
@@ -47,7 +47,7 @@
/* ----------------------- makesymbol --------------------- */
-static t_class *makesymbol_class;
+static t_class *makesymbol_class=NULL;
typedef struct _makesymbol {
t_object x_obj;
diff --git a/src/matchbox.c b/src/matchbox.c
index 07899d9..3f04efc 100644
--- a/src/matchbox.c
+++ b/src/matchbox.c
@@ -47,7 +47,7 @@
/* match the atoms of 2 lists */
-static t_class *matchbox_class;
+static t_class *matchbox_class=NULL;
typedef struct _listlist {
diff --git a/src/mavg.c b/src/mavg.c
index 943dbb6..ba16881 100644
--- a/src/mavg.c
+++ b/src/mavg.c
@@ -19,7 +19,7 @@
#include "zexy.h"
-static t_class *mavg_class;
+static t_class *mavg_class=NULL;
typedef struct _mavg {
t_object x_obj;
@@ -32,21 +32,24 @@ typedef struct _mavg {
static void mavg_resize(t_mavg *x, t_float f)
{
- int i;
+ int i = (int)f;
t_float *dumbuf;
- f = (int)f;
- if ((f<1) || (f == x->size)) {
+ if ((i<1) || (i == x->size)) {
return;
}
- freebytes(x->buf, sizeof(t_float)*x->size);
- x->n_inv = 1.0/f;
- x->size = f;
- x->buf = getbytes(sizeof(t_float)*x->size);
+ dumbuf = getbytes(sizeof(t_float)*i);
+ if(!dumbuf) {
+ pd_error(x, "unable to allocate memory for %d elements", i);
+ return;
+ }
+ if(x->buf)
+ freebytes(x->buf, sizeof(t_float)*x->size);
+ x->buf = x->wp = dumbuf;
+ x->size = i;
+ x->n_inv = 1.0/(t_float)i;
- dumbuf = x->wp = x->buf;
- i = x->size;
while(i--) {
*dumbuf++ = x->avg;
}
@@ -58,6 +61,8 @@ static void mavg_set(t_mavg *x, t_symbol* UNUSED(s), int argc,
int i = x->size;
t_float *dummy = x->buf;
t_float f=(argc)?atom_getfloat(argv):x->avg;
+ if(!x->buf)
+ return;
while (i--) {
*dummy++=f;
@@ -71,6 +76,8 @@ static void mavg_float(t_mavg *x, t_float f)
int i = x->size;
t_float dummy = 0;
t_float *dumb = x->buf;
+ if(!x->buf)
+ return;
*x->wp++ = f;
if (x->wp == x->buf + x->size) {
@@ -94,15 +101,12 @@ static void *mavg_new(t_floatarg f)
outlet_new(&x->x_obj, gensym("float"));
inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("float"), gensym(""));
+ x->size = 0;
+ x->buf = x->wp = NULL;
+ x->n_inv = 0.;
+ x->avg = 0.;
- x->buf = x->wp = (t_float *)getbytes(sizeof(t_float) * i);
- x->size = i;
- x->n_inv = 1.0f/(t_float)i;
-
- dumbuf = x->buf;
- while (i--) {
- *dumbuf++=0;
- }
+ mavg_resize(x, i);
return (x);
}
diff --git a/src/minmax.c b/src/minmax.c
index 4dfb6f9..e463442 100644
--- a/src/minmax.c
+++ b/src/minmax.c
@@ -20,7 +20,7 @@
#include "zexy.h"
-static t_class *minmax_class;
+static t_class *minmax_class=NULL;
typedef struct _minmax {
t_object x_obj;
@@ -79,7 +79,7 @@ static void minmax_help(void)
void minmax_setup(void)
{
minmax_class = class_new(gensym("minmax"), (t_newmethod)minmax_new, 0,
- sizeof(t_minmax), 0, A_DEFFLOAT, 0);
+ sizeof(t_minmax), 0, A_NULL);
class_addlist(minmax_class, (t_method)minmax_list);
class_addbang(minmax_class, (t_method)minmax_bang);
diff --git a/src/msgfile.c b/src/msgfile.c
index 9fa3604..1b32877 100644
--- a/src/msgfile.c
+++ b/src/msgfile.c
@@ -81,7 +81,7 @@ typedef struct _msgfile {
} t_msgfile;
-static t_class *msgfile_class;
+static t_class *msgfile_class=NULL;
@@ -94,7 +94,23 @@ static void msgfile_end(t_msgfile *x);
static void msgfile_goto(t_msgfile *x, t_float f);
/* ************************************************************************ */
-/* help functions */
+/* helper functions */
+
+static int is_float(t_atom*a)
+{
+ return (a && A_FLOAT == a->a_type);
+}
+
+static int node_count(t_msgfile *x)
+{
+ t_msglist *dummy = x->start;
+ unsigned int counter = 0;
+ while (dummy && dummy->next) {
+ counter++;
+ dummy = dummy->next;
+ }
+ return counter;
+}
static int node_wherearewe(t_msgfile *x)
{
@@ -271,14 +287,7 @@ static void delete_region(t_msgfile *x, int start, int stop)
int newwhere, oldwhere = node_wherearewe(x);
/* get the number of lists in the buffer */
- t_msglist *dummy = x->start;
- int counter = 0;
-
- /* go to the end of the buffer */
- while (dummy && dummy->next) {
- counter++;
- dummy = dummy->next;
- }
+ int counter = node_count(x);
if ((stop > counter) || (stop == -1)) {
stop = counter;
@@ -427,10 +436,25 @@ static void msgfile_clear(t_msgfile *x)
}
}
+static int atom2rangeint(t_atom*a, int range) {
+ t_float f = atom_getfloat(a);
+ if (f>range)
+ return range;
+ if (f<-range)
+ return -range;
+ return (unsigned int)f;
+}
static void msgfile_delete(t_msgfile *x, t_symbol *s, int ac, t_atom *av)
{
+ int count = node_count(x);
+ int pos = atom2rangeint(av+0, count);
+ if (!is_float(av)) {
+ pd_error(x, "[msgfile] illegal deletion index %s", atom_getsymbol(av)->s_name);
+ return;
+ }
+ if (count<1)
+ return;
if (ac==1) {
- int pos = atom_getfloat(av);
int oldwhere = node_wherearewe(x);
if (pos<0) {
@@ -443,8 +467,12 @@ static void msgfile_delete(t_msgfile *x, t_symbol *s, int ac, t_atom *av)
delete_currentnode(x);
msgfile_goto(x, oldwhere);
} else if (ac==2) {
- int pos1 = atom_getfloat(av++);
- int pos2 = atom_getfloat(av);
+ int pos1 = pos;
+ int pos2 = atom2rangeint(av+1, count);
+ if (!is_float(av+1)) {
+ pd_error(x, "[msgfile] illegal deletion range %s", atom_getsymbol(av+1)->s_name);
+ return;
+ }
if ((pos1 < pos2) || (pos2 == -1)) {
if (pos2+1) {
@@ -663,8 +691,8 @@ static void msgfile_where(t_msgfile *x)
static void msgfile_sort(t_msgfile *x, t_symbol *s0, t_symbol*s1,
t_symbol*r)
{
- post("sorting not implemented yet: '%s', '%s' -> '%s'", s0->s_name,
- s1->s_name, r->s_name);
+ pd_error(x, "sorting not implemented yet: '%s', '%s' -> '%s'", s0->s_name,
+ s1->s_name, r->s_name);
#if 0
@@ -820,7 +848,6 @@ static void msgfile_read2(t_msgfile *x, t_symbol *filename,
pd_error(x, "msgfile: read error (headroom %d too small!)",
MSGFILE_HEADROOM);
goto read_error;
- break;
}
if (*bufptr == separator) {
*cbb = ' ';
diff --git a/src/multiline~.c b/src/multiline~.c
index c2f1707..4e11e24 100644
--- a/src/multiline~.c
+++ b/src/multiline~.c
@@ -38,7 +38,7 @@
/* --------------------------- multiline~ ---------------------------------- */
-static t_class *mline_class;
+static t_class *mline_class=NULL;
typedef struct _mline {
t_object x_obj;
@@ -296,7 +296,8 @@ void multiline_tilde_setup(void)
(t_method)mline_free,
sizeof(t_mline), 0, A_GIMME, 0);
- class_addmethod(mline_class, (t_method)mline_dsp, gensym("dsp"), 0);
+ class_addmethod(mline_class, (t_method)mline_dsp, gensym("dsp"),
+ A_CANT, 0);
class_addmethod(mline_class, nullfn, gensym("signal"), 0);
class_addmethod(mline_class, (t_method)mline_list, gensym(""), A_GIMME, 0);
diff --git a/src/multiplex.c b/src/multiplex.c
index 24faeea..603ccf2 100644
--- a/src/multiplex.c
+++ b/src/multiplex.c
@@ -43,15 +43,15 @@
a multiplexer
*/
-static t_class *mux_class;
-static t_class *muxproxy_class;
+static t_class *mux_class=NULL;
+static t_class *muxproxy_class=NULL;
typedef struct _mux {
t_object x_obj;
struct _muxproxy **x_proxy;
int i_count;
- int i_selected;
+ float f_selected;
t_inlet **in;
} t_mux;
@@ -62,16 +62,11 @@ typedef struct _muxproxy {
int id;
} t_muxproxy;
-static void mux_select(t_mux *x, t_float f)
-{
- x->i_selected=f;
-}
-
static void mux_anything(t_muxproxy *y, t_symbol *s, int argc,
t_atom *argv)
{
t_mux*x=y->p_master;
- if(y->id==x->i_selected) {
+ if(y->id==(int)x->f_selected) {
outlet_anything(x->x_obj.ob_outlet, s, argc, argv);
}
}
@@ -81,7 +76,7 @@ static void *mux_new(t_symbol *s, int argc, t_atom *argv)
int n = (argc < 2)?2:argc;
t_mux *x = (t_mux *)pd_new(mux_class);
- x->i_selected=0;
+ x->f_selected=0;
x->i_count = n;
x->in = (t_inlet **)getbytes(x->i_count * sizeof(t_inlet *));
x->x_proxy = (t_muxproxy**)getbytes(x->i_count * sizeof(t_muxproxy*));
@@ -93,7 +88,7 @@ static void *mux_new(t_symbol *s, int argc, t_atom *argv)
x->in[n] = inlet_new ((t_object*)x, (t_pd*)x->x_proxy[n], 0,0);
}
- inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("float"), gensym(""));
+ floatinlet_new(&x->x_obj, &x->f_selected);
outlet_new(&x->x_obj, 0);
return (x);
@@ -124,27 +119,27 @@ static void mux_free(t_mux*x)
/* pd_free(&y->p_pd); */
}
-
-void multiplex_setup(void)
+static t_class* zclass_setup(const char*name)
{
- mux_class = class_new(gensym("multiplex"), (t_newmethod)mux_new,
- (t_method)mux_free, sizeof(t_mux), CLASS_NOINLET, A_GIMME, 0);
- class_addcreator((t_newmethod)mux_new, gensym("mux"), A_GIMME, 0);
-
- class_addmethod (mux_class, (t_method)mux_select, gensym(""), A_DEFFLOAT,
- 0);
-
+ t_class*c = class_new(gensym(name), (t_newmethod)mux_new,
+ (t_method)mux_free, sizeof(t_mux), CLASS_NOINLET, A_GIMME, 0);
+ return c;
+}
+static void dosetup()
+{
+ zexy_register("multiplex");
+ mux_class=zclass_setup("multiplex");
+ zclass_setup("mux");
muxproxy_class = class_new(0, 0, 0,
sizeof(t_muxproxy),
CLASS_PD | CLASS_NOINLET, 0);
class_addanything(muxproxy_class, mux_anything);
-
-
- zexy_register("multiplex");
}
-
+void multiplex_setup(void)
+{
+ dosetup();
+}
void mux_setup(void)
{
- multiplex_setup();
+ dosetup();
}
-
diff --git a/src/multiplex~.c b/src/multiplex~.c
index b384492..f1ec114 100644
--- a/src/multiplex~.c
+++ b/src/multiplex~.c
@@ -19,7 +19,7 @@
#include "zexy.h"
-static t_class *mux_tilde_class;
+static t_class *mux_tilde_class=NULL;
typedef struct _mux {
t_object x_obj;
@@ -106,25 +106,34 @@ static void *mux_tilde_new(t_symbol* UNUSED(s), int argc,
return (x);
}
-
-void multiplex_tilde_setup(void)
+static t_class* zclass_setup(const char*name)
{
- mux_tilde_class = class_new(gensym("multiplex~"),
- (t_newmethod)mux_tilde_new, (t_method)mux_tilde_free, sizeof(t_mux), 0,
- A_GIMME, 0);
- class_addcreator((t_newmethod)mux_tilde_new, gensym("mux~"), A_GIMME, 0);
+ t_class*c = class_new(gensym(name),
+ (t_newmethod)mux_tilde_new, (t_method)mux_tilde_free,
+ sizeof(t_mux), 0, A_GIMME, 0);
+
+ /* ouch, that hurts... */
+ class_addfloat(c, mux_tilde_input);
- class_addfloat(mux_tilde_class, mux_tilde_input);
- class_addmethod(mux_tilde_class, (t_method)mux_tilde_dsp, gensym("dsp"),
- 0);
- class_addmethod(mux_tilde_class, nullfn, gensym("signal"), 0);
+ class_addmethod(c, (t_method)mux_tilde_dsp, gensym("dsp"),
+ A_CANT, 0);
+ class_addmethod(c, nullfn, gensym("signal"), 0);
- class_addmethod(mux_tilde_class, (t_method)mux_tilde_helper,
+ class_addmethod(c, (t_method)mux_tilde_helper,
gensym("help"), 0);
+ return c;
+}
+static void dosetup()
+{
zexy_register("multiplex~");
+ mux_tilde_class=zclass_setup("multiplex~");
+ zclass_setup("mux~");
+}
+void multiplex_tilde_setup(void)
+{
+ dosetup();
}
void mux_tilde_setup(void)
{
- multiplex_tilde_setup();
+ dosetup();
}
-
diff --git a/src/multireceive.c b/src/multireceive.c
index 77c4707..b6bbce3 100644
--- a/src/multireceive.c
+++ b/src/multireceive.c
@@ -21,6 +21,12 @@
#include "zexy.h"
+#ifdef _WIN32
+# include <sys/timeb.h>
+#else
+# include <sys/time.h>
+#endif
+
/* -------------------------- multireceive ------------------------------ */
static t_class *multireceive_class=NULL;
@@ -43,6 +49,26 @@ typedef struct _multireceive {
t_outlet *x_out;
} t_multireceive;
+
+static unsigned long long unique(void) {
+ unsigned long long uid = 0;
+#ifdef _WIN32
+ struct _timeb tb;
+ _ftime(&tb);
+ uid=(((unsigned long long)tb.time)<<(4*sizeof(uid))) | (unsigned long long)(tb.millitm);
+#else
+ struct timeval tv;
+ struct timezone tz;
+
+ gettimeofday(&tv, 0);
+
+ /* First get the seconds right */
+ uid=((unsigned long)tv.tv_sec)<<(4*sizeof(uid)) | tv.tv_usec;
+#endif
+ return uid;
+}
+
+
static void multireceive_any(t_multireceive_proxy *x, t_symbol*s, int argc,
t_atom*argv)
{
@@ -133,6 +159,9 @@ static void *multireceive_new(t_symbol *s, int argc, t_atom *argv)
void multireceive_setup(void)
{
+ char uniqsym[MAXPDSTRING];
+ unsigned long long uid=unique();
+
multireceive_class = class_new(gensym("multireceive"),
(t_newmethod)multireceive_new,
(t_method)multireceive_free,
@@ -148,9 +177,10 @@ void multireceive_setup(void)
(t_method)multireceive_add,
gensym("add"),
A_SYMBOL, 0);
-
+ snprintf(uniqsym, MAXPDSTRING-2, "multireceive proxy %0llx", uid);
+ uniqsym[MAXPDSTRING-1]=0;
multireceive_proxy_class = class_new(
- gensym("multireceive proxy "__DATE__""__TIME__""),
+ gensym(uniqsym),
0, 0,
sizeof(t_multireceive_proxy),
CLASS_PD | CLASS_NOINLET, 0);
diff --git a/src/niagara.c b/src/niagara.c
index ccedb42..2e00fe0 100644
--- a/src/niagara.c
+++ b/src/niagara.c
@@ -28,7 +28,7 @@
nowadays you can do this with [list split] (though this cannot handle negative indices)
*/
-static t_class *niagara_class;
+static t_class *niagara_class=NULL;
typedef struct _niagara {
t_object x_obj;
@@ -61,7 +61,7 @@ static void niagara_any(t_niagara *x, t_symbol *s, int argc, t_atom *argv)
{
int n_l, n_r;
t_atom *ap_l, *ap_r;
- t_symbol *s_r, *s_l;
+ t_symbol *s_l;
int dumrock = x->rock;
int rock = ((dumrock < 0.f)?(argc+dumrock):dumrock-1);
@@ -73,7 +73,7 @@ static void niagara_any(t_niagara *x, t_symbol *s, int argc, t_atom *argv)
ap_r = &argv[n_l];
if (n_r) {
- s_r = 0;
+ t_symbol *s_r = 0;
if (ap_r->a_type == A_FLOAT) {
s_r = gensym("list");
} else {
@@ -106,7 +106,8 @@ static void *niagara_new(t_floatarg f)
void niagara_setup(void)
{
niagara_class = class_new(gensym("niagara"), (t_newmethod)niagara_new,
- 0, sizeof(t_niagara), 0, A_DEFFLOAT, 0);
+ 0, sizeof(t_niagara), 0,
+ A_DEFFLOAT, A_NULL);
class_addlist (niagara_class, niagara_list);
class_addanything(niagara_class, niagara_any);
diff --git a/src/noish~.c b/src/noish~.c
index feae156..e55fd30 100644
--- a/src/noish~.c
+++ b/src/noish~.c
@@ -68,7 +68,7 @@ static void set_noisseed(t_nois *x, t_floatarg seed)
/* ------------------------ noish~ ----------------------------- */
-static t_class *noish_class;
+static t_class *noish_class=NULL;
static t_int *noish_perform(t_int *w)
{
@@ -173,10 +173,12 @@ static void *noish_new(t_floatarg f)
void noish_tilde_setup(void)
{
noish_class = class_new(gensym("noish~"), (t_newmethod)noish_new, 0,
- sizeof(t_nois), 0, A_DEFFLOAT, 0);
+ sizeof(t_nois), 0,
+ A_DEFFLOAT, A_NULL);
class_addfloat(noish_class, set_freq);
- class_addmethod(noish_class, (t_method)noish_dsp, gensym("dsp"), 0);
+ class_addmethod(noish_class, (t_method)noish_dsp, gensym("dsp"),
+ A_CANT, 0);
class_addmethod(noish_class, (t_method)set_noisseed, gensym("seed"),
A_FLOAT, 0);
diff --git a/src/noisi~.c b/src/noisi~.c
index 8158c59..f30f7b3 100644
--- a/src/noisi~.c
+++ b/src/noisi~.c
@@ -69,7 +69,7 @@ static void set_noisseed(t_nois *x, t_floatarg seed)
/* ------------------------ noisi~ ----------------------------- */
-static t_class *noisi_class;
+static t_class *noisi_class=NULL;
static inline t_sample int2sample(int i)
{
@@ -177,10 +177,12 @@ static void *noisi_new(t_floatarg f)
void noisi_tilde_setup(void)
{
noisi_class = class_new(gensym("noisi~"), (t_newmethod)noisi_new, 0,
- sizeof(t_nois), 0, A_DEFFLOAT, 0);
+ sizeof(t_nois), 0,
+ A_DEFFLOAT, A_NULL);
class_addfloat(noisi_class, set_noisfreq);
- class_addmethod(noisi_class, (t_method)noisi_dsp, gensym("dsp"), 0);
+ class_addmethod(noisi_class, (t_method)noisi_dsp, gensym("dsp"),
+ A_CANT, 0);
class_addmethod(noisi_class, (t_method)set_noisseed, gensym("seed"),
A_FLOAT, 0);
diff --git a/src/operating_system.c b/src/operating_system.c
index cd25f90..c5265e2 100644
--- a/src/operating_system.c
+++ b/src/operating_system.c
@@ -25,7 +25,7 @@
MESSAGE OPERATING_SYSTEM: simple and easy
*/
-static t_class *operating_system_class;
+static t_class *operating_system_class=NULL;
typedef struct _operating_system {
t_object x_obj;
@@ -64,7 +64,8 @@ void operating_system_setup(void)
{
operating_system_class = class_new(gensym("operating_system"),
(t_newmethod)operating_system_new,
- 0, sizeof(t_operating_system), 0, A_NULL);
+ 0, sizeof(t_operating_system), 0,
+ A_NULL);
class_addbang (operating_system_class, operating_system_bang);
class_addmethod(operating_system_class, (t_method)operating_system_help,
diff --git a/src/pack.c b/src/pack.c
index b07f6a8..3ea3237 100644
--- a/src/pack.c
+++ b/src/pack.c
@@ -30,8 +30,8 @@
/* ------------------------- zexy/pack ------------------------------- */
-static t_class *zpack_class;
-static t_class *zpackproxy_class;
+static t_class *zpack_class=NULL;
+static t_class *zpackproxy_class=NULL;
typedef struct _zpack {
t_object x_obj;
diff --git a/src/packel.c b/src/packel.c
index 5329908..2da3d8f 100644
--- a/src/packel.c
+++ b/src/packel.c
@@ -19,7 +19,7 @@
#include "zexy.h"
-static t_class *packel_class;
+static t_class *packel_class=NULL;
typedef struct _packel {
t_object x_obj;
diff --git a/src/pack~.c b/src/pack~.c
index 5ec6085..15ac791 100644
--- a/src/pack~.c
+++ b/src/pack~.c
@@ -19,7 +19,7 @@
#include "zexy.h"
-static t_class *sigpack_class;
+static t_class *sigpack_class=NULL;
typedef struct _sigpack {
t_object x_obj;
@@ -94,9 +94,11 @@ void pack_tilde_setup(void)
{
sigpack_class = class_new(gensym("pack~"), (t_newmethod)sigpack_new,
(t_method)sigpack_free,
- sizeof(t_sigpack), 0, A_DEFFLOAT, 0);
+ sizeof(t_sigpack), 0,
+ A_NULL);
class_addmethod(sigpack_class, nullfn, gensym("signal"), 0);
- class_addmethod(sigpack_class, (t_method)sigpack_dsp, gensym("dsp"), 0);
+ class_addmethod(sigpack_class, (t_method)sigpack_dsp, gensym("dsp"),
+ A_CANT, 0);
class_addmethod(sigpack_class, (t_method)sigpack_help, gensym("help"), 0);
diff --git a/src/pdf~.c b/src/pdf~.c
index b3a950b..17abcbf 100644
--- a/src/pdf~.c
+++ b/src/pdf~.c
@@ -21,7 +21,7 @@
/* ------------------------ pdf~ ----------------------------- */
-static t_class *pdf_class;
+static t_class *pdf_class=NULL;
typedef struct _pdf {
t_object x_obj;
@@ -137,7 +137,8 @@ void pdf_tilde_setup(void)
sizeof(t_pdf), 0, A_DEFFLOAT, 0);
class_addmethod(pdf_class, nullfn, gensym("signal"), 0);
- class_addmethod(pdf_class, (t_method)pdf_dsp, gensym("dsp"), 0);
+ class_addmethod(pdf_class, (t_method)pdf_dsp, gensym("dsp"),
+ A_CANT, 0);
class_addmethod(pdf_class, (t_method)pdf_bang, gensym("bang"), 0);
class_addmethod(pdf_class, (t_method)clear_pdfbuf, gensym("clear"), 0);
diff --git a/src/prime.c b/src/prime.c
index 81a77f4..41ad2a6 100644
--- a/src/prime.c
+++ b/src/prime.c
@@ -20,7 +20,7 @@
#include "zexy.h"
-static t_class *prime_class;
+static t_class *prime_class=NULL;
typedef struct _prime {
t_object x_obj;
diff --git a/src/quantize~.c b/src/quantize~.c
index 47c27ef..e6dce22 100644
--- a/src/quantize~.c
+++ b/src/quantize~.c
@@ -28,7 +28,7 @@
/* ------------------------ quantize~ ----------------------------- */
-static t_class *quantize_class;
+static t_class *quantize_class=NULL;
typedef struct _quantize {
t_object x_obj;
@@ -110,7 +110,8 @@ void quantize_tilde_setup(void)
0,
sizeof(t_quantize), 0, A_DEFFLOAT, 0);
class_addmethod(quantize_class, nullfn, gensym("signal"), 0);
- class_addmethod(quantize_class, (t_method)quantize_dsp, gensym("dsp"), 0);
+ class_addmethod(quantize_class, (t_method)quantize_dsp, gensym("dsp"),
+ A_CANT, 0);
class_addfloat(quantize_class, quantize_float);
class_addmethod(quantize_class, (t_method)quantize_8bit, gensym("8bit"),
diff --git a/src/rawprint.c b/src/rawprint.c
index e36495b..8d2b5b2 100644
--- a/src/rawprint.c
+++ b/src/rawprint.c
@@ -30,7 +30,7 @@
# endif
#endif
-static t_class *rawprint_class;
+static t_class *rawprint_class=NULL;
typedef struct _rawprint {
t_object x_obj;
diff --git a/src/regex.c b/src/regex.c
index 8c32b37..a749f78 100644
--- a/src/regex.c
+++ b/src/regex.c
@@ -34,7 +34,7 @@
/* match a regular expression against a string */
-static t_class *regex_class;
+static t_class *regex_class=NULL;
typedef struct _regex {
t_object x_obj;
@@ -76,11 +76,11 @@ static char*regex_l2s(int *reslen, t_symbol*s, int argc, t_atom*argv)
i=argc;
ap=argv;
while(i--) {
- char buffer[MAXPDSTRING];
int len=0;
if(A_SYMBOL==ap->a_type) {
len=strlen(ap->a_w.w_symbol->s_name);
} else {
+ char buffer[MAXPDSTRING];
atom_string(ap, buffer, MAXPDSTRING);
len=strlen(buffer);
}
diff --git a/src/relay.c b/src/relay.c
index 246e1f2..e0bc4ad 100644
--- a/src/relay.c
+++ b/src/relay.c
@@ -38,7 +38,7 @@
/* -------------------------- relay ------------------------------ */
-static t_class *relay_class;
+static t_class *relay_class=NULL;
typedef struct _relayelement {
t_word e_w;
@@ -56,9 +56,9 @@ typedef struct _relay {
static void relay_anything(t_relay *x, t_symbol *sel, int argc,
t_atom *argv)
{
- t_relayelement *e;
- int nelement;
if (x->x_type == A_SYMBOL) {
+ int nelement;
+ t_relayelement *e;
for (nelement = x->x_nelement, e = x->x_vec; nelement--; e++) {
if (e->e_w.w_symbol == sel) {
outlet_anything(e->e_outlet, sel, argc, argv);
diff --git a/src/repack.c b/src/repack.c
index 51ceb14..6816005 100644
--- a/src/repack.c
+++ b/src/repack.c
@@ -29,7 +29,7 @@
the second inlet lets you change the default package size
*/
-static t_class *repack_class;
+static t_class *repack_class=NULL;
typedef struct _repack {
t_object x_obj;
diff --git a/src/repeat.c b/src/repeat.c
index dfd07b1..b253dc2 100644
--- a/src/repeat.c
+++ b/src/repeat.c
@@ -21,7 +21,7 @@
/* ------------------------- repeat ------------------------------- */
-static t_class *repeat_class;
+static t_class *repeat_class=NULL;
typedef struct _repeat {
t_object x_obj;
diff --git a/src/route~.c b/src/route~.c
index aa073ba..98b68a3 100644
--- a/src/route~.c
+++ b/src/route~.c
@@ -19,7 +19,7 @@
#include "zexy.h"
-static t_class *route_tilde_class;
+static t_class *route_tilde_class=NULL;
typedef struct _route_tilde {
t_object x_obj;
diff --git a/src/sfplay.c b/src/sfplay.c
index a577605..b4865e8 100644
--- a/src/sfplay.c
+++ b/src/sfplay.c
@@ -81,7 +81,7 @@ ritsch at iem.kug.ac.at */
# define BINREADMODE "r"
#endif
-static t_class *sfplay_class;
+static t_class *sfplay_class=NULL;
typedef struct _sfplay {
t_object x_obj;
@@ -596,7 +596,7 @@ static void sfplay_dsp(t_sfplay *x, t_signal **sp)
/* create sfplay with args <channels> <skip> */
-static void *sfplay_new(t_floatarg chan,t_floatarg skip)
+static void *sfplay_new(t_floatarg chan, t_floatarg skip)
{
t_sfplay *x = (t_sfplay *)pd_new(sfplay_class);
t_int c = chan;
@@ -666,9 +666,11 @@ void sfplay_setup(void)
{
sfplay_class = class_new(gensym("sfplay"), (t_newmethod)sfplay_new,
(t_method)sfplay_free,
- sizeof(t_sfplay), 0, A_DEFFLOAT, A_DEFFLOAT,0);
+ sizeof(t_sfplay), 0,
+ A_DEFFLOAT, A_DEFFLOAT, A_NULL);
class_addmethod(sfplay_class, nullfn, gensym("signal"), 0);
- class_addmethod(sfplay_class, (t_method)sfplay_dsp, gensym("dsp"), 0);
+ class_addmethod(sfplay_class, (t_method)sfplay_dsp, gensym("dsp"),
+ A_CANT, 0);
class_addmethod(sfplay_class, (t_method)sfplay_helper, gensym("help"),
A_NULL);
diff --git a/src/sfrecord.c b/src/sfrecord.c
index 0256281..c9e4148 100644
--- a/src/sfrecord.c
+++ b/src/sfrecord.c
@@ -53,7 +53,7 @@ zmoelnig at iem.kug.ac.at
# define BINWRITEMODE "w"
#endif
-static t_class *sfrecord_class;
+static t_class *sfrecord_class=NULL;
typedef struct _sfrecord {
t_object x_obj;
@@ -610,9 +610,11 @@ void sfrecord_setup(void)
{
sfrecord_class = class_new(gensym("sfrecord"), (t_newmethod)sfrecord_new,
(t_method)sfrecord_free,
- sizeof(t_sfrecord), 0, A_DEFFLOAT, A_DEFFLOAT,0);
+ sizeof(t_sfrecord), 0,
+ A_DEFFLOAT, A_NULL);
class_addmethod(sfrecord_class, nullfn, gensym("signal"), 0);
- class_addmethod(sfrecord_class, (t_method)sfrecord_dsp, gensym("dsp"), 0);
+ class_addmethod(sfrecord_class, (t_method)sfrecord_dsp, gensym("dsp"),
+ A_CANT, 0);
/* method open with filename */
class_addmethod(sfrecord_class, (t_method)sfrecord_open, gensym("open"),
diff --git a/src/sgn~.c b/src/sgn~.c
index 5dda84e..8d570a8 100644
--- a/src/sgn~.c
+++ b/src/sgn~.c
@@ -26,7 +26,7 @@ typedef struct _sgnTilde {
/* ------------------------ sgn~ ----------------------------- */
-static t_class *sgnTilde_class;
+static t_class *sgnTilde_class=NULL;
static t_int *sgnTilde_perform(t_int *w)
{
@@ -198,9 +198,10 @@ static void *sgnTilde_new(void)
void sgn_tilde_setup(void)
{
sgnTilde_class = class_new(gensym("sgn~"), (t_newmethod)sgnTilde_new, 0,
- sizeof(t_sgnTilde), 0, A_DEFFLOAT, 0);
+ sizeof(t_sgnTilde), 0, A_NULL);
class_addmethod(sgnTilde_class, nullfn, gensym("signal"), 0);
- class_addmethod(sgnTilde_class, (t_method)sgnTilde_dsp, gensym("dsp"), 0);
+ class_addmethod(sgnTilde_class, (t_method)sgnTilde_dsp, gensym("dsp"),
+ A_CANT, 0);
class_addmethod(sgnTilde_class, (t_method)sgnTilde_helper, gensym("help"),
0);
diff --git a/src/sigzero~.c b/src/sigzero~.c
index 1364382..da0e5ef 100644
--- a/src/sigzero~.c
+++ b/src/sigzero~.c
@@ -26,7 +26,7 @@
#include "zexy.h"
-static t_class *sigzero_class;
+static t_class *sigzero_class=NULL;
typedef struct _sigzero {
t_object x_obj;
@@ -55,9 +55,9 @@ static t_int *sigzero_perform(t_int *w)
t_sigzero *x = (t_sigzero *)w[2];
int n = (int)w[3];
- int non_zero = 0;
if (x->activate) {
+ int non_zero = 0;
while (n--) {
if (*in++ != 0.) {
non_zero = 1;
@@ -104,7 +104,8 @@ void sigzero_tilde_setup(void)
class_addmethod(sigzero_class, (t_method)sigzero_off, gensym("off"), 0);
class_addmethod(sigzero_class, nullfn, gensym("signal"), 0);
- class_addmethod(sigzero_class, (t_method)sigzero_dsp, gensym("dsp"), 0);
+ class_addmethod(sigzero_class, (t_method)sigzero_dsp, gensym("dsp"),
+ A_CANT, 0);
class_addmethod(sigzero_class, (t_method)sigzero_tilde_helper,
gensym("help"), 0);
diff --git a/src/sleepgrain.c b/src/sleepgrain.c
index 8fe75ce..84838a8 100644
--- a/src/sleepgrain.c
+++ b/src/sleepgrain.c
@@ -24,7 +24,7 @@ EXTERN int* get_sys_sleepgrain(void ) ;
/* ------------------------- sleepgrain ------------------------------- */
-static t_class *sleepgrain_class;
+static t_class *sleepgrain_class=NULL;
typedef struct _sleepgrain {
t_object x_obj;
diff --git a/src/sort.c b/src/sort.c
index e0574a7..072f10e 100644
--- a/src/sort.c
+++ b/src/sort.c
@@ -25,7 +25,7 @@
SHELL SORT: simple and easy
*/
-static t_class *sort_class;
+static t_class *sort_class=NULL;
typedef struct _sort {
t_object x_obj;
diff --git a/src/step~.c b/src/step~.c
index 6fed675..8addf9e 100644
--- a/src/step~.c
+++ b/src/step~.c
@@ -33,7 +33,7 @@
/* ------------------------ step~ ----------------------------- */
-static t_class *step_class;
+static t_class *step_class=NULL;
typedef struct _step {
t_object x_obj;
@@ -138,7 +138,8 @@ void step_tilde_setup(void)
class_addbang(step_class, step_bang);
class_addmethod(step_class, (t_method)step_setlength, gensym("ft1"),
A_FLOAT, 0);
- class_addmethod(step_class, (t_method)step_dsp, gensym("dsp"), 0);
+ class_addmethod(step_class, (t_method)step_dsp, gensym("dsp"),
+ A_CANT, 0);
class_addmethod(step_class, (t_method)step_helper, gensym("help"), 0);
diff --git a/src/strcmp.c b/src/strcmp.c
index 69fe953..7a1b116 100644
--- a/src/strcmp.c
+++ b/src/strcmp.c
@@ -25,8 +25,8 @@
/* compare 2 lists ( == for lists) */
-static t_class *strcmp_class;
-static t_class *strcmp_proxy_class;
+static t_class *strcmp_class=NULL;
+static t_class *strcmp_proxy_class=NULL;
typedef struct _strcmp {
diff --git a/src/sum.c b/src/sum.c
index 419b9d0..8f38d08 100644
--- a/src/sum.c
+++ b/src/sum.c
@@ -19,7 +19,7 @@
#include "zexy.h"
-static t_class *sum_class;
+static t_class *sum_class=NULL;
typedef struct _sum {
t_object x_obj;
@@ -53,7 +53,7 @@ static void sum_help(void)
void sum_setup(void)
{
sum_class = class_new(gensym("sum"), (t_newmethod)sum_new, 0,
- sizeof(t_sum), 0, A_DEFFLOAT, 0);
+ sizeof(t_sum), 0, A_NULL);
class_addlist(sum_class, (t_method)sum_list);
class_addmethod(sum_class, (t_method)sum_help, gensym("help"), 0);
diff --git a/src/swap~.c b/src/swap~.c
index c82b383..7f6ec35 100644
--- a/src/swap~.c
+++ b/src/swap~.c
@@ -30,7 +30,7 @@
#define FLOAT2SHORT 32768.
#define SHORT2FLOAT 1./32768.
-static t_class *swap_class;
+static t_class *swap_class=NULL;
typedef struct _swap {
t_object x_obj;
@@ -96,7 +96,8 @@ void swap_tilde_setup(void)
swap_class = class_new(gensym("swap~"), (t_newmethod)swap_new, 0,
sizeof(t_swap), 0, A_NULL);
class_addmethod(swap_class, nullfn, gensym("signal"), 0);
- class_addmethod(swap_class, (t_method)swap_dsp, gensym("dsp"), 0);
+ class_addmethod(swap_class, (t_method)swap_dsp, gensym("dsp"),
+ A_CANT, 0);
class_addfloat(swap_class, swap_float);
class_addbang(swap_class, swap_bang);
diff --git a/src/symbol2list.c b/src/symbol2list.c
index 935b2be..637e30d 100644
--- a/src/symbol2list.c
+++ b/src/symbol2list.c
@@ -23,7 +23,7 @@
/* ------------------------- symbol2list ------------------------------- */
-static t_class *symbol2list_class;
+static t_class *symbol2list_class = NULL;
typedef struct _symbol2list {
t_object x_obj;
@@ -166,24 +166,31 @@ static void symbol2list_help(t_symbol2list*x)
{
post("\n"HEARTSYMBOL " symbol2list\t:: split a symbol into a list of atoms");
}
-
-void symbol2list_setup(void)
+static t_class* zclass_setup(const char*name)
{
- symbol2list_class = class_new(gensym("symbol2list"),
- (t_newmethod)symbol2list_new,
- (t_method)symbol2list_free, sizeof(t_symbol2list), 0, A_GIMME, 0);
-
- class_addcreator((t_newmethod)symbol2list_new, gensym("s2l"), A_GIMME, 0);
- class_addsymbol (symbol2list_class, symbol2list_symbol);
- class_addbang (symbol2list_class, symbol2list_bang);
- class_addmethod (symbol2list_class, (t_method)symbol2list_delimiter,
+ t_class*c = class_new(gensym(name),
+ (t_newmethod)symbol2list_new,
+ (t_method)symbol2list_free,
+ sizeof(t_symbol2list), 0, A_GIMME, 0);
+ class_addsymbol (c, symbol2list_symbol);
+ class_addbang (c, symbol2list_bang);
+ class_addmethod (c, (t_method)symbol2list_delimiter,
gensym(""), A_SYMBOL, 0);
- class_addmethod(symbol2list_class, (t_method)symbol2list_help,
+ class_addmethod(c, (t_method)symbol2list_help,
gensym("help"), A_NULL);
-
+ return c;
+}
+static void dosetup()
+{
zexy_register("symbol2list");
+ symbol2list_class=zclass_setup("symbol2list");
+ zclass_setup("s2l");
+}
+void symbol2list_setup(void)
+{
+ dosetup();
}
void s2l_setup(void)
{
- symbol2list_setup();
+ dosetup();
}
diff --git a/src/tabdump.c b/src/tabdump.c
index 03ef061..d724bae 100644
--- a/src/tabdump.c
+++ b/src/tabdump.c
@@ -21,7 +21,7 @@
/* =================== tabdump ====================== */
-static t_class *tabdump_class;
+static t_class *tabdump_class=NULL;
typedef struct _tabdump {
t_object x_obj;
diff --git a/src/tabminmax.c b/src/tabminmax.c
index 89d8026..620d9e1 100644
--- a/src/tabminmax.c
+++ b/src/tabminmax.c
@@ -22,7 +22,7 @@
/* =================== tabminmax ====================== */
-static t_class *tabminmax_class;
+static t_class *tabminmax_class=NULL;
typedef struct _tabminmax {
t_object x_obj;
diff --git a/src/tabread4~~.c b/src/tabread4~~.c
index 96d2003..d3d9e4c 100644
--- a/src/tabread4~~.c
+++ b/src/tabread4~~.c
@@ -23,7 +23,7 @@
/******************** tabread4~~ ***********************/
-static t_class *tabread4_tilde_class;
+static t_class *tabread4_tilde_class=NULL;
typedef struct _tabread4_tilde {
t_object x_obj;
@@ -134,7 +134,7 @@ void tabread4_tilde_tilde_setup(void)
sizeof(t_tabread4_tilde), 0, A_DEFSYM, 0);
CLASS_MAINSIGNALIN(tabread4_tilde_class, t_tabread4_tilde, x_f);
class_addmethod(tabread4_tilde_class, (t_method)tabread4_tilde_dsp,
- gensym("dsp"), 0);
+ gensym("dsp"), A_CANT, 0);
class_addmethod(tabread4_tilde_class, (t_method)tabread4_tilde_set,
gensym("set"), A_SYMBOL, 0);
diff --git a/src/tabset.c b/src/tabset.c
index 70b87a0..9897dc9 100644
--- a/src/tabset.c
+++ b/src/tabset.c
@@ -24,7 +24,7 @@
/* =================== tabset ====================== */
-static t_class *tabset_class;
+static t_class *tabset_class=NULL;
typedef struct _tabset {
t_object x_obj;
diff --git a/src/tavg~.c b/src/tavg~.c
index 6d5ef51..3590ba0 100644
--- a/src/tavg~.c
+++ b/src/tavg~.c
@@ -19,7 +19,7 @@
#include "zexy.h"
-static t_class *tavg_class;
+static t_class *tavg_class=NULL;
typedef struct _tavg {
t_object x_obj;
@@ -76,9 +76,10 @@ static void tavg_help(void)
void tavg_tilde_setup(void)
{
tavg_class = class_new(gensym("tavg~"), (t_newmethod)tavg_new, 0,
- sizeof(t_tavgtilde), 0, A_DEFFLOAT, 0);
+ sizeof(t_tavgtilde), 0, A_NULL);
class_addmethod(tavg_class, nullfn, gensym("signal"), 0);
- class_addmethod(tavg_class, (t_method)tavg_dsp, gensym("dsp"), 0);
+ class_addmethod(tavg_class, (t_method)tavg_dsp, gensym("dsp"),
+ A_CANT, 0);
class_addbang(tavg_class, tavg_bang);
diff --git a/src/time.c b/src/time.c
index 71317ab..772247b 100644
--- a/src/time.c
+++ b/src/time.c
@@ -43,7 +43,7 @@
/* ----------------------- time --------------------- */
-static t_class *time_class;
+static t_class *time_class=NULL;
typedef struct _time {
t_object x_obj;
@@ -59,10 +59,10 @@ typedef struct _time {
static void *time_new(t_symbol* UNUSED(s), int argc, t_atom *argv)
{
t_time *x = (t_time *)pd_new(time_class);
- char buf[5];
x->GMT=0;
if (argc) {
+ char buf[5];
atom_string(argv, buf, 5);
if (buf[0]=='G' && buf[1]=='M' && buf[2]=='T') {
x->GMT = 1;
diff --git a/src/unpack.c b/src/unpack.c
index 7998616..0c19d74 100644
--- a/src/unpack.c
+++ b/src/unpack.c
@@ -32,7 +32,7 @@
/* like pack, but does no type-checking */
-static t_class *zunpack_class;
+static t_class *zunpack_class=NULL;
typedef struct _zunpack {
t_object x_obj;
diff --git a/src/unpack~.c b/src/unpack~.c
index 091f9d3..472fb34 100644
--- a/src/unpack~.c
+++ b/src/unpack~.c
@@ -19,7 +19,7 @@
#include "zexy.h"
-static t_class *sigunpack_class;
+static t_class *sigunpack_class=NULL;
typedef struct _sigunpack {
t_object x_obj;
@@ -130,7 +130,7 @@ void unpack_tilde_setup(void)
0,
sizeof(t_sigunpack), 0, A_DEFFLOAT, 0);
class_addmethod(sigunpack_class, (t_method)sigunpack_dsp, gensym("dsp"),
- 0);
+ A_CANT, 0);
class_addfloat(sigunpack_class, (t_method)sigunpack_float);
class_addlist (sigunpack_class, (t_method)sigunpack_list);
diff --git a/src/urn.c b/src/urn.c
index a7dc2f0..97cb0f2 100644
--- a/src/urn.c
+++ b/src/urn.c
@@ -21,7 +21,7 @@
/* ------------------------- urn ------------------------------- */
-static t_class *urn_class;
+static t_class *urn_class=NULL;
typedef struct _urn {
t_object x_obj;
diff --git a/src/wrap.c b/src/wrap.c
index f410fe3..77cb398 100644
--- a/src/wrap.c
+++ b/src/wrap.c
@@ -18,7 +18,7 @@
*/
#include "zexy.h"
-static t_class *wrap_class;
+static t_class *wrap_class=NULL;
typedef struct _wrap {
t_object x_obj;
diff --git a/src/zexy.c b/src/zexy.c
index e55f04d..1c17a3b 100644
--- a/src/zexy.c
+++ b/src/zexy.c
@@ -38,7 +38,7 @@ typedef struct zexy {
t_object t_ob;
} t_zexy;
-t_class *zexy_class;
+t_class *zexy_class=NULL;
static void zexy_help(void)
{
diff --git a/src/z~.c b/src/z~.c
index 240bac6..324fb0e 100644
--- a/src/z~.c
+++ b/src/z~.c
@@ -29,7 +29,7 @@
/* ----------------------------------------------------- */
-static t_class *zNdelay_class;
+static t_class *zNdelay_class=NULL;
typedef struct _zNdelay {
t_object x_obj;
@@ -151,7 +151,8 @@ void z_tilde_setup(void)
(t_method)zNdelay_free,
sizeof(t_zNdelay), 0, A_GIMME, 0);
class_addmethod(zNdelay_class, nullfn, gensym("signal"), 0);
- class_addmethod(zNdelay_class, (t_method)zNdelay_dsp, gensym("dsp"), 0);
+ class_addmethod(zNdelay_class, (t_method)zNdelay_dsp, gensym("dsp"),
+ A_CANT, 0);
class_addfloat(zNdelay_class, zdel_float);
class_addmethod(zNdelay_class, (t_method)zdel_float, gensym("ft1"),
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 4010f0a..5ead1cd 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,32 +1,68 @@
AUTOMAKE_OPTIONS = foreign
-TESTS_ENVIRONMENT = RUNTESTS_NOLOG=yes TESTDIR=$(srcdir)
-
-TESTS=runtests.sh
-
-clean-local:
- -rm -f runtests.txt
+ at VALGRIND_CHECK_RULES@
EXTRA_DIST = \
README.txt \
+ run1.sh \
+ run1.pd \
runtests.sh \
runtests.bat \
runtests_nogui.pd \
runtests.pd \
- testunit.pd
+ testunit.pd \
+ $(nada)
EXTRA_DIST += \
- msgfile/CR.txt \
msgfile/msgfile.txt \
+ msgfile/CR.txt \
testtests/README.txt \
+ $(TESTS)
+
+TEST_EXTENSIONS = .pd
+PD_LOG_COMPILER = $(srcdir)/run1.sh
+#AM_PD_LOG_FLAGS = -v
+
+AM_TESTS_ENVIRONMENT = SRCDIR=$(top_srcdir)
+AM_TESTS_ENVIRONMENT+= BUILDDIR=$(top_builddir)
+AM_TESTS_ENVIRONMENT+= LIBDIR=$(top_builddir)/src/.libs
+AM_TESTS_ENVIRONMENT+= TESTDIR=$(srcdir)
+AM_TESTS_ENVIRONMENT+= VALGRIND='$(VALGRIND)'
+
+
+
+.PHONY: update
+update: Makefile.am
+ sed -e '0,/@TESTS@/!{0,/@TESTS@/!{/@TESTS@/{N;q}}}' -i $<
+ find */ -type f -name "*.pd" | sort | sed -e 's|^| |' -e 's|$$| \\|' >> $<
+ echo ' $$(nada)' >> $<
+
+XFAIL_TESTS = \
+ testtests/fail_noresult.pd \
+ testtests/fail.pd \
+ testtests/fail_wait0.pd \
+ testtests/fail_wait10.pd \
+ $(nada)
+
+TESTS =
+if LIBRARY
+TESTS += \
+ eq~/dualnoise.pd \
+ eq~/singlenoise.pd \
+ gt~/dualnoise.pd \
+ lt~/dualnoise.pd \
+ $(nada)
+endif LIBRARY
+
+# everything below the line with @TESTS@ is autogenerated
+# DO NOT EDIT!!! instead run 'make Makefile.am'
+#### @TESTS@ ####
+TESTS += \
absgn~/abs.pd \
absgn~/sgn.pd \
abs~/simple.pd \
and~/dualnoise.pd \
and~/singlenoise.pd \
- eq~/dualnoise.pd \
- eq~/singlenoise.pd \
- gt~/dualnoise.pd \
gt~/singlenoise.pd \
help-msg/0x260x260x7e.pd \
help-msg/0x2e.pd \
@@ -103,7 +139,6 @@ EXTRA_DIST += \
list2lists/negativelength.pd \
lister/inline2.pd \
lister/inline.pd \
- lt~/dualnoise.pd \
lt~/singlenoise.pd \
msgfile/add2.pd \
msgfile/empty_at_end.pd \
@@ -114,6 +149,7 @@ EXTRA_DIST += \
msgfile/reentrant.pd \
or~/dualnoise.pd \
or~/singlenoise.pd \
+ relay/floatfloat.pd \
repeat/noargs.pd \
s2l/numsymbols.pd \
sgn~/simple.pd \
@@ -123,4 +159,5 @@ EXTRA_DIST += \
testtests/fail_wait10.pd \
testtests/pass.pd \
testtests/pass_wait0.pd \
- testtests/pass_wait10.pd
+ testtests/pass_wait10.pd \
+ $(nada)
diff --git a/tests/relay/floatfloat.pd b/tests/relay/floatfloat.pd
new file mode 100644
index 0000000..3abc4a7
--- /dev/null
+++ b/tests/relay/floatfloat.pd
@@ -0,0 +1,23 @@
+#N canvas 181 112 569 329 10;
+#X obj 91 107 inlet bang;
+#X obj 91 290 outlet result;
+#X obj 91 128 t b b b;
+#X obj 91 260 i;
+#X msg 107 233 1;
+#X msg 139 233 0;
+#X msg 107 159 1;
+#X obj 107 184 relay 1;
+#X obj 107 206 select 1;
+#X text 38 51 Pd's implicit float->list coercion on the inlet results
+in NULL-selectors \, wich eventually crashes Pd when passed to the
+outlet...;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 1 6 0;
+#X connect 2 2 5 0;
+#X connect 3 0 1 0;
+#X connect 4 0 3 1;
+#X connect 5 0 3 1;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 8 0 4 0;
diff --git a/tests/run1.pd b/tests/run1.pd
new file mode 100644
index 0000000..773035b
--- /dev/null
+++ b/tests/run1.pd
@@ -0,0 +1,12 @@
+#N canvas 359 534 538 390 10;
+#X obj 182 84 r test;
+#X obj 182 106 symbol;
+#X msg 259 171 \; pd dsp 1;
+#X obj 182 197 testunit;
+#X obj 182 128 t s b;
+#X msg 182 227 \; pd quit;
+#X connect 0 0 1 0;
+#X connect 1 0 4 0;
+#X connect 3 0 5 0;
+#X connect 4 0 3 0;
+#X connect 4 1 2 0;
diff --git a/tests/run1.sh b/tests/run1.sh
new file mode 100755
index 0000000..8051182
--- /dev/null
+++ b/tests/run1.sh
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+PD=${PD:=pd}
+LIBDIR=${LIBDIR:=../src/.libs/}
+SRCDIR=${SRCDIR:=../}
+TESTDIR=${TESTDIR:=.}
+
+PD=$(which ${PD})
+TEST=$1
+
+if [ "x${PD}" = "x" ]; then
+ exit 77
+fi
+
+LIBFLAGS="-path ${LIBDIR}:${SRCDIR}/abs:. -lib ${LIBDIR}/zexy"
+TMPFILE=$(mktemp)
+
+${VALGRIND} ${PD} \
+ -noprefs -nostdpath \
+ -oss -nosound -nrt \
+ -nogui -batch -verbose \
+ ${LIBFLAGS} \
+ -open ${TESTDIR}/run1.pd \
+ -send "test ${TEST%.pd}" 2>&1 \
+ | tee "${TMPFILE}"
+
+
+egrep "^regression-test: ${TEST%.pd}: OK" "${TMPFILE}" >/dev/null
+SUCCESS=$?
+
+rm "${TMPFILE}"
+
+exit ${SUCCESS}
diff --git a/tests/runtests.sh b/tests/runtests.sh
index cac1184..6740834 100755
--- a/tests/runtests.sh
+++ b/tests/runtests.sh
@@ -128,7 +128,9 @@ if [ "x${RUNTESTS_NOLOG}" != "x" ]; then
RUNTESTS_FINAL_LOG=
fi
if [ "x${RUNTESTS_FINAL_LOG}" = "x" ]; then
- :
+ if [ ${SUCCESS} -ne 0 ]; then
+ cat "${RUNTESTS_LOG}"
+ fi
else
cat ${RUNTESTS_LOG} >> ${RUNTESTS_FINAL_LOG}
fi
diff --git a/tests/testunit.pd b/tests/testunit.pd
index bc723a7..c58a501 100644
--- a/tests/testunit.pd
+++ b/tests/testunit.pd
@@ -1,10 +1,10 @@
-#N canvas 578 118 585 499 10;
-#N canvas 456 161 474 559 run-test 0;
-#X obj 71 136 symbol;
-#X obj 71 104 inlet test-to-run;
-#X obj 71 514 outlet result;
-#X obj 71 440 pack 0 s;
-#X msg 113 136 bang;
+#N canvas 580 113 585 499 10;
+#N canvas 460 151 515 549 run-test 0;
+#X obj 131 186 symbol;
+#X obj 64 104 inlet test-to-run;
+#X obj 131 514 outlet result;
+#X obj 131 440 pack 0 s;
+#X msg 173 186 bang;
#N canvas 396 344 450 300 print 0;
#X obj 101 247 print regression-test;
#X obj 101 204 pack s s;
@@ -27,10 +27,10 @@
#X connect 8 0 9 0;
#X connect 9 0 2 0;
#X connect 9 1 1 1;
-#X restore 96 491 pd print result;
-#X obj 71 252 t f b;
-#X text 99 217 start regression test;
-#X text 105 251 regression test finished;
+#X restore 156 491 pd print result;
+#X obj 131 302 t f b;
+#X text 159 267 start regression test;
+#X text 165 301 regression test finished;
#N canvas 318 184 905 641 get 0;
#X obj 105 488 outlet;
#X obj 105 26 inlet reset;
@@ -80,14 +80,14 @@ triggers it's own destruction (stack corruption);
#X connect 20 1 22 1;
#X connect 21 0 22 0;
#X connect 22 0 0 0;
-#X restore 71 232 pd get result;
+#X restore 131 282 pd get result;
#X text 64 17 the test MUST return a result!;
#X text 77 64 cons: the regression test suite will block until the
test returns a result (potentially infinitely long)!;
#X text 77 33 pros: the test need not be finished in zero-time (good
for testing signal-objects or timed objects);
-#X obj 71 470 t l l;
-#N canvas 4 49 625 330 create/destroy 0;
+#X obj 131 470 t l l;
+#N canvas 8 48 625 330 create/destroy 0;
#X obj 148 53 inlet;
#X obj 449 48 inlet clear;
#X obj 148 129 pack s \$0;
@@ -107,8 +107,8 @@ for testing signal-objects or timed objects);
#X connect 5 1 3 0;
#X connect 6 0 7 0;
#X connect 8 0 2 0;
-#X restore 146 324 pd create/destroy testpatch;
-#N canvas 0 0 450 300 restartaudio 0;
+#X restore 206 374 pd create/destroy testpatch;
+#N canvas 0 50 450 300 restartaudio 0;
#X obj 113 77 inlet;
#X obj 113 99 t b;
#X msg 113 121 dsp 0 \, dsp 1;
@@ -116,13 +116,15 @@ for testing signal-objects or timed objects);
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
-#X restore 141 186 pd restartaudio;
-#X obj 71 214 t b;
-#X obj 71 186 t b b;
-#X obj 71 164 t b s s s;
-#X obj 142 165 print starting;
+#X restore 201 236 pd restartaudio;
+#X obj 131 264 t b;
+#X obj 131 236 t b b;
+#X obj 131 214 t b s s s;
+#X obj 202 215 print starting;
+#X obj 64 126 route bang;
+#X obj 64 148 t b;
#X connect 0 0 18 0;
-#X connect 1 0 0 0;
+#X connect 1 0 20 0;
#X connect 3 0 13 0;
#X connect 4 0 0 0;
#X connect 6 0 3 0;
@@ -137,6 +139,9 @@ for testing signal-objects or timed objects);
#X connect 18 1 14 0;
#X connect 18 2 3 1;
#X connect 18 3 19 0;
+#X connect 20 0 21 0;
+#X connect 20 1 0 0;
+#X connect 21 0 14 1;
#X restore 94 218 pd run-test;
#X obj 94 243 outlet;
#X obj 94 191 inlet;
@@ -150,6 +155,6 @@ for testing signal-objects or timed objects);
#X text 64 92 if no result is returned immediately \, the test is considered
to be FAILED!;
#X text 63 131 note: we could have this be using "0" as the WAIT result
-\, an no-result as KO \; for legacy reasons we don't;
+\, and no-result as KO \; for legacy reasons we don't;
#X connect 0 0 1 0;
#X connect 2 0 0 0;
--
pd-zexy packaging
More information about the pkg-multimedia-commits
mailing list