[PD-cvs] pd/src desire.h, 1.1.2.49.2.20, 1.1.2.49.2.21 desire.c, 1.1.2.217.2.99, 1.1.2.217.2.100 kernel.c, 1.1.2.19, 1.1.2.20 m_pd.h, 1.4.4.11.2.33.2.20, 1.4.4.11.2.33.2.21

Mathieu Bouchard matju at users.sourceforge.net
Sun Dec 31 20:21:42 CET 2006


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

Modified Files:
      Tag: desiredata
	desire.h desire.c kernel.c m_pd.h 
Log Message:
gradual evaluation


Index: m_pd.h
===================================================================
RCS file: /cvsroot/pure-data/pd/src/m_pd.h,v
retrieving revision 1.4.4.11.2.33.2.20
retrieving revision 1.4.4.11.2.33.2.21
diff -C2 -d -r1.4.4.11.2.33.2.20 -r1.4.4.11.2.33.2.21
*** m_pd.h	31 Dec 2006 05:37:54 -0000	1.4.4.11.2.33.2.20
--- m_pd.h	31 Dec 2006 19:21:40 -0000	1.4.4.11.2.33.2.21
***************
*** 344,351 ****
  EXTERN t_atom *binbuf_getvec(t_binbuf *x);
  EXTERN void binbuf_eval(t_binbuf *x, t_pd *target, int argc, t_atom *argv);
! EXTERN int binbuf_read(           t_binbuf *b, char *filename, char *dirname,    int crflag);
! EXTERN int binbuf_read_via_canvas(t_binbuf *b, char *filename, t_canvas *canvas, int crflag);
! EXTERN int binbuf_read_via_path(  t_binbuf *b, char *filename, char *dirname,    int crflag);
! EXTERN int binbuf_write(          t_binbuf *x, char *filename, char *dir,        int crflag);
  EXTERN void binbuf_evalfile(t_symbol *name, t_symbol *dir);
  EXTERN t_symbol *binbuf_realizedollsym(t_symbol *s, int ac, t_atom *av, int tonew);
--- 344,351 ----
  EXTERN t_atom *binbuf_getvec(t_binbuf *x);
  EXTERN void binbuf_eval(t_binbuf *x, t_pd *target, int argc, t_atom *argv);
! EXTERN int binbuf_read(           t_binbuf *b, char *filename, char *dirname,    int flags);
! EXTERN int binbuf_read_via_canvas(t_binbuf *b, char *filename, t_canvas *canvas, int flags);
! EXTERN int binbuf_read_via_path(  t_binbuf *b, char *filename, char *dirname,    int flags);
! EXTERN int binbuf_write(          t_binbuf *x, char *filename, char *dir,        int flags);
  EXTERN void binbuf_evalfile(t_symbol *name, t_symbol *dir);
  EXTERN t_symbol *binbuf_realizedollsym(t_symbol *s, int ac, t_atom *av, int tonew);

Index: kernel.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/kernel.c,v
retrieving revision 1.1.2.19
retrieving revision 1.1.2.20
diff -C2 -d -r1.1.2.19 -r1.1.2.20
*** kernel.c	31 Dec 2006 16:39:17 -0000	1.1.2.19
--- kernel.c	31 Dec 2006 19:21:40 -0000	1.1.2.20
***************
*** 1860,1870 ****
  }
  
! void pd_eval_text(char *t) {
  	t_binbuf *x = binbuf_new();
! 	char *end = t + strlen(t);
  	while (t!=end) {
  		t = sys_syntax ? binbuf_text_matju(x,t,end) : binbuf_text_miller(x,t,end);
  		if (x->n && x->vec[x->n-1].a_type == A_SEMI) {
- 			fprintf(stderr,"pd_eval_text semi n=%d\n",x->n);
  			binbuf_eval(x,0,0,0);
  			binbuf_clear(x);
--- 1860,1869 ----
  }
  
! void pd_eval_text(char *t, size_t size) {
  	t_binbuf *x = binbuf_new();
! 	char *end = t+size;
  	while (t!=end) {
  		t = sys_syntax ? binbuf_text_matju(x,t,end) : binbuf_text_miller(x,t,end);
  		if (x->n && x->vec[x->n-1].a_type == A_SEMI) {
  			binbuf_eval(x,0,0,0);
  			binbuf_clear(x);
***************
*** 2266,2270 ****
  }
  
! int binbuf_read(t_binbuf *b, char *filename, char *dirname, int crflag) {
      long length;
      char *buf;
--- 2265,2269 ----
  }
  
! int binbuf_read(t_binbuf *b, char *filename, char *dirname, int flags) {
      long length;
      char *buf;
***************
*** 2287,2292 ****
          return 1;
      }
!     if (crflag) for (int i=0; i<length; i++) if (buf[i]=='\n') buf[i] = ';';
!     binbuf_text(b, buf, length);
      t_freebytes(buf, length);
      close(fd);
--- 2286,2291 ----
          return 1;
      }
!     if (flags&1) for (int i=0; i<length; i++) if (buf[i]=='\n') buf[i] = ';';
!     if (flags&2) pd_eval_text(buf,length); else binbuf_text(b, buf, length);
      t_freebytes(buf, length);
      close(fd);
***************
*** 2295,2313 ****
  
  /* read a binbuf from a file, via the search patch of a canvas */
! int binbuf_read_via_canvas(t_binbuf *b, char *filename, t_canvas *canvas, int crflag) {
      char buf[MAXPDSTRING], *bufptr;
      int filedesc = canvas_open(canvas, filename, "", buf, &bufptr, MAXPDSTRING, 0);
      if (filedesc<0) {error("%s: can't open", filename); return 1;}
      close(filedesc);
!     return !!binbuf_read(b, bufptr, buf, crflag);
  }
  
  /* old version */
! int binbuf_read_via_path(t_binbuf *b, char *filename, char *dirname, int crflag) {
      char buf[MAXPDSTRING], *bufptr;
      int filedesc = open_via_path(dirname, filename, "", buf, &bufptr, MAXPDSTRING, 0);
      if (filedesc<0) {error("%s: can't open", filename); return 1;}
      close(filedesc);
!     return !!binbuf_read(b, bufptr, buf, crflag);
  }
  
--- 2294,2312 ----
  
  /* read a binbuf from a file, via the search patch of a canvas */
! int binbuf_read_via_canvas(t_binbuf *b, char *filename, t_canvas *canvas, int flags) {
      char buf[MAXPDSTRING], *bufptr;
      int filedesc = canvas_open(canvas, filename, "", buf, &bufptr, MAXPDSTRING, 0);
      if (filedesc<0) {error("%s: can't open", filename); return 1;}
      close(filedesc);
!     return !!binbuf_read(b, bufptr, buf, flags);
  }
  
  /* old version */
! int binbuf_read_via_path(t_binbuf *b, char *filename, char *dirname, int flags) {
      char buf[MAXPDSTRING], *bufptr;
      int filedesc = open_via_path(dirname, filename, "", buf, &bufptr, MAXPDSTRING, 0);
      if (filedesc<0) {error("%s: can't open", filename); return 1;}
      close(filedesc);
!     return !!binbuf_read(b, bufptr, buf, flags);
  }
  
***************
*** 2608,2615 ****
  void pd_doloadbang(void);
  
- /* LATER make this evaluate the file on-the-fly. */
  /* LATER figure out how to log errors */
! void binbuf_evalfile(t_symbol *name, t_symbol *dir)
! {
      t_binbuf *b = binbuf_new();
      int import = !strcmp(name->s_name + strlen(name->s_name) - 4, ".pat");
--- 2607,2612 ----
  void pd_doloadbang(void);
  
  /* LATER figure out how to log errors */
! void binbuf_evalfile(t_symbol *name, t_symbol *dir) {
      t_binbuf *b = binbuf_new();
      int import = !strcmp(name->s_name + strlen(name->s_name) - 4, ".pat");
***************
*** 2617,2630 ****
      int dspstate = canvas_suspend_dsp();
      glob_setfilename(0, name, dir);
!     if (binbuf_read(b, name->s_name, dir->s_name, 0)) {
!         perror(name->s_name);
      } else {
!         if (import) {
!             t_binbuf *newb = binbuf_convert(b, 1);
!             binbuf_free(b);
!             b = newb;
!         }
!         binbuf_eval(b, 0, 0, 0);
      }
      glob_setfilename(0, &s_, &s_);      /* bug fix by Krzysztof Czaja */
      binbuf_free(b);
--- 2614,2626 ----
      int dspstate = canvas_suspend_dsp();
      glob_setfilename(0, name, dir);
!     if (import) {
! 	if (binbuf_read(b, name->s_name, dir->s_name, 0)) {perror(name->s_name); goto bye;}
! 	t_binbuf *newb = binbuf_convert(b, 1);
! 	binbuf_free(b);
! 	b = newb;
      } else {
! 	if (binbuf_read(b, name->s_name, dir->s_name, 2)) perror(name->s_name);
      }
+ bye:
      glob_setfilename(0, &s_, &s_);      /* bug fix by Krzysztof Czaja */
      binbuf_free(b);
***************
*** 2634,2646 ****
  void glob_evalfile(t_pd *ignore, t_symbol *name, t_symbol *dir) {
      t_pd *x = 0;
!         /* even though binbuf_evalfile appears to take care of dspstate,
!         we have to do it again here, because canvas_startdsp() assumes
!         that all toplevel canvases are visible.  LATER check if this
!         is still necessary -- probably not. */
! 
      int dspstate = canvas_suspend_dsp();
      binbuf_evalfile(name, dir);
      while ((x != s__X.s_thing) && (x = s__X.s_thing))
!         vmess(x, gensym("pop"), "i", 1);
      pd_doloadbang();
      canvas_resume_dsp(dspstate);
--- 2630,2641 ----
  void glob_evalfile(t_pd *ignore, t_symbol *name, t_symbol *dir) {
      t_pd *x = 0;
!     /* even though binbuf_evalfile appears to take care of dspstate,
!        we have to do it again here, because canvas_startdsp() assumes
!        that all toplevel canvases are visible.
!        LATER: check if this is still necessary -- probably not. */
      int dspstate = canvas_suspend_dsp();
      binbuf_evalfile(name, dir);
      while ((x != s__X.s_thing) && (x = s__X.s_thing))
!        vmess(x, gensym("pop"), "i", 1);
      pd_doloadbang();
      canvas_resume_dsp(dspstate);

Index: desire.h
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/desire.h,v
retrieving revision 1.1.2.49.2.20
retrieving revision 1.1.2.49.2.21
diff -C2 -d -r1.1.2.49.2.20 -r1.1.2.49.2.21
*** desire.h	31 Dec 2006 16:39:15 -0000	1.1.2.49.2.20
--- desire.h	31 Dec 2006 19:21:38 -0000	1.1.2.49.2.21
***************
*** 268,272 ****
  /* from kernel.c */
  EXTERN void gobj_save(t_gobj *x, t_binbuf *b);
! EXTERN void pd_eval_text(char *t);
  EXTERN int sys_syntax;
  
--- 268,272 ----
  /* from kernel.c */
  EXTERN void gobj_save(t_gobj *x, t_binbuf *b);
! EXTERN void pd_eval_text(char *t, size_t size);
  EXTERN int sys_syntax;
  

Index: desire.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/desire.c,v
retrieving revision 1.1.2.217.2.99
retrieving revision 1.1.2.217.2.100
diff -C2 -d -r1.1.2.217.2.99 -r1.1.2.217.2.100
*** desire.c	31 Dec 2006 16:39:15 -0000	1.1.2.217.2.99
--- desire.c	31 Dec 2006 19:21:38 -0000	1.1.2.217.2.100
***************
*** 1441,1444 ****
--- 1441,1446 ----
  and float-arrays. */
  
+ void pd_eval_text2(char *s) {pd_eval_text(s,strlen(s));}
+ 
  extern "C" void garray_init(void) {
      hack = 0; /* invisible canvases must be, uh, invisible */
***************
*** 1446,1450 ****
      t_binbuf *b = binbuf_new();
      glob_setfilename(0, gensym("_float"), gensym("."));
!     pd_eval_text(
  	"#N canvas 0 0 458 153 10;\n"
  	"#X obj 43 31 struct _float_array array z float float style float linewidth float color;\n"
--- 1448,1452 ----
      t_binbuf *b = binbuf_new();
      glob_setfilename(0, gensym("_float"), gensym("."));
!     pd_eval_text2(
  	"#N canvas 0 0 458 153 10;\n"
  	"#X obj 43 31 struct _float_array array z float float style float linewidth float color;\n"
***************
*** 1452,1456 ****
      vmess(s__X.s_thing, gensym("pop"), "i", 0);
      glob_setfilename(0, gensym("_float_array"), gensym("."));
!     pd_eval_text(
  	"#N canvas 0 0 458 153 10;\n"
  	"#X obj 39 26 struct float float y;\n");
--- 1454,1458 ----
      vmess(s__X.s_thing, gensym("pop"), "i", 0);
      glob_setfilename(0, gensym("_float_array"), gensym("."));
!     pd_eval_text2(
  	"#N canvas 0 0 458 153 10;\n"
  	"#X obj 39 26 struct float float y;\n");
***************
*** 2766,2770 ****
      else if (*format->s_name) pd_error(x,"canvas_read: unknown flag: %s", format->s_name);
  
!     if (binbuf_read_via_path(b, filename->s_name, canvas_getdir(canvas)->s_name, cr)) {
          pd_error(x, "read failed");
          binbuf_free(b);
--- 2768,2773 ----
      else if (*format->s_name) pd_error(x,"canvas_read: unknown flag: %s", format->s_name);
  
!     /* flag 2 means eval continuously. this is required to autodetect the syntax */
!     if (binbuf_read_via_path(b, filename->s_name, canvas_getdir(canvas)->s_name, cr|2)) {
          pd_error(x, "read failed");
          binbuf_free(b);
***************
*** 2773,2782 ****
      if (wasvis) canvas_vis(canvas, 0);
      if (clearme) canvas_clear(x);
!     canvas_readfrombinbuf(x, b, filename->s_name, 0);
      if (wasvis) canvas_vis(canvas, 1);
      binbuf_free(b);
  }
  
! static void canvas_read(t_canvas *x, t_symbol *filename, t_symbol *format)      {canvas_doread(x,filename,format,1);}
  static void canvas_mergefile(t_canvas *x, t_symbol *filename, t_symbol *format) {canvas_doread(x,filename,format,0);}
  
--- 2776,2785 ----
      if (wasvis) canvas_vis(canvas, 0);
      if (clearme) canvas_clear(x);
!     /* canvas_readfrombinbuf(x, b, filename->s_name, 0); */ /* what's this for? */
      if (wasvis) canvas_vis(canvas, 1);
      binbuf_free(b);
  }
  
! static void canvas_read(     t_canvas *x, t_symbol *filename, t_symbol *format) {canvas_doread(x,filename,format,1);}
  static void canvas_mergefile(t_canvas *x, t_symbol *filename, t_symbol *format) {canvas_doread(x,filename,format,0);}
  
***************
*** 7352,7357 ****
  char *dirresult, char **nameresult, unsigned int size, int bin) {
      int fd = -1;
-     t_canvas *y;
- 
      /* first check if "name" is absolute (and if so, try to open) */
      if (sys_open_absolute(name, ext, dirresult, nameresult, size, bin, &fd)) return fd;
--- 7355,7358 ----
***************
*** 7359,7369 ****
      /* otherwise "name" is relative; start trying in directories named
      in this and parent environments */
!     for (y = x; y; y = y->owner) if (y->env) {
          t_namelist *nl;
          t_canvas *x2 = x;
          while (x2 && x2->owner) x2 = x2->owner;
          const char *dir = x2 ? canvas_getdir(x2)->s_name : ".";
!         for (nl = y->env->path; nl; nl = nl->nl_next)
!         {
              char realname[MAXPDSTRING];
              strncpy(realname, dir, MAXPDSTRING);
--- 7360,7369 ----
      /* otherwise "name" is relative; start trying in directories named
      in this and parent environments */
!     for (t_canvas *y=x; y; y = y->owner) if (y->env) {
          t_namelist *nl;
          t_canvas *x2 = x;
          while (x2 && x2->owner) x2 = x2->owner;
          const char *dir = x2 ? canvas_getdir(x2)->s_name : ".";
!         for (nl = y->env->path; nl; nl = nl->nl_next) {
              char realname[MAXPDSTRING];
              strncpy(realname, dir, MAXPDSTRING);





More information about the Pd-cvs mailing list