[PD-cvs] externals/miXed/cyclone/hammer Table.c,1.3,1.4 prob.c,1.1.1.1,1.2

Krzysztof Czaja krzyszcz at users.sourceforge.net
Fri Apr 23 13:25:55 CEST 2004


Update of /cvsroot/pure-data/externals/miXed/cyclone/hammer
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15191/cyclone/hammer

Modified Files:
	Table.c prob.c 
Log Message:


Index: prob.c
===================================================================
RCS file: /cvsroot/pure-data/externals/miXed/cyclone/hammer/prob.c,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** prob.c	23 May 2003 12:29:48 -0000	1.1.1.1
--- prob.c	23 Apr 2004 11:25:52 -0000	1.2
***************
*** 1,3 ****
! /* Copyright (c) 2002-2003 krzYszcz and others.
   * For information on usage and redistribution, and for a DISCLAIMER OF ALL
   * WARRANTIES, see the file, "LICENSE.txt," in this distribution.  */
--- 1,3 ----
! /* Copyright (c) 2002-2004 krzYszcz and others.
   * For information on usage and redistribution, and for a DISCLAIMER OF ALL
   * WARRANTIES, see the file, "LICENSE.txt," in this distribution.  */
***************
*** 9,14 ****
  #include "hammer/file.h"
  
! /* CHECKED: no preallocation.  Apparently, it looks like if the new
!    state-entries were added to the list's head, and the new transition-entries
     were added to the sublist's head.  No sorting of any kind. */
  
--- 9,14 ----
  #include "hammer/file.h"
  
! /* CHECKED: no preallocation.  It looks like if new state-entries
!    were added to the list's head, and new transition-entries
     were added to the sublist's head.  No sorting of any kind. */
  
***************
*** 63,89 ****
  }
  
! /*
! CHECKED: embedmode off:
! #N prob;
! #P newobj ... prob;
! 
! CHECKED: embedmode on, after clear:
! #N prob;
! #T embed 1;
! #P newobj ... prob;
  
- CHECKED: embedmode on, filled:
- #N prob;
- #T <preffix> <suffix> <count>
- ...
- #T embed 1;
- #T reset <default>; (if set)
- #P newobj ... prob;
- */
  static void prob_embed(t_prob *x, t_floatarg f)
  {
      x->x_embedmode = ((int)f != 0);
-     if (x->x_embedmode)
- 	loud_incompatible(prob_class, "embedding not supported (yet)...");
  }
  
--- 63,86 ----
  }
  
! static void prob_embedhook(t_pd *z, t_binbuf *bb, t_symbol *bindsym)
! {
!     t_prob *x = (t_prob *)z;
!     if (x->x_embedmode)
!     {
! 	t_probtrans *pfx, *sfx;
! 	for (pfx = x->x_translist; pfx; pfx = pfx->tr_nextstate)
! 	    for (sfx = pfx->tr_nexttrans; sfx; sfx = sfx->tr_nexttrans)
! 		binbuf_addv(bb, "siii;", bindsym, 
! 			    pfx->tr_value, sfx->tr_value, sfx->tr_count);
! 	binbuf_addv(bb, "ssi;", bindsym, gensym("embed"), 1);
! 	if (x->x_default)
! 	    binbuf_addv(bb, "ssi;", bindsym, gensym("reset"),
! 			x->x_default->tr_value);
!     }
! }
  
  static void prob_embed(t_prob *x, t_floatarg f)
  {
      x->x_embedmode = ((int)f != 0);
  }
  
***************
*** 236,244 ****
  }
  
! static void prob_silent(t_prob *x)
  {
      if (!x->x_silent)
      {
! 	loud_incompatible(prob_class, "no 'silent' message in max");
  	x->x_silent = 1;
      }
--- 233,241 ----
  }
  
! static void prob__silent(t_prob *x)
  {
      if (!x->x_silent)
      {
! 	loud_incompatible(prob_class, "no '_silent' message in max");
  	x->x_silent = 1;
      }
***************
*** 280,284 ****
      outlet_new((t_object *)x, &s_float);
      x->x_bangout = outlet_new((t_object *)x, &s_bang);
!     x->x_filehandle = hammerfile_new((t_pd *)x, 0, 0, 0, 0);
      return (x);
  }
--- 277,281 ----
      outlet_new((t_object *)x, &s_float);
      x->x_bangout = outlet_new((t_object *)x, &s_bang);
!     x->x_filehandle = hammerfile_new((t_pd *)x, prob_embedhook, 0, 0, 0);
      return (x);
  }
***************
*** 302,312 ****
  		    gensym("dump"), 0);
      /* CHECKED: doesn't understand "seed" */
! 
!     /* below are the incompatible extensions... */
!     class_addmethod(prob_class, (t_method)prob_silent,
! 		    gensym("silent"), 0);
      class_addmethod(prob_class, (t_method)prob_click,
  		    gensym("click"),
  		    A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, 0);
!     hammerfile_setup(prob_class, 0);  /* LATER embedding (, 1) */
  }
--- 299,307 ----
  		    gensym("dump"), 0);
      /* CHECKED: doesn't understand "seed" */
!     class_addmethod(prob_class, (t_method)prob__silent,
! 		    gensym("_silent"), 0);
      class_addmethod(prob_class, (t_method)prob_click,
  		    gensym("click"),
  		    A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, 0);
!     hammerfile_setup(prob_class, 1);
  }

Index: Table.c
===================================================================
RCS file: /cvsroot/pure-data/externals/miXed/cyclone/hammer/Table.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** Table.c	21 Apr 2004 14:47:26 -0000	1.3
--- Table.c	23 Apr 2004 11:25:52 -0000	1.4
***************
*** 68,71 ****
--- 68,72 ----
      int             x_valueset;
      int             x_head;
+     int             x_intraversal;  /* ``set-with-next/prev'' flag */
      int             x_loadflag;
      int             x_loadndx;
***************
*** 184,189 ****
      cc->c_length = length;
      /* CHECKED values at common indices are preserved */
!     /* CHECKED rewinding neither head, nor loadndx, but a separate
!        condition of eot is preserved only for the head. */
      tablecommon_modified(cc, relocate);
  }
--- 185,191 ----
      cc->c_length = length;
      /* CHECKED values at common indices are preserved */
!     /* CHECKED rewinding neither head, nor loadndx -- both are preserved,
!        although there is a bug in handling of 'prev' after the head
!        overflows due to shrinking. */
      tablecommon_modified(cc, relocate);
  }
***************
*** 428,433 ****
  	}
  	else table_dooutput(x, ndx);
! 	/* CHECKME if head is updated */
! 	x->x_head = ndx;
      }
  }
--- 430,434 ----
  	}
  	else table_dooutput(x, ndx);
! 	/* CHECKED head is not updated */
      }
  }
***************
*** 501,505 ****
  {
      tablecommon_setall(x->x_common, 0);
!     /* CHECKME head */
  }
  
--- 502,506 ----
  {
      tablecommon_setall(x->x_common, 0);
!     /* CHECKED head preserved */
  }
  
***************
*** 507,511 ****
  {
      tablecommon_setall(x->x_common, (int)f);
!     /* CHECKME head */
  }
  
--- 508,512 ----
  {
      tablecommon_setall(x->x_common, (int)f);
!     /* CHECKED head preserved */
  }
  
***************
*** 523,536 ****
  static void table_next(t_table *x)
  {
!     table_dooutput(x, x->x_head++);
!     if (x->x_head >= x->x_common->c_length)
  	x->x_head = 0;
  }
  
  static void table_prev(t_table *x)
  {
!     table_dooutput(x, x->x_head--);
!     if (x->x_head < 0)
  	x->x_head = x->x_common->c_length - 1;
  }
  
--- 524,541 ----
  static void table_next(t_table *x)
  {
!     if (!x->x_intraversal)
! 	x->x_intraversal = 1;
!     else if (++x->x_head >= x->x_common->c_length)
  	x->x_head = 0;
+     table_dooutput(x, x->x_head);
  }
  
  static void table_prev(t_table *x)
  {
!     if (!x->x_intraversal)
! 	x->x_intraversal = 1;
!     else if (--x->x_head < 0)
  	x->x_head = x->x_common->c_length - 1;
+     table_dooutput(x, x->x_head);
  }
  
***************
*** 539,549 ****
      /* CHECKED floats are truncated */
      x->x_head = tablecommon_getindex(x->x_common, (int)f);
  }
  
! /* CHECKED 'send <target> length' works, but not max, min, sum... */
! /* CHECKED 'send <target> <ndx> <value>' writes the value (a bug?) */
! static void table_send(t_table *x, t_symbol *s, t_floatarg f)
  {
!     /* FIXME */
  }
  
--- 544,580 ----
      /* CHECKED floats are truncated */
      x->x_head = tablecommon_getindex(x->x_common, (int)f);
+     /* CHECKED the head should be pre-updated during traversal, in order
+        to maintain the logical way of direction change.  Therefore, we
+        need the flag below, which locks head in place that has just been
+        set by goto.  The flag is then set by next or prev. */
+     x->x_intraversal = 0;
  }
  
! static void table_send(t_table *x, t_symbol *s, int ac, t_atom *av)
  {
!     if (ac > 1 && av->a_type == A_SYMBOL)
!     {
! 	t_symbol *target = av->a_w.w_symbol;
! 	if (!target->s_thing)
! 	    return;  /* CHECKED no complaint */
! 	ac--; av++;
! 	if (av->a_type == A_FLOAT)
! 	{
! 	    if (ac == 1)
! 	    {
! 		int ndx = (int)av->a_w.w_float;
! 		pd_float(target->s_thing,
! 			 (t_float)tablecommon_getvalue(x->x_common, ndx));
! 	    }
! 	    /* CHECKED incompatible: 'send <target> <ndx> <value>'
! 	       stores <value> at <ndx> (a bug?) */
! 	}
! 	else if (av->a_type == A_SYMBOL)
! 	{
! 	    /* CHECKED 'send <target> length' works, but not max, min, sum... */
! 	    if (av->a_w.w_symbol == gensym("length"))
! 		pd_float(target->s_thing, (t_float)x->x_common->c_length);
! 	}
!     }
  }
  
***************
*** 613,617 ****
  /* FIXME arguments (from, to) */
  /* CHECKED no remote dumping, symbol args bashed to 0 */
! static void table_dump(t_table *x)
  {
      t_tablecommon *cc = x->x_common;
--- 644,648 ----
  /* FIXME arguments (from, to) */
  /* CHECKED no remote dumping, symbol args bashed to 0 */
! static void table_dump(t_table *x, t_symbol *s, int ac, t_atom *av)
  {
      t_tablecommon *cc = x->x_common;
***************
*** 650,654 ****
  	tablecommon_dowrite(cc, s, x->x_canvas);
      else
! 	hammerpanel_save(cc->c_filehandle, 0, 0);  /* CHECKME default name */
  }
  
--- 681,686 ----
  	tablecommon_dowrite(cc, s, x->x_canvas);
      else
! 	/* CHECKED default name is plain `Untitled' */
! 	hammerpanel_save(cc->c_filehandle, 0, 0);
  }
  
***************
*** 726,729 ****
--- 758,762 ----
      x->x_valueset = 0;
      x->x_head = 0;
+     x->x_intraversal = 0;  /* CHECKED */
      x->x_loadflag = 0;
      rand_seed(&x->x_seed, 0);
***************
*** 774,778 ****
  		    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);
--- 807,811 ----
  		    gensym("goto"), A_FLOAT, 0);
      class_addmethod(table_class, (t_method)table_send,
! 		    gensym("send"), A_GIMME, 0);
      class_addmethod(table_class, (t_method)table_length,
  		    gensym("length"), 0);
***************
*** 794,798 ****
  		    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);
--- 827,831 ----
  		    gensym("fquantile"), A_FLOAT, 0);
      class_addmethod(table_class, (t_method)table_dump,
! 		    gensym("dump"), A_GIMME, 0);
      class_addmethod(table_class, (t_method)table_refer,
  		    gensym("refer"), A_SYMBOL, 0);





More information about the Pd-cvs mailing list