[PD-cvs] pd/src desire.c,1.1.2.217.2.150,1.1.2.217.2.151
Mathieu Bouchard
matju at users.sourceforge.net
Tue Jul 10 22:32:40 CEST 2007
Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19571
Modified Files:
Tag: desiredata
desire.c
Log Message:
use anon union in t_slot
Index: desire.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/desire.c,v
retrieving revision 1.1.2.217.2.150
retrieving revision 1.1.2.217.2.151
diff -C2 -d -r1.1.2.217.2.150 -r1.1.2.217.2.151
*** desire.c 10 Jul 2007 20:31:18 -0000 1.1.2.217.2.150
--- desire.c 10 Jul 2007 20:32:36 -0000 1.1.2.217.2.151
***************
*** 4115,4119 ****
t_symbol *s; /* the field is a constant symbol */
t_symbol *varsym; /* the field is variable and this is the name */
! } u;
float min,max;
float scrmin,scrmax; /* min and max screen values */
--- 4115,4119 ----
t_symbol *s; /* the field is a constant symbol */
t_symbol *varsym; /* the field is variable and this is the name */
! };
float min,max;
float scrmin,scrmax; /* min and max screen values */
***************
*** 4122,4130 ****
static void slot_setfloat_const(t_slot *fd, float f) {
! fd->type = A_FLOAT; fd->var = 0; fd->u.f = f;
fd->min = fd->max = fd->scrmin = fd->scrmax = fd->quantum = 0;
}
static void slot_setsymbol_const(t_slot *fd, t_symbol *s) {
! fd->type = A_SYMBOL; fd->var = 0; fd->u.s = s;
fd->min = fd->max = fd->scrmin = fd->scrmax = fd->quantum = 0;
}
--- 4122,4130 ----
static void slot_setfloat_const(t_slot *fd, float f) {
! fd->type = A_FLOAT; fd->var = 0; fd->f = f;
fd->min = fd->max = fd->scrmin = fd->scrmax = fd->quantum = 0;
}
static void slot_setsymbol_const(t_slot *fd, t_symbol *s) {
! fd->type = A_SYMBOL; fd->var = 0; fd->s = s;
fd->min = fd->max = fd->scrmin = fd->scrmax = fd->quantum = 0;
}
***************
*** 4135,4139 ****
fd->var = 1;
if (!(s1 = strchr(s->name, '(')) || !(s2 = strchr(s->name, ')')) || s1>s2) {
! fd->u.varsym = s;
fd->min = fd->max = fd->scrmin = fd->scrmax = fd->quantum = 0;
} else {
--- 4135,4139 ----
fd->var = 1;
if (!(s1 = strchr(s->name, '(')) || !(s2 = strchr(s->name, ')')) || s1>s2) {
! fd->varsym = s;
fd->min = fd->max = fd->scrmin = fd->scrmax = fd->quantum = 0;
} else {
***************
*** 4141,4145 ****
strncpy(strbuf, s->name, cpy);
strbuf[cpy] = 0;
! fd->u.varsym = gensym(strbuf);
got = sscanf(s1, "(%f:%f)(%f:%f)(%f)", &fd->min, &fd->max, &fd->scrmin, &fd->scrmax, &fd->quantum);
if (got < 2) goto fail;
--- 4141,4145 ----
strncpy(strbuf, s->name, cpy);
strbuf[cpy] = 0;
! fd->varsym = gensym(strbuf);
got = sscanf(s1, "(%f:%f)(%f:%f)(%f)", &fd->min, &fd->max, &fd->scrmin, &fd->scrmax, &fd->quantum);
if (got < 2) goto fail;
***************
*** 4174,4178 ****
fd->type = A_SYMBOL;
fd->var = 1;
! fd->u.varsym = argv->a_symbol;
fd->min = fd->max = fd->scrmin = fd->scrmax = fd->quantum = 0;
} else slot_setsymbol_const(fd, &s_);
--- 4174,4178 ----
fd->type = A_SYMBOL;
fd->var = 1;
! fd->varsym = argv->a_symbol;
fd->min = fd->max = fd->scrmin = fd->scrmax = fd->quantum = 0;
} else slot_setsymbol_const(fd, &s_);
***************
*** 4183,4187 ****
fd->type = A_ARRAY;
fd->var = 1;
! fd->u.varsym = argv->a_symbol;
} else slot_setfloat_const(fd, argv->a_float);
}
--- 4183,4187 ----
fd->type = A_ARRAY;
fd->var = 1;
! fd->varsym = argv->a_symbol;
} else slot_setfloat_const(fd, argv->a_float);
}
***************
*** 4203,4218 ****
static t_float slot_getcoord(t_slot *f, t_template *t, t_word *wp, int loud) {
if (f->type!=A_FLOAT) {if (loud) error("symbolic data field used as number"); return 0;}
! if (f->var) return slot_cvttocoord(f, template_getfloat(t, f->u.varsym, wp, loud));
! return f->u.f;
}
static t_float slot_getfloat(t_slot *f, t_template *t, t_word *wp, int loud) {
if (f->type!=A_FLOAT) {if (loud) error("symbolic data field used as number"); return 0;}
! if (f->var) return template_getfloat(t, f->u.varsym, wp, loud);
! return f->u.f;
}
static t_symbol *slot_getsymbol(t_slot *f, t_template *t, t_word *wp, int loud) {
if (f->type!=A_SYMBOL) {if (loud) error("numeric data field used as symbol"); return &s_;}
! if (f->var) return template_getsymbol(t, f->u.varsym, wp, loud);
! return f->u.s;
}
--- 4203,4218 ----
static t_float slot_getcoord(t_slot *f, t_template *t, t_word *wp, int loud) {
if (f->type!=A_FLOAT) {if (loud) error("symbolic data field used as number"); return 0;}
! if (f->var) return slot_cvttocoord(f, template_getfloat(t, f->varsym, wp, loud));
! return f->f;
}
static t_float slot_getfloat(t_slot *f, t_template *t, t_word *wp, int loud) {
if (f->type!=A_FLOAT) {if (loud) error("symbolic data field used as number"); return 0;}
! if (f->var) return template_getfloat(t, f->varsym, wp, loud);
! return f->f;
}
static t_symbol *slot_getsymbol(t_slot *f, t_template *t, t_word *wp, int loud) {
if (f->type!=A_SYMBOL) {if (loud) error("numeric data field used as symbol"); return &s_;}
! if (f->var) return template_getsymbol(t, f->varsym, wp, loud);
! return f->s;
}
***************
*** 4234,4238 ****
if (f->type == A_FLOAT && f->var) {
float val = slot_cvtfromcoord(f, coord);
! template_setfloat(t, f->u.varsym, wp, val, loud);
} else {
if (loud) error("attempt to set constant or symbolic data field to a number");
--- 4234,4238 ----
if (f->type == A_FLOAT && f->var) {
float val = slot_cvtfromcoord(f, coord);
! template_setfloat(t, f->varsym, wp, val, loud);
} else {
if (loud) error("attempt to set constant or symbolic data field to a number");
***************
*** 4301,4305 ****
return;
}
! viswas = x->vis.u.f!=0;
if ((f!=0 && viswas) || (f==0 && !viswas)) return;
canvas_redrawallfortemplatecanvas(x->canvas, 2);
--- 4301,4305 ----
return;
}
! viswas = x->vis.f!=0;
if ((f!=0 && viswas) || (f==0 && !viswas)) return;
canvas_redrawallfortemplatecanvas(x->canvas, 2);
***************
*** 4474,4478 ****
return;
}
! viswas = x->vis.u.f!=0;
if ((f!=0 && viswas) || (f==0 && !viswas)) return;
canvas_redrawallfortemplatecanvas(x->canvas, 2);
--- 4474,4478 ----
return;
}
! viswas = x->vis.f!=0;
if ((f!=0 && viswas) || (f==0 && !viswas)) return;
canvas_redrawallfortemplatecanvas(x->canvas, 2);
***************
*** 4493,4502 ****
return -1;
}
! if (!template_find_field(ownertemplate, x->data.u.varsym, &arrayonset, &type, &elemtemplatesym)) {
! pd_error(x,"%s: no such field", x->data.u.varsym->name);
return -1;
}
if (type != DT_ARRAY) {
! pd_error(x,"%s: not an array", x->data.u.varsym->name);
return -1;
}
--- 4493,4502 ----
return -1;
}
! if (!template_find_field(ownertemplate, x->data.varsym, &arrayonset, &type, &elemtemplatesym)) {
! pd_error(x,"%s: no such field", x->data.varsym->name);
return -1;
}
if (type != DT_ARRAY) {
! pd_error(x,"%s: not an array", x->data.varsym->name);
return -1;
}
***************
*** 4537,4541 ****
*elemsizep = elemtemplate->n * sizeof(t_word);
#define FOO(f,name,onset) \
! varname = f && f->var ? f->u.varsym : gensym(name); \
if (!template_find_field(elemtemplate,varname,&onset,&type,&dummy) || type!=DT_FLOAT) onset=-1;
FOO(yslot,"y",*yonsetp)
--- 4537,4541 ----
*elemsizep = elemtemplate->n * sizeof(t_word);
#define FOO(f,name,onset) \
! varname = f && f->var ? f->varsym : gensym(name); \
if (!template_find_field(elemtemplate,varname,&onset,&type,&dummy) || type!=DT_FLOAT) onset=-1;
FOO(yslot,"y",*yonsetp)
***************
*** 4764,4768 ****
return;
}
! viswas = (x->vis.u.f != 0);
if ((f != 0 && viswas) || (f == 0 && !viswas)) return;
canvas_redrawallfortemplatecanvas(x->canvas, 2);
--- 4764,4768 ----
return;
}
! viswas = (x->vis.f != 0);
if ((f != 0 && viswas) || (f == 0 && !viswas)) return;
canvas_redrawallfortemplatecanvas(x->canvas, 2);
***************
*** 4826,4830 ****
if (dn.symbol) {post("drawnumber_motion: symbol"); return;}
dn.ycumulative -= dy;
! template_setfloat(dn.t, f->u.varsym, dn.wp, dn.ycumulative, 1);
if (dn.scalar) gobj_changed(dn.scalar); else gobj_changed(dn.array);
}
--- 4826,4830 ----
if (dn.symbol) {post("drawnumber_motion: symbol"); return;}
dn.ycumulative -= dy;
! template_setfloat(dn.t, f->varsym, dn.wp, dn.ycumulative, 1);
if (dn.scalar) gobj_changed(dn.scalar); else gobj_changed(dn.array);
}
***************
*** 4845,4849 ****
/* key entry for a symbol field */
if (dn.firstkey) sbuf[0] = 0;
! else strncpy(sbuf, template_getsymbol(dn.t, f->u.varsym, dn.wp, 1)->name, MAXPDSTRING);
sbuf[MAXPDSTRING-1] = 0;
if (key == '\b') {
--- 4845,4849 ----
/* key entry for a symbol field */
if (dn.firstkey) sbuf[0] = 0;
! else strncpy(sbuf, template_getsymbol(dn.t, f->varsym, dn.wp, 1)->name, MAXPDSTRING);
sbuf[MAXPDSTRING-1] = 0;
if (key == '\b') {
***************
*** 4857,4861 ****
float newf;
if (dn.firstkey) sbuf[0] = 0;
! else sprintf(sbuf, "%g", template_getfloat(dn.t, f->u.varsym, dn.wp, 1));
dn.firstkey = (key == '\n');
if (key == '\b') {
--- 4857,4861 ----
float newf;
if (dn.firstkey) sbuf[0] = 0;
! else sprintf(sbuf, "%g", template_getfloat(dn.t, f->varsym, dn.wp, 1));
dn.firstkey = (key == '\n');
if (key == '\b') {
***************
*** 4866,4870 ****
}
if (sscanf(sbuf, "%g", &newf) < 1) newf = 0;
! template_setfloat(dn.t, f->u.varsym, dn.wp, newf, 1);
if (dn.scalar) template_notifyforscalar(dn.t, dn.canvas, dn.scalar, gensym("change"), 1, &at);
if (dn.scalar) gobj_changed(dn.scalar,0); else gobj_changed(dn.array,0);
--- 4866,4870 ----
}
if (sscanf(sbuf, "%g", &newf) < 1) newf = 0;
! template_setfloat(dn.t, f->varsym, dn.wp, newf, 1);
if (dn.scalar) template_notifyforscalar(dn.t, dn.canvas, dn.scalar, gensym("change"), 1, &at);
if (dn.scalar) gobj_changed(dn.scalar,0); else gobj_changed(dn.array,0);
More information about the Pd-cvs
mailing list