aboutsummaryrefslogtreecommitdiff
path: root/cyclone/hammer/prepend.c
diff options
context:
space:
mode:
authorN.N. <krzyszcz@users.sourceforge.net>2005-01-11 10:33:23 +0000
committerN.N. <krzyszcz@users.sourceforge.net>2005-01-11 10:33:23 +0000
commit6435314717c5fb8fa062eb682c72c8df095b1be3 (patch)
tree484d02446358890397a755fc144d4ecf25b38f2d /cyclone/hammer/prepend.c
parentb89456a346e176c4dc536e7de8f14b152cb2b15b (diff)
svf~: args parsing; prepend/Append: bang handling; seq: pause, continue, goto; many maxmode changes
svn path=/trunk/externals/miXed/; revision=2490
Diffstat (limited to 'cyclone/hammer/prepend.c')
-rw-r--r--cyclone/hammer/prepend.c38
1 files changed, 24 insertions, 14 deletions
diff --git a/cyclone/hammer/prepend.c b/cyclone/hammer/prepend.c
index 1b3bd73..2dbe7be 100644
--- a/cyclone/hammer/prepend.c
+++ b/cyclone/hammer/prepend.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2002-2004 krzYszcz and others.
+/* Copyright (c) 2002-2005 krzYszcz and others.
* For information on usage and redistribution, and for a DISCLAIMER OF ALL
* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
@@ -6,6 +6,7 @@
#include "m_pd.h"
#include "common/loud.h"
#include "common/grow.h"
+#include "common/fitter.h"
#define PREPEND_INISIZE 32 /* LATER rethink */
#define PREPEND_MAXSIZE 256
@@ -33,6 +34,9 @@ typedef struct _prependxy
static t_class *prepend_class;
static t_class *prependxy_class;
+static t_symbol *prependps_compatibility = 0;
+static t_symbol *prependps_max;
+
/* Usually a preallocation method is used, except in special cases of:
1) reentrant output request, or 2) an output request which would cause
resizing to more than MAXSIZE (no such limit for a 'set' message).
@@ -149,9 +153,13 @@ static void prepend_bang(t_prepend *x)
{
if (x->x_selector)
{
- t_atom at;
- SETSYMBOL(&at, &s_bang); /* CHECKED */
- prepend_doanything(x, 0, 1, &at);
+ if (prependps_compatibility == prependps_max)
+ {
+ t_atom at;
+ SETSYMBOL(&at, &s_bang); /* CHECKED */
+ prepend_doanything(x, 0, 1, &at);
+ }
+ else prepend_doanything(x, 0, 0, 0);
}
else outlet_bang(((t_object *)x)->ob_outlet);
}
@@ -252,10 +260,11 @@ static void prepend_doset(t_prepend *x, t_symbol *s, int ac, t_atom *av)
static void prepend_set(t_prepend *x, t_symbol *s, int ac, t_atom *av)
{
- if (shared_getmaxcompatibility())
- prepend_doset(x, 0, ac, av);
- else
+ if (x->x_proxy)
prepend_anything(x, s, ac, av);
+ else
+ /* LATER (when?) controlled by maxmode */
+ prepend_doset(x, 0, ac, av);
}
static void prependxy_bang(t_prependxy *xy)
@@ -292,7 +301,7 @@ static void prepend_free(t_prepend *x)
freebytes(x->x_message, x->x_size * sizeof(*x->x_message));
if (x->x_auxbuf)
{
- bug("prepend_free"); /* LATER rethink */
+ loudbug_bug("prepend_free"); /* LATER rethink */
freebytes(x->x_auxbuf, x->x_auxsize * sizeof(*x->x_auxbuf));
}
if (x->x_proxy)
@@ -308,7 +317,6 @@ static void *prepend_new(t_symbol *s, int ac, t_atom *av)
x->x_message = x->x_messini;
x->x_auxbuf = 0;
x->x_entered = 0;
- shared_usecompatibility();
if (ac)
{
x->x_proxy = 0;
@@ -316,11 +324,10 @@ static void *prepend_new(t_symbol *s, int ac, t_atom *av)
}
else
{
- if (shared_getmaxcompatibility())
- /* CHECKED: this is still not compatible -- in max an object
- without an outlet is created, and there is no warning when
- loading from a file. */
- loud_incompatible(prepend_class,
+ if (prependps_compatibility == prependps_max)
+ /* CHECKED in max an object without an outlet is created,
+ and there is no warning when loading from a file. */
+ fittermax_warning(prepend_class,
"creating an object without an argument");
x->x_proxy = pd_new(prependxy_class);
((t_prependxy *)x->x_proxy)->xy_owner = x;
@@ -352,4 +359,7 @@ void prepend_setup(void)
class_addsymbol(prependxy_class, prependxy_symbol);
class_addlist(prependxy_class, prependxy_list);
class_addanything(prependxy_class, prependxy_anything);
+
+ prependps_max = gensym("max");
+ fitter_setup(prepend_class, &prependps_compatibility, 0);
}