[PD-cvs] pd/src builtins.c,1.1.2.12,1.1.2.13

Mathieu Bouchard matju at users.sourceforge.net
Tue Jan 9 19:58:29 CET 2007


Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11828

Modified Files:
      Tag: desiredata
	builtins.c 
Log Message:
added route_eachr()


Index: builtins.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/builtins.c,v
retrieving revision 1.1.2.12
retrieving revision 1.1.2.13
diff -C2 -d -r1.1.2.12 -r1.1.2.13
*** builtins.c	9 Jan 2007 18:33:54 -0000	1.1.2.12
--- builtins.c	9 Jan 2007 18:58:26 -0000	1.1.2.13
***************
*** 825,830 ****
          outlet_list(x->out2, &s_list, argc-n, argv+n);
          outlet_list(x->out1, &s_list, n, argv);
!     }
!     else outlet_list(x->out3, &s_list, argc, argv);
  }
  static void list_split_anything(t_list_split *x, t_symbol *s, int argc, t_atom *argv) {
--- 825,829 ----
          outlet_list(x->out2, &s_list, argc-n, argv+n);
          outlet_list(x->out1, &s_list, n, argv);
!     } else outlet_list(x->out3, &s_list, argc, argv);
  }
  static void list_split_anything(t_list_split *x, t_symbol *s, int argc, t_atom *argv) {
***************
*** 1563,1566 ****
--- 1562,1567 ----
      outlet_anything(x->rejectout, sel, argc, argv);
  }
+ 
+ #define route_eachr(E,L) for (t_routeelement *E = L->vec;E;E=0) for (int ROUTEN = x->n; ROUTEN--; E++)
  static void route_list(t_route *x, t_symbol *sel, int argc, t_atom *argv) {
      if (x->type == A_FLOAT) {
***************
*** 1574,1579 ****
  		argc -= 1, argv+=1;
  		if (argc > 1) outlet_list(e->e_outlet, 0, argc, argv);
! 		else if (argc == 0) /* bang */
! 			outlet_bang(e->e_outlet);
  		else if (argv[0].a_type == A_FLOAT)   outlet_float(  e->e_outlet, argv[0].a_w.w_float);
  		else if (argv[0].a_type == A_SYMBOL)  outlet_symbol( e->e_outlet, argv[0].a_w.w_symbol);
--- 1575,1579 ----
  		argc -= 1, argv+=1;
  		if (argc > 1) outlet_list(e->e_outlet, 0, argc, argv);
! 		else if (argc == 0) outlet_bang(e->e_outlet);
  		else if (argv[0].a_type == A_FLOAT)   outlet_float(  e->e_outlet, argv[0].a_w.w_float);
  		else if (argv[0].a_type == A_SYMBOL)  outlet_symbol( e->e_outlet, argv[0].a_w.w_symbol);
***************
*** 1584,1589 ****
      } else { /* symbol arguments */
          if (argc > 1) { /* 2 or more args: treat as "list" */
! 	    t_routeelement *e = x->vec;
!             for (int n = x->n; n--; e++) {
                  if (e->e_w.w_symbol == &s_list) {
                      if (argv[0].a_type==A_SYMBOL) outlet_anything(e->e_outlet, argv[0].a_w.w_symbol, argc-1, argv+1);
--- 1584,1588 ----
      } else { /* symbol arguments */
          if (argc > 1) { /* 2 or more args: treat as "list" */
! 	    route_eachr(e,x) {
                  if (e->e_w.w_symbol == &s_list) {
                      if (argv[0].a_type==A_SYMBOL) outlet_anything(e->e_outlet, argv[0].a_w.w_symbol, argc-1, argv+1);
***************
*** 1592,1618 ****
                  }
              }
!         } else if (argc == 0) { /* no args: treat as "bang" */
! 	    t_routeelement *e = x->vec;
!             for (int n = x->n; n--; e++) {
!                 if (e->e_w.w_symbol == &s_bang) {
!                     outlet_bang(e->e_outlet);
!                     return;
!                 }
              }
          } else if (argv[0].a_type == A_FLOAT) {
! 	    t_routeelement *e = x->vec;
!             for (int n = x->n; n--; e++) {
!                 if (e->e_w.w_symbol == &s_float) {
!                     outlet_float(e->e_outlet, argv[0].a_w.w_float);
!                     return;
!                 }
              }
          } else {
! 	    t_routeelement *e = x->vec;
!             for (int n = x->n; n--; e++) {
!                 if (e->e_w.w_symbol == &s_symbol) {
!                     outlet_symbol(e->e_outlet, argv[0].a_w.w_symbol);
!                     return;
!                 }
              }
          }
--- 1591,1605 ----
                  }
              }
!         } else if (argc == 0) {
! 	    route_eachr(e,x) {
!                 if (e->e_w.w_symbol == &s_bang) {outlet_bang(e->e_outlet); return;}
              }
          } else if (argv[0].a_type == A_FLOAT) {
! 	    route_eachr(e,x) {
!                 if (e->e_w.w_symbol == &s_float) {outlet_float(e->e_outlet, argv[0].a_w.w_float); return;}
              }
          } else {
! 	    route_eachr(e,x) {
!                 if (e->e_w.w_symbol == &s_symbol) {outlet_symbol(e->e_outlet, argv[0].a_w.w_symbol); return;}
              }
          }





More information about the Pd-cvs mailing list