struct variable, #6/18, collect struct variable operations

This commit is contained in:
rlar 2016-03-25 15:36:24 +01:00
parent e0ae0bcff1
commit f4f0ae3f61
1 changed files with 21 additions and 11 deletions

View File

@ -960,30 +960,43 @@ parmtovar(IFvalue *pv, IFparm *opt)
{
/* It is not clear whether we want to name the variable
* by `keyword' or by `description' */
struct variable *vv = TMALLOC(struct variable, 1);
vv->va_name = copy(opt->description);
vv->va_next = NULL;
struct variable *vv;
switch (opt->dataType & IF_VARTYPES) {
case IF_INTEGER:
vv = TMALLOC(struct variable, 1);
vv->va_name = copy(opt->description);
vv->va_next = NULL;
vv->va_type = CP_NUM;
vv->va_num = pv->iValue;
break;
return vv;
case IF_REAL:
case IF_COMPLEX:
vv = TMALLOC(struct variable, 1);
vv->va_name = copy(opt->description);
vv->va_next = NULL;
vv->va_type = CP_REAL;
vv->va_real = pv->rValue;
break;
return vv;
case IF_STRING:
vv = TMALLOC(struct variable, 1);
vv->va_name = copy(opt->description);
vv->va_next = NULL;
vv->va_type = CP_STRING;
vv->va_string = pv->sValue;
break;
return vv;
case IF_FLAG:
vv = TMALLOC(struct variable, 1);
vv->va_name = copy(opt->description);
vv->va_next = NULL;
vv->va_type = CP_BOOL;
vv->va_bool = pv->iValue ? TRUE : FALSE;
break;
return vv;
case IF_REALVEC: {
int i;
vv = TMALLOC(struct variable, 1);
vv->va_name = copy(opt->description);
vv->va_next = NULL;
vv->va_type = CP_LIST;
vv->va_vlist = NULL;
for (i = pv->v.numValue; --i >= 0;) {
@ -995,6 +1008,7 @@ parmtovar(IFvalue *pv, IFparm *opt)
nv->va_real = pv->v.vec.rVec[i];
vv->va_vlist = nv;
}
return vv;
/* It is a linked list where the first node is a variable
* pointing to the different values of the variables.
*
@ -1010,8 +1024,6 @@ parmtovar(IFvalue *pv, IFparm *opt)
* So the list is starting from behind, but no problem
* This works fine
*/
break;
}
default:
fprintf(cp_err,
@ -1019,8 +1031,6 @@ parmtovar(IFvalue *pv, IFparm *opt)
opt->dataType);
return (NULL);
}
return (vv);
}