aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjasch <j45ch@users.sourceforge.net>2007-07-15 21:51:34 +0000
committerjasch <j45ch@users.sourceforge.net>2007-07-15 21:51:34 +0000
commitb101c3e589471d12fdc7bf40f399b0dab8d4aaee (patch)
tree6e7806f0da6164398517fb0cc3dfef37167ae6fb
parent7804e0c5da47f480f2318542b10101a67ab2804e (diff)
This commit was generated by cvs2svn to compensate for changes in r8083,
which included commits to RCS files with non-trunk default branches. svn path=/trunk/externals/jasch_lib/; revision=8084
-rw-r--r--underscore/:cx4
-rw-r--r--underscore/_.c1
2 files changed, 5 insertions, 0 deletions
diff --git a/underscore/:cx b/underscore/:cx
new file mode 100644
index 0000000..f666fa7
--- /dev/null
+++ b/underscore/:cx
@@ -0,0 +1,4 @@
+CVS: ----------------------------------------------------------------------
+CVS: Enter Log. Lines beginning with `CVS:' are removed automatically
+CVS:
+CVS: ----------------------------------------------------------------------
diff --git a/underscore/_.c b/underscore/_.c
new file mode 100644
index 0000000..c95e6e2
--- /dev/null
+++ b/underscore/_.c
@@ -0,0 +1 @@
+/*__________________________________________________________________________ _ á (underscore) prepend setter Copyright © 2002-2006 jan schacher This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA revision history: 20040303 rebuilt release 20060516 PD-port ____________________________________________________________________________*/ #include "m_pd.h" #define MAXSIZE 1024 #define MIN(a,b) ((a)<(b)?(a):(b)) typedef struct underscore { t_object ob; t_atom p_at[MAXSIZE*2]; int p_headlength, p_bodylength; void *p_outlet; } t_underscore; void *underscore_class; void *underscore_new(t_symbol *s, short ac, t_atom *av); void underscore_bang(t_underscore *x); void underscore_float(t_underscore *x, double f); void underscore_anything(t_underscore *x, t_symbol *s, short ac, t_atom *av); void underscore_set(t_underscore *x, t_symbol *s, short ac, t_atom *av); void underscore_list(t_underscore *x, t_symbol *s, short ac, t_atom *av); void underscore_output(t_underscore *x); t_symbol *ps_bang; t_symbol *ps_set; void __setup(void) { underscore_class = class_new(gensym("_"), (t_newmethod)underscore_new, 0L, sizeof(t_underscore), 0, A_GIMME, 0); class_addbang(underscore_class, (t_method)underscore_bang); class_addfloat(underscore_class, (t_method)underscore_float); class_addmethod(underscore_class, (t_method)underscore_list, gensym("list"), A_GIMME, 0); class_addanything(underscore_class, (t_method)underscore_anything); class_addmethod(underscore_class, (t_method)underscore_set, gensym("set"), A_GIMME, 0); post(". _ . jasch . "__DATE__" ",0); ps_bang = gensym("bang"); ps_set = gensym("set"); } void *underscore_new(t_symbol *s, short ac, t_atom *av) { t_underscore *x; int i; t_atom *at; x = (t_underscore *)pd_new(underscore_class); x->p_outlet = outlet_new(&x->ob,0); at = x->p_at; x->p_headlength = 1; x->p_bodylength = 0; at[0].a_type = A_SYMBOL; at[0].a_w.w_symbol = ps_set; if(ac != 0){ ac = MIN(MAXSIZE, ac); x->p_headlength = ac; for (i=0; i<ac; ++i) *at++ = *av++; } return x; } void underscore_bang(t_underscore *x) { t_atom *at; at = x->p_at; x->p_bodylength = 1; x->p_at[x->p_headlength].a_type = A_SYMBOL; x->p_at[x->p_headlength].a_w.w_symbol = ps_bang; underscore_output(x) ; } void underscore_float(t_underscore *x, double f) { t_atom *at; at = x->p_at; x->p_bodylength = 1; SETFLOAT(at+(x->p_headlength), f); underscore_output(x) ; } void underscore_list(t_underscore *x, t_symbol *s, short ac, t_atom *av) { t_atom *at; int i, temp; ac = MIN(MAXSIZE, ac); x->p_bodylength = ac; // indicates input list length temp = x->p_headlength; at = x->p_at; at = at + temp; ac = MIN(MAXSIZE, ac); for (i=0; i<ac; i++) *at++ = *av++; underscore_output(x) ; } void underscore_anything(t_underscore *x, t_symbol *s, short ac, t_atom *av) { int i, temp; t_atom *at; temp = x->p_headlength; at = x->p_at; ac = MIN(MAXSIZE-1, ac); x->p_bodylength = ac+1; at = x->p_at; at = at + temp+1; x->p_at[temp].a_type = A_SYMBOL; x->p_at[temp].a_w.w_symbol = s; for (i=(temp+1); i<(ac+temp+1); i++) *at++ = *av++; underscore_output(x) ; } void underscore_set(t_underscore *x, t_symbol *s, short ac, t_atom *av) { t_atom *at; int i, temp; at = x->p_at; x->p_headlength = ac; // indicates input list length ac = MIN(MAXSIZE, ac); for (i=0; i<ac; i++) *at++ = *av++; } void underscore_output(t_underscore *x) { t_atom *at; t_atom atoms[MAXSIZE*2]; int i, outlength; t_symbol *s; at = x->p_at; outlength = MIN(MAXSIZE, (x->p_headlength+x->p_bodylength)); if(x->p_at[0].a_type != A_SYMBOL){ outlet_list(x->p_outlet, 0L, outlength, at); }else{ at ++; s = x->p_at[0].a_w.w_symbol; outlet_anything(x->p_outlet, s, outlength-1, at); } } \ No newline at end of file