Update of /cvsroot/pure-data/externals/miXed/cyclone/hammer
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31807/cyclone/hammer
Modified Files:
Table.c coll.c
Log Message:
importing tables
Index: coll.c
===================================================================
RCS file: /cvsroot/pure-data/externals/miXed/cyclone/hammer/coll.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** coll.c 17 Apr 2004 17:45:27 -0000 1.4
--- coll.c 20 Apr 2004 13:55:28 -0000 1.5
***************
*** 32,40 ****
t_pd c_pd;
struct _coll *c_refs; /* used in read-banging and dirty flag handling */
! int c_embedflag; /* common field (CHECKED in 'TEXT') */
! int c_loading;
! int c_relinked;
int c_selfmodified;
! int c_entered; /* a counter, LATER rethink */
t_symbol *c_filename;
t_canvas *c_lastcanvas;
--- 32,40 ----
t_pd c_pd;
struct _coll *c_refs; /* used in read-banging and dirty flag handling */
! int c_increation;
! int c_volatile;
int c_selfmodified;
! int c_entered; /* a counter, LATER rethink */
! int c_embedflag; /* common field (CHECKED in 'TEXT' files) */
t_symbol *c_filename;
t_canvas *c_lastcanvas;
***************
*** 193,201 ****
static void collcommon_modified(t_collcommon *cc, int relinked)
{
! if (cc->c_loading)
return;
if (relinked)
{
! cc->c_relinked = 1;
}
if (cc->c_embedflag)
--- 193,201 ----
static void collcommon_modified(t_collcommon *cc, int relinked)
{
! if (cc->c_increation)
return;
if (relinked)
{
! cc->c_volatile = 1;
}
if (cc->c_embedflag)
***************
*** 399,403 ****
if (min && (ep = min->e_next))
{
! cc->c_loading = 1;
/* search for a sentinel element */
do
--- 399,403 ----
if (min && (ep = min->e_next))
{
! cc->c_increation = 1;
/* search for a sentinel element */
do
***************
*** 421,425 ****
ep = next;
}
! cc->c_loading = 0;
collcommon_modified(cc, 1);
}
--- 421,425 ----
ep = next;
}
! cc->c_increation = 0;
collcommon_modified(cc, 1);
}
***************
*** 519,523 ****
t_atom *data = 0;
int nlines = 0;
! cc->c_loading = 1;
collcommon_clearall(cc);
while (ac--)
--- 519,523 ----
t_atom *data = 0;
int nlines = 0;
! cc->c_increation = 1;
collcommon_clearall(cc);
while (ac--)
***************
*** 539,543 ****
/* CHECKED rejecting a comma */
collcommon_clearall(cc); /* LATER rethink */
! cc->c_loading = 0;
return (-nlines);
}
--- 539,543 ----
/* CHECKED rejecting a comma */
collcommon_clearall(cc); /* LATER rethink */
! cc->c_increation = 0;
return (-nlines);
}
***************
*** 558,562 ****
loud_error(0, "coll: bad atom");
collcommon_clearall(cc); /* LATER rethink */
! cc->c_loading = 0;
return (-nlines);
}
--- 558,562 ----
loud_error(0, "coll: bad atom");
collcommon_clearall(cc); /* LATER rethink */
! cc->c_increation = 0;
return (-nlines);
}
***************
*** 567,574 ****
loud_error(0, "coll: incomplete");
collcommon_clearall(cc); /* LATER rethink */
! cc->c_loading = 0;
return (-nlines);
}
! cc->c_loading = 0;
return (nlines);
}
--- 567,574 ----
loud_error(0, "coll: incomplete");
collcommon_clearall(cc); /* LATER rethink */
! cc->c_increation = 0;
return (-nlines);
}
! cc->c_increation = 0;
return (nlines);
}
***************
*** 747,750 ****
--- 747,769 ----
}
+ static void collcommon_free(t_collcommon *cc)
+ {
+ t_collelem *ep1, *ep2 = cc->c_first;
+ while (ep1 = ep2)
+ {
+ ep2 = ep1->e_next;
+ collelem_free(ep1);
+ }
+ }
+
+ static void *collcommon_new(void)
+ {
+ t_collcommon *cc = (t_collcommon *)pd_new(collcommon_class);
+ cc->c_embedflag = 0;
+ cc->c_first = cc->c_last = 0;
+ cc->c_ahead = cc->c_back = 0;
+ return (cc);
+ }
+
static t_collcommon *coll_checkcommon(t_coll *x)
{
***************
*** 769,774 ****
{
hammerfile_free(cc->c_filehandle);
! cc->c_loading = 1; /* disable dirty-flag handling, LATER rethink */
! collcommon_clearall(cc);
if (x->x_name) pd_unbind(&cc->c_pd, x->x_name);
pd_free(&cc->c_pd);
--- 788,792 ----
{
hammerfile_free(cc->c_filehandle);
! collcommon_free(cc);
if (x->x_name) pd_unbind(&cc->c_pd, x->x_name);
pd_free(&cc->c_pd);
***************
*** 801,808 ****
if (!cc)
{
! cc = (t_collcommon *)pd_new(collcommon_class);
cc->c_refs = 0;
! cc->c_embedflag = 0;
! cc->c_loading = 0;
if (name)
{
--- 819,825 ----
if (!cc)
{
! cc = (t_collcommon *)collcommon_new();
cc->c_refs = 0;
! cc->c_increation = 0;
if (name)
{
***************
*** 865,869 ****
t_collcommon *cc = x->x_common;
if (!cc->c_entered++) cc->c_selfmodified = 0;
! cc->c_relinked = 0;
if (ep->e_hasnumkey)
outlet_float(x->x_keyout, ep->e_numkey);
--- 882,886 ----
t_collcommon *cc = x->x_common;
if (!cc->c_entered++) cc->c_selfmodified = 0;
! cc->c_volatile = 0;
if (ep->e_hasnumkey)
outlet_float(x->x_keyout, ep->e_numkey);
***************
*** 872,876 ****
else
outlet_float(x->x_keyout, 0);
! if (cc->c_relinked) cc->c_selfmodified = 1;
cc->c_entered--;
}
--- 889,893 ----
else
outlet_float(x->x_keyout, 0);
! if (cc->c_volatile) cc->c_selfmodified = 1;
cc->c_entered--;
}
***************
*** 1420,1423 ****
--- 1437,1441 ----
break;
coll_dooutput(x, ep->e_size, ep->e_data);
+ /* FIXME dooutput() may invalidate ep as well as keyoutput()... */
}
outlet_bang(x->x_dumpbangout);
Index: Table.c
===================================================================
RCS file: /cvsroot/pure-data/externals/miXed/cyclone/hammer/Table.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** Table.c 17 Apr 2004 17:47:44 -0000 1.1
--- Table.c 20 Apr 2004 13:55:27 -0000 1.2
***************
*** 3,6 ****
--- 3,10 ----
* WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
+ /* Write access is totally encapsulated in tablecommon calls, in order
+ to simplify proper handling of the distribution cache. Direct read
+ access from table calls is allowed (for speed). */
+
#include <stdio.h>
#include <string.h>
***************
*** 9,12 ****
--- 13,17 ----
#include "common/loud.h"
#include "common/grow.h"
+ #include "common/rand.h"
#include "hammer/file.h"
***************
*** 14,32 ****
#define TABLE_INISIZE 256 /* LATER rethink */
! #define TABLE_DEFLENGTH 128
! #define TABLE_MINLENGTH 2
! #define TABLE_MAXLENGTH 16383
typedef struct _tablecommon
{
t_pd c_pd;
! struct _table *c_refs; /* used in read-banging and dirty flag handling */
! int c_embedflag; /* common field (CHECKED in 'TEXT') */
! int c_loading;
! int c_relinked;
int c_size; /* as allocated */
int c_length; /* as used */
int *c_table;
int c_tableini[TABLE_INISIZE];
t_symbol *c_filename;
t_canvas *c_lastcanvas;
--- 19,54 ----
#define TABLE_INISIZE 256 /* LATER rethink */
! #define TABLE_DEFLENGTH 128 /* CHECKED */
! #define TABLE_MINLENGTH 2 /* CHECKED */
! #define TABLE_MAXLENGTH 16383 /* CHECKED, LATER rethink */
! #define TABLE_MINRANGE 2 /* CHECKED */
! #define TABLE_MAXQ 32768 /* CHECKME */
typedef struct _tablecommon
{
t_pd c_pd;
! struct _table *c_refs;
! int c_increation;
! int c_volatile;
! int c_selfmodified;
! int c_entered; /* a counter, LATER rethink */
! /* CHECKED flags, etc. are common fields */
! int c_visflag;
! int c_embedflag;
! int c_dontsaveflag;
! int c_notenamesflag;
! int c_signedflag;
! int c_range;
! int c_left;
! int c_top;
! int c_right;
! int c_bottom;
int c_size; /* as allocated */
int c_length; /* as used */
int *c_table;
int c_tableini[TABLE_INISIZE];
+ int c_cacheisfresh;
+ int *c_cache;
+ int c_cacheini[TABLE_INISIZE];
t_symbol *c_filename;
t_canvas *c_lastcanvas;
***************
*** 43,46 ****
--- 65,71 ----
int x_valueset;
int x_head;
+ int x_loadflag;
+ int x_loadndx;
+ unsigned int x_seed;
t_hammerfile *x_filehandle;
t_outlet *x_bangout;
***************
*** 51,61 ****
static t_class *tablecommon_class;
! static void tablecommon_modified(t_tablecommon *cc, int relinked)
{
! if (cc->c_loading)
return;
! if (relinked)
{
! cc->c_relinked = 1;
}
if (cc->c_embedflag)
--- 76,86 ----
static t_class *tablecommon_class;
! static void tablecommon_modified(t_tablecommon *cc, int relocated)
{
! if (cc->c_increation)
return;
! if (relocated)
{
! cc->c_volatile = 1;
}
if (cc->c_embedflag)
***************
*** 68,71 ****
--- 93,177 ----
}
+ static int tablecommon_getindex(t_tablecommon *cc, int ndx)
+ {
+ int mx = cc->c_length - 1;
+ /* CHECKED ndx silently clipped */
+ return (ndx < 0 ? 0 : (ndx > mx ? mx : ndx));
+ }
+
+ static int tablecommon_getvalue(t_tablecommon *cc, int ndx)
+ {
+ int mx = cc->c_length - 1;
+ /* CHECKED ndx silently clipped */
+ return (cc->c_table[ndx < 0 ? 0 : (ndx > mx ? mx : ndx)]);
+ }
+
+ static void tablecommon_setvalue(t_tablecommon *cc, int ndx, int v)
+ {
+ int mx = cc->c_length - 1;
+ /* CHECKED ndx silently clipped, value not clipped */
+ cc->c_table[ndx < 0 ? 0 : (ndx > mx ? mx : ndx)] = v;
+ tablecommon_modified(cc, 0);
+ }
+
+ static int tablecommon_loadvalue(t_tablecommon *cc, int ndx, int v)
+ {
+ /* CHECKME */
+ if (ndx < cc->c_length)
+ {
+ cc->c_table[ndx] = v;
+ tablecommon_modified(cc, 0);
+ return (1);
+ }
+ else return (0);
+ }
+
+ static void tablecommon_setall(t_tablecommon *cc, int v)
+ {
+ int ndx = cc->c_length;
+ int *ptr = cc->c_table;
+ while (ndx--) *ptr++ = v;
+ tablecommon_modified(cc, 0);
+ }
+
+ static void tablecommon_setatoms(t_tablecommon *cc, int ndx, int ac, t_atom *av)
+ {
+ if (ac > 1 && av->a_type == A_FLOAT)
+ {
+ /* CHECKME resizing */
+ int last = tablecommon_getindex(cc, ndx + ac - 1);
+ int *ptr = cc->c_table + ndx;
+ for (av++; ndx <= last; ndx++, av++)
+ *ptr++ = (av->a_type == A_FLOAT ? (int)av->a_w.w_float : 0);
+ tablecommon_modified(cc, 0);
+ }
+ }
+
+ static void tablecommon_setlength(t_tablecommon *cc, int length)
+ {
+ int relocate;
+ if (length < TABLE_MINLENGTH)
+ length = TABLE_MINLENGTH;
+ else if (length > TABLE_MAXLENGTH)
+ length = TABLE_MAXLENGTH;
+ if (relocate = (length > cc->c_size))
+ {
+ cc->c_table = grow_nodata(&length, &cc->c_size, cc->c_table,
+ TABLE_INISIZE, cc->c_tableini,
+ sizeof(*cc->c_table));
+ /* FIXME cache */
+ }
+ cc->c_length = length;
+ tablecommon_setall(cc, 0); /* CHECKME */
+ /* CHECKME head */
+ tablecommon_modified(cc, relocate);
+ }
+
+ static int tablecommon_quantile(t_tablecommon *cc, float f)
+ {
+ /* FIXME */
+ return (0);
+ }
+
static void tablecommon_doread(t_tablecommon *cc, t_symbol *fn, t_canvas *cv)
{
***************
*** 90,94 ****
static void table_embedhook(t_pd *z, t_binbuf *bb, t_symbol *bindsym)
{
! /* FIXME */
}
--- 196,228 ----
static void table_embedhook(t_pd *z, t_binbuf *bb, t_symbol *bindsym)
{
! t_table *x = (t_table *)z;
! t_tablecommon *cc = x->x_common;
! if (cc->c_embedflag)
! {
! int ndx = 0, left = cc->c_length;
! int *ptr = cc->c_table;
! binbuf_addv(bb, "ssi;", bindsym, gensym("size"), cc->c_length);
! binbuf_addv(bb, "ssiiii;", bindsym, gensym("flags"), 1,
! cc->c_dontsaveflag, cc->c_notenamesflag, cc->c_signedflag);
! binbuf_addv(bb, "ssi;", bindsym, gensym("tabrange"), cc->c_range);
! binbuf_addv(bb, "ssiiiii;", bindsym, gensym("_coords"),
! cc->c_left, cc->c_top, cc->c_right, cc->c_bottom,
! cc->c_visflag);
! while (left > 0)
! {
! int cnt = (left > 128 ? 128 : left);
! left -= cnt;
! ndx += cnt;
! binbuf_addv(bb, "ssi", bindsym, gensym("set"), ndx);
! while (cnt--)
! {
! t_atom at;
! SETFLOAT(&at, (float)*ptr);
! binbuf_add(bb, 1, &at);
! ptr++;
! }
! binbuf_addsemi(bb);
! }
! }
}
***************
*** 98,101 ****
--- 232,258 ----
}
+ static void tablecommon_free(t_tablecommon *cc)
+ {
+ if (cc->c_table != cc->c_tableini)
+ freebytes(cc->c_table, cc->c_size * sizeof(*cc->c_table));
+ if (cc->c_cache != cc->c_cacheini)
+ freebytes(cc->c_cache, cc->c_size * sizeof(*cc->c_cache));
+ }
+
+ static void *tablecommon_new(void)
+ {
+ t_tablecommon *cc = (t_tablecommon *)pd_new(tablecommon_class);
+ cc->c_visflag = 0;
+ cc->c_embedflag = 0;
+ cc->c_dontsaveflag = 0;
+ cc->c_notenamesflag = 0;
+ cc->c_signedflag = 0;
+ cc->c_size = TABLE_INISIZE;
+ cc->c_length = TABLE_DEFLENGTH;
+ cc->c_table = cc->c_tableini;
+ cc->c_cache = cc->c_cacheini;
+ return (cc);
+ }
+
static t_tablecommon *table_checkcommon(t_table *x)
{
***************
*** 120,126 ****
{
hammerfile_free(cc->c_filehandle);
! cc->c_loading = 1; /* disable dirty-flag handling, LATER rethink */
! if (cc->c_table != cc->c_tableini)
! freebytes(cc->c_table, cc->c_size * sizeof(*cc->c_table));
if (x->x_name) pd_unbind(&cc->c_pd, x->x_name);
pd_free(&cc->c_pd);
--- 277,283 ----
{
hammerfile_free(cc->c_filehandle);
! /* disable canvas dirty-flag handling, LATER rethink */
! cc->c_increation = 1;
! tablecommon_free(cc);
if (x->x_name) pd_unbind(&cc->c_pd, x->x_name);
pd_free(&cc->c_pd);
***************
*** 153,163 ****
if (!cc)
{
! cc = (t_tablecommon *)pd_new(tablecommon_class);
cc->c_refs = 0;
! cc->c_embedflag = 0;
! cc->c_loading = 0;
! cc->c_size = TABLE_INISIZE;
! cc->c_length = TABLE_DEFLENGTH;
! cc->c_table = cc->c_tableini;
if (name)
{
--- 310,316 ----
if (!cc)
{
! cc = (t_tablecommon *)tablecommon_new();
cc->c_refs = 0;
! cc->c_increation = 0;
if (name)
{
***************
*** 199,238 ****
static void table_dooutput(t_table *x, int ndx)
{
! t_tablecommon *cc = x->x_common;
! /* CHECKED ndx silently truncated */
! if (ndx < 0)
! ndx = 0;
! else if (ndx > cc->c_length)
! ndx = cc->c_length - 1;
! outlet_float(((t_object *)x)->ob_outlet, (t_float)cc->c_table[ndx]);
! }
!
! static void table_setvalue(t_table *x, int ndx, int v)
! {
! t_tablecommon *cc = x->x_common;
! /* CHECKED ndx silently truncated */
! if (ndx < 0)
! ndx = 0;
! else if (ndx > cc->c_length)
! ndx = cc->c_length - 1;
! cc->c_table[ndx] = v; /* CHECKED no truncation */
}
static void table_bang(t_table *x)
{
! /* FIXME */
}
static void table_float(t_table *x, t_float f)
{
! int ndx = (int)f; /* CHECKED floats are truncated */
! if (x->x_valueset)
{
! table_setvalue(x, ndx, x->x_value);
! x->x_valueset = 0;
}
- else table_dooutput(x, ndx);
- /* CHECKME if head is updated */
- x->x_head = ndx;
}
--- 352,387 ----
static void table_dooutput(t_table *x, int ndx)
{
! outlet_float(((t_object *)x)->ob_outlet,
! (t_float)tablecommon_getvalue(x->x_common, ndx));
}
static void table_bang(t_table *x)
{
! /* CHECKME */
! outlet_float(((t_object *)x)->ob_outlet,
! (t_float)tablecommon_quantile(x->x_common,
! rand_unipolar(&x->x_seed)));
}
static void table_float(t_table *x, t_float f)
{
! if (x->x_loadflag)
{
! /* CHECKME */
! if (tablecommon_loadvalue(x->x_common, x->x_loadndx, (int)f))
! x->x_loadndx++;
! }
! else
! {
! int ndx = (int)f; /* CHECKED floats are truncated */
! if (x->x_valueset)
! {
! tablecommon_setvalue(x->x_common, ndx, x->x_value);
! x->x_valueset = 0;
! }
! else table_dooutput(x, ndx);
! /* CHECKME if head is updated */
! x->x_head = ndx;
}
}
***************
*** 243,246 ****
--- 392,449 ----
}
+ static void table_size(t_table *x, t_floatarg f)
+ {
+ tablecommon_setlength(x->x_common, (int)f);
+ }
+
+ static void table_set(t_table *x, t_symbol *s, int ac, t_atom *av)
+ {
+ if (ac > 1 && av->a_type == A_FLOAT)
+ {
+ int ndx = tablecommon_getindex(x->x_common, (int)av->a_w.w_float);
+ tablecommon_setatoms(x->x_common, ndx, ac - 1, av + 1);
+ }
+ }
+
+ static void table_flags(t_table *x, t_symbol *s, int ac, t_atom *av)
+ {
+ t_tablecommon *cc = x->x_common;
+ int i = 0, v;
+ while (ac && av->a_type == A_FLOAT
+ && loud_checkint((t_pd *)x, av->a_w.w_float, &v, gensym("flags")))
+ {
+ /* CHECKED order, modifying only explicitly specified flags */
+ if (i == 0)
+ cc->c_embedflag = (v != 0);
+ else if (i == 1)
+ cc->c_dontsaveflag = (v != 0);
+ else if (i == 2)
+ cc->c_notenamesflag = (v != 0);
+ else if (i == 3)
+ cc->c_signedflag = (v != 0);
+ else
+ break;
+ i++; ac--; av++;
+ }
+ }
+
+ static void table_tabrange(t_table *x, t_floatarg f)
+ {
+ int i = (int)f;
+ x->x_common->c_range = (i > TABLE_MINRANGE ? i : TABLE_MINRANGE);
+ }
+
+ static void table__coords(t_table *x, t_floatarg fl, t_floatarg ft,
+ t_floatarg fr, t_floatarg fb, t_floatarg fv)
+ {
+ t_tablecommon *cc = x->x_common;
+ /* FIXME constraints */
+ cc->c_left = (int)fl;
+ cc->c_top = (int)ft;
+ cc->c_right = (int)fr;
+ cc->c_bottom = (int)fb;
+ cc->c_visflag = ((int)fv != 0);
+ }
+
static void table_cancel(t_table *x)
{
***************
*** 250,260 ****
static void table_clear(t_table *x)
{
! t_tablecommon *cc = x->x_common;
! int ndx = cc->c_length;
! int *ptr = cc->c_table;
! while (ndx--) *ptr++ = 0;
/* CHECKME head */
}
static void table_next(t_table *x)
{
--- 453,477 ----
static void table_clear(t_table *x)
{
! tablecommon_setall(x->x_common, 0);
/* CHECKME head */
}
+ static void table_const(t_table *x, t_floatarg f)
+ {
+ tablecommon_setall(x->x_common, (int)f);
+ /* CHECKME head */
+ }
+
+ static void table_load(t_table *x)
+ {
+ x->x_loadflag = 1;
+ x->x_loadndx = 0; /* CHECKED rewind, head not affected */
+ }
+
+ static void table_normal(t_table *x)
+ {
+ x->x_loadflag = 0;
+ }
+
static void table_next(t_table *x)
{
***************
*** 273,284 ****
static void table_goto(t_table *x, t_floatarg f)
{
! t_tablecommon *cc = x->x_common;
! int ndx = (int)f; /* CHECKED floats are truncated */
! /* CHECKED ndx silently truncated */
! if (ndx < 0)
! ndx = 0;
! else if (ndx > cc->c_length)
! ndx = cc->c_length - 1;
! x->x_head = ndx;
}
--- 490,500 ----
static void table_goto(t_table *x, t_floatarg f)
{
! /* CHECKED floats are truncated */
! x->x_head = tablecommon_getindex(x->x_common, (int)f);
! }
!
! static void table_send(t_table *x, t_symbol *s, t_floatarg f)
! {
! /* FIXME */
}
***************
*** 288,291 ****
--- 504,512 ----
}
+ static void table_sum(t_table *x)
+ {
+ /* FIXME */
+ }
+
static void table_min(t_table *x)
{
***************
*** 298,318 ****
}
! static void table_refer(t_table *x, t_symbol *s)
{
! if (!table_rebind(x, s))
{
! /* LATER consider complaining */
}
}
! static void table_flags(t_table *x, t_float f1, t_float f2)
{
! int i1;
! if (loud_checkint((t_pd *)x, f1, &i1, gensym("flags")))
{
! t_tablecommon *cc = x->x_common;
! cc->c_embedflag = (i1 != 0);
}
- /* FIXME don't save flag */
}
--- 519,575 ----
}
! static void table_getbits(t_table *x, t_floatarg f1,
! t_floatarg f2, t_floatarg f3)
{
! /* FIXME */
! }
!
! static void table_setbits(t_table *x, t_floatarg f1,
! t_floatarg f2, t_floatarg f3, t_floatarg f4)
! {
! /* FIXME */
! }
!
! static void table_inv(t_table *x, t_floatarg f)
! {
! /* FIXME */
! }
!
! static void table_quantile(t_table *x, t_floatarg f)
! {
! /* CHECKME */
! outlet_float(((t_object *)x)->ob_outlet,
! (t_float)tablecommon_quantile(x->x_common,
! f / ((float)TABLE_MAXQ)));
! }
!
! static void table_fquantile(t_table *x, t_floatarg f)
! {
! /* CHECKME constraints */
! outlet_float(((t_object *)x)->ob_outlet,
! (t_float)tablecommon_quantile(x->x_common, f));
! }
!
! static void table_dump(t_table *x)
! {
! t_tablecommon *cc = x->x_common;
! t_outlet *out = ((t_object *)x)->ob_outlet;
! int ndx = cc->c_length;
! int *ptr = cc->c_table;
! /* CHECKME */
! while (ndx--)
{
! outlet_float(out, (t_float)*ptr++);
! /* FIXME ptr may be invalid after outlet_float()... consider calling
! tablecommon_getindex() rather than patching in selfmod tests */
}
}
! static void table_refer(t_table *x, t_symbol *s)
{
! if (!table_rebind(x, s))
{
! /* LATER consider complaining */
}
}
***************
*** 335,344 ****
}
- static void table_dump(t_table *x)
- {
- t_tablecommon *cc = x->x_common;
- /* FIXME */
- }
-
static void table_open(t_table *x)
{
--- 592,595 ----
***************
*** 390,393 ****
--- 641,646 ----
x->x_valueset = 0;
x->x_head = 0;
+ x->x_loadflag = 0;
+ rand_seed(&x->x_seed, 0);
inlet_new((t_object *)x, (t_pd *)x, &s_float, gensym("ft1"));
outlet_new((t_object *)x, &s_float);
***************
*** 408,415 ****
--- 661,685 ----
class_addmethod(table_class, (t_method)table_ft1,
gensym("ft1"), A_FLOAT, 0);
+ class_addmethod(table_class, (t_method)table_size,
+ gensym("size"), A_FLOAT, 0);
+ class_addmethod(table_class, (t_method)table_set,
+ gensym("set"), A_GIMME, 0);
+ class_addmethod(table_class, (t_method)table_flags,
+ gensym("flags"), A_GIMME, 0);
+ class_addmethod(table_class, (t_method)table_tabrange,
+ gensym("tabrange"), A_FLOAT, 0);
+ class_addmethod(table_class, (t_method)table__coords,
+ gensym("_coords"),
+ A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, 0);
class_addmethod(table_class, (t_method)table_cancel,
gensym("cancel"), 0);
class_addmethod(table_class, (t_method)table_clear,
gensym("clear"), 0);
+ class_addmethod(table_class, (t_method)table_const,
+ gensym("const"), A_FLOAT, 0);
+ class_addmethod(table_class, (t_method)table_load,
+ gensym("load"), 0);
+ class_addmethod(table_class, (t_method)table_normal,
+ gensym("normal"), 0);
class_addmethod(table_class, (t_method)table_next,
gensym("next"), 0);
***************
*** 418,437 ****
class_addmethod(table_class, (t_method)table_goto,
gensym("goto"), A_FLOAT, 0);
class_addmethod(table_class, (t_method)table_length,
gensym("length"), 0);
class_addmethod(table_class, (t_method)table_min,
gensym("min"), 0);
class_addmethod(table_class, (t_method)table_max,
gensym("max"), 0);
class_addmethod(table_class, (t_method)table_refer,
gensym("refer"), A_SYMBOL, 0);
- class_addmethod(table_class, (t_method)table_flags,
- gensym("flags"), A_FLOAT, A_FLOAT, 0);
class_addmethod(table_class, (t_method)table_read,
gensym("read"), A_DEFSYM, 0);
class_addmethod(table_class, (t_method)table_write,
gensym("write"), A_DEFSYM, 0);
- class_addmethod(table_class, (t_method)table_dump,
- gensym("dump"), 0);
class_addmethod(table_class, (t_method)table_open,
gensym("open"), 0);
--- 688,719 ----
class_addmethod(table_class, (t_method)table_goto,
gensym("goto"), A_FLOAT, 0);
+ class_addmethod(table_class, (t_method)table_send,
+ gensym("send"), A_SYMBOL, A_FLOAT, 0);
class_addmethod(table_class, (t_method)table_length,
gensym("length"), 0);
+ class_addmethod(table_class, (t_method)table_sum,
+ gensym("sum"), 0);
class_addmethod(table_class, (t_method)table_min,
gensym("min"), 0);
class_addmethod(table_class, (t_method)table_max,
gensym("max"), 0);
+ class_addmethod(table_class, (t_method)table_getbits,
+ gensym("getbits"), A_FLOAT, A_FLOAT, A_FLOAT, 0);
+ class_addmethod(table_class, (t_method)table_setbits,
+ gensym("setbits"), A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, 0);
+ class_addmethod(table_class, (t_method)table_inv,
+ gensym("inv"), A_FLOAT, 0);
+ class_addmethod(table_class, (t_method)table_quantile,
+ gensym("quantile"), A_FLOAT, 0);
+ class_addmethod(table_class, (t_method)table_fquantile,
+ gensym("fquantile"), A_FLOAT, 0);
+ class_addmethod(table_class, (t_method)table_dump,
+ gensym("dump"), 0);
class_addmethod(table_class, (t_method)table_refer,
gensym("refer"), A_SYMBOL, 0);
class_addmethod(table_class, (t_method)table_read,
gensym("read"), A_DEFSYM, 0);
class_addmethod(table_class, (t_method)table_write,
gensym("write"), A_DEFSYM, 0);
class_addmethod(table_class, (t_method)table_open,
gensym("open"), 0);