[PD-cvs] externals/hcs sql_query.c, 1.1, 1.2 sql_query-help.pd, 1.1, 1.2

Hans-Christoph Steiner eighthave at users.sourceforge.net
Sat Dec 22 08:24:38 CET 2007


Update of /cvsroot/pure-data/externals/hcs
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv916

Modified Files:
	sql_query.c sql_query-help.pd 
Log Message:
parses ? placeholders and generates inlets; crashes when you try to do just about anything

Index: sql_query-help.pd
===================================================================
RCS file: /cvsroot/pure-data/externals/hcs/sql_query-help.pd,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** sql_query-help.pd	22 Dec 2007 02:53:43 -0000	1.1
--- sql_query-help.pd	22 Dec 2007 07:24:36 -0000	1.2
***************
*** 1,4 ****
! #N canvas 403 84 613 618 10;
! #X obj 118 105 sql_query this is a test? more ?;
  #X obj 362 244 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144
  -1 -1 0 1;
--- 1,3 ----
! #N canvas 238 82 613 618 10;
  #X obj 362 244 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144
  -1 -1 0 1;
***************
*** 25,34 ****
  #X obj 119 322 sql_query insert into table (name \, age) values (?
  \, ?);
! #X connect 4 0 5 0;
! #X connect 4 1 6 0;
! #X connect 4 1 7 0;
! #X connect 9 0 12 0;
! #X connect 10 0 12 0;
! #X connect 11 0 12 0;
! #X connect 12 0 4 0;
! #X connect 12 1 4 1;
--- 24,38 ----
  #X obj 119 322 sql_query insert into table (name \, age) values (?
  \, ?);
! #X obj 118 105 sql_query this is a test? more ? ? ? ?;
! #X msg 39 235 bang;
! #X connect 0 0 11 1;
! #X connect 1 0 11 1;
! #X connect 3 0 4 0;
! #X connect 3 1 5 0;
! #X connect 3 1 6 0;
! #X connect 8 0 11 0;
! #X connect 9 0 11 0;
! #X connect 10 0 11 0;
! #X connect 11 0 3 0;
! #X connect 11 1 3 1;
! #X connect 13 0 11 0;

Index: sql_query.c
===================================================================
RCS file: /cvsroot/pure-data/externals/hcs/sql_query.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** sql_query.c	22 Dec 2007 02:53:43 -0000	1.1
--- sql_query.c	22 Dec 2007 07:24:36 -0000	1.2
***************
*** 45,48 ****
--- 45,57 ----
  static t_class *sql_query_class;
  
+ static t_class *proxy_inlet_class;
+ 
+ typedef struct _proxy_inlet 
+ {
+   t_pd pd;
+   void *owner;
+   unsigned int id;
+ } t_proxy_inlet;
+ 
  typedef struct _sql_query 
  {
***************
*** 51,55 ****
      t_binbuf*           x_query_binbuf;
      
!     int                 inlet_count;
  
      t_outlet*           x_data_outlet;
--- 60,66 ----
      t_binbuf*           x_query_binbuf;
      
!     unsigned int        placeholder_count;
!     struct _proxy_inlet*inlets;
!     t_atom**            atoms;
  
      t_outlet*           x_data_outlet;
***************
*** 58,86 ****
      
  
  
  /*------------------------------------------------------------------------------
   * PROXY INLET FUNCTIONS
   */
- static t_class *proxy_inlet_class = NULL;
  
! typedef struct _proxy_inlet 
! {
!   t_pd pd;
!   void *owner;
!   unsigned int id;
! } t_proxy_inlet;
! 
! static void proxy_inlet_new(t_proxy_inlet *p, void *owner, unsigned int id) 
  {
  	p->pd = proxy_inlet_class;
  	p->owner = owner;
      p->id = id;
  }
  
! static void proxy_inlet_anything(t_proxy_inlet *x, t_symbol *s, int argc, t_atom *argv)
  {
! 	int i;
! 	char buf[MAXPDSTRING];
! 	post("proxy_inlet_anything: %s", s -> s_name);
  }
  
--- 69,93 ----
      
  
+ /*------------------------------------------------------------------------------
+  * FUNCTION PROTOTYPES
+  */
+ static void sql_query_set_atom(t_sql_query *x, int atom_num, t_symbol *s, t_atom *atom);
  
  /*------------------------------------------------------------------------------
   * PROXY INLET FUNCTIONS
   */
  
! static void proxy_inlet_new(t_proxy_inlet *p, t_object *owner, unsigned int id) 
  {
  	p->pd = proxy_inlet_class;
  	p->owner = owner;
      p->id = id;
+     inlet_new(owner, &p->pd, 0, 0);
  }
  
! static void proxy_inlet_anything(t_proxy_inlet *p, t_symbol *s, int argc, t_atom *argv)
  {
! 	post("proxy_inlet_anything: %s %d", s->s_name, argc);
!     sql_query_set_atom(p->owner, p->id, s, argv);
  }
  
***************
*** 102,106 ****
   */
  
! static void *sql_query_free(t_sql_query *x) 
  {
      binbuf_free(x->x_query_binbuf);
--- 109,139 ----
   */
  
! static void sql_query_set_atom(t_sql_query *x, int atom_num, t_symbol *s, t_atom *atom)
! {
!     char *buf;
!     int bufsize;
!     if( (&s == &s_symbol) || (&s == &s_list) )
!     {
!         atom_string(atom, buf, bufsize);
!     }
!     else
!     {
!         atom_string(atom, buf, bufsize);
!     }
!     post("set atom %s", buf);
!     x->atoms[atom_num] = atom;
! }
! 
! static void sql_query_anything(t_sql_query *x, t_symbol *s, int argc, t_atom *argv) 
! {
!     sql_query_set_atom(x, 0, s, argv);
! }
! 
! static void sql_query_bang(t_sql_query *x)
! {
! 
! }
! 
! static void sql_query_free(t_sql_query *x) 
  {
      binbuf_free(x->x_query_binbuf);
***************
*** 110,117 ****
  {
  	DEBUG(post("sql_query_new"););
!     char *buf;
      int bufsize;
      char *current = NULL;
-     unsigned int total_inlets = 0;
  	t_sql_query *x = (t_sql_query *)pd_new(sql_query_class);
  
--- 143,150 ----
  {
  	DEBUG(post("sql_query_new"););
!     unsigned int i;
      int bufsize;
+     char *buf;
      char *current = NULL;
  	t_sql_query *x = (t_sql_query *)pd_new(sql_query_class);
  
***************
*** 121,132 ****
      buf[bufsize] = 0;
  
      current = strchr(buf, PLACEHOLDER);
      while (current != NULL)
      {
          post("found placeholder %c", PLACEHOLDER);
!         total_inlets++;
          current = strchr(current + 1, PLACEHOLDER);
      }
!     post("creating %d inlets", total_inlets);
  	x->x_data_outlet = outlet_new(&x->x_obj, 0);
  	x->x_status_outlet = outlet_new(&x->x_obj, 0);
--- 154,174 ----
      buf[bufsize] = 0;
  
+     x->placeholder_count = 0;
      current = strchr(buf, PLACEHOLDER);
      while (current != NULL)
      {
          post("found placeholder %c", PLACEHOLDER);
!         x->placeholder_count++;
          current = strchr(current + 1, PLACEHOLDER);
      }
!     post("creating %d inlets", x->placeholder_count);
!     x->inlets = getbytes(x->placeholder_count * sizeof(t_proxy_inlet));
!     x->atoms = getbytes(x->placeholder_count * sizeof(t_atom *));
!     for(i=1; i< x->placeholder_count; ++i)
!     {
!         proxy_inlet_new(&x->inlets[i], (t_object *)x, x->placeholder_count);
!         post("\tinlet %d", i);
!     }
! 
  	x->x_data_outlet = outlet_new(&x->x_obj, 0);
  	x->x_status_outlet = outlet_new(&x->x_obj, 0);
***************
*** 140,144 ****
  	sql_query_class = class_new(gensym("sql_query"), 
                                  (t_newmethod)sql_query_new, 
!                                 (t_newmethod)sql_query_free, 
                                  sizeof(t_sql_query), 
                                  0, 
--- 182,186 ----
  	sql_query_class = class_new(gensym("sql_query"), 
                                  (t_newmethod)sql_query_new, 
!                                 (t_method)sql_query_free, 
                                  sizeof(t_sql_query), 
                                  0, 
***************
*** 147,152 ****
  
  	/* add inlet datatype methods */
! //	class_addbang(sql_query_class, (t_method) sql_query_bang);
! //	class_addanything(sql_query_class, (t_method) sql_query_anything);
  }
  
--- 189,194 ----
  
  	/* add inlet datatype methods */
! 	class_addbang(sql_query_class, (t_method) sql_query_bang);
! 	class_addanything(sql_query_class, (t_method) sql_query_anything);
  }
  





More information about the Pd-cvs mailing list