Ejemplo n.º 1
0
void clear1Dall(struct data *d)
{
  clear1Ddata(d);
  clear1Dmask(d);
  clearnoise1D(d);
  clearpars(&d->p);
  clearpars(&d->s);
  cleararray(&d->a);
}
Ejemplo n.º 2
0
void clear2Dall(struct data *d)
{
  clear2Ddata(d);
  clear2Dmask(d);
  clearnoise2D(d);
  clearCSIdata(d);
  cleardimorder(d);
  clearstatus(d);
  clearpars(&d->p);
  clearpars(&d->s);
  cleararray(&d->a);
}
Ejemplo n.º 3
0
void copypars(struct pars *p1, struct pars *p2)
{
  int i;

  /* Delete existing parameters */
  clearpars(p2);

  /* Copy the current p1 set to p2 */
  p2->npars = p1->npars;
  if (p2->npars > 0) mallocnpars(p2);
  for (i=0;i<p2->npars;i++) {
    if ((p2->name[i] = (char *)malloc((strlen(p1->name[i])+1)*sizeof(char))) == NULL) nomem(__FILE__,__FUNCTION__,__LINE__);
    strcpy(p2->name[i],p1->name[i]);
    /* Copy values from p1 to p2 */
    copyvalues(p1,i,p2,i);
  }
}
Ejemplo n.º 4
0
void setval(struct pars *p,char *par,double value)
{
  struct pars p2;

  /* Set the value of the parameter in pars struct p2 */
  p2.npars = 1;     /* One parameter */
  mallocnpars(&p2); /* Malloc for one parameter */
  p2.type[0] = 1;   /* Value is real */
  p2.active[0] = 1; /* Parameter is active */
  p2.nvals[0]  = 1; /* There is one parameter value */
  /* Malloc and fill parameter name */
  if ((p2.name[0] = (char *)malloc((strlen(par)+1)*sizeof(char))) == NULL) nomem(__FILE__,__FUNCTION__,__LINE__);
  strcpy(p2.name[0],par);
  /* Malloc and fill the parmaeter value */
  if ((p2.d[0] = (double *)malloc(sizeof(double *))) == NULL) nomem(__FILE__,__FUNCTION__,__LINE__);
  *p2.d[0] = value;
  /* Now copy the value from p2 to p */
  copypar(par,&p2,p);
  /* Clear p2 */
  clearpars(&p2);
}
Ejemplo n.º 5
0
void cppar(char *par1,struct pars *p1,char *par2,struct pars *p2)
{
  int i;
  int ix;
  struct pars p3;

  /* Find the index of par1 in the p1 set otherwise return */
  ix=parindex(par1,p1);
  if (ix<0) return;

  /* Search for par2 in the p2 set to modify an exisiting parameter */
  for (i=0;i<p2->npars;i++) {
    if (!strcmp(p2->name[i],par2)) { /* There is a match */
      /* Free existing values */
      switch(p2->type[i]) {
        case 0:
          free(p2->i[i]);
          break;
        case 1:
          free(p2->d[i]);
          break;
        case 2:
          free(p2->s[i]);
          break;
      } /* end p->type switch */
      /* Copy values from p1 to p2 */
      copyvalues(p1,ix,p2,i);
      return;
    }
  }

  /* If we have not already returned then add the parameter */

  /* Copy the current p2 set to p3 */
  p3.npars = p2->npars;
  if (p3.npars > 0) mallocnpars(&p3);
  for (i=0;i<p3.npars;i++) {
    if ((p3.name[i] = (char *)malloc((strlen(p2->name[i])+1)*sizeof(char))) == NULL) nomem(__FILE__,__FUNCTION__,__LINE__);
    strcpy(p3.name[i],p2->name[i]);
    /* Copy values from p2 to p3 */
    copyvalues(p2,i,&p3,i);
  }

  /* Clear the current p2 set */
  clearpars(p2);

  /* Restore the p2 set but allocate for an extra parameter */
  p2->npars = p3.npars+1;
  mallocnpars(p2);
  for (i=0;i<p3.npars;i++) {
    if ((p2->name[i] = (char *)malloc((strlen(p3.name[i])+1)*sizeof(char))) == NULL) nomem(__FILE__,__FUNCTION__,__LINE__);
    strcpy(p2->name[i],p3.name[i]);
    /* Copy values back from p3 to p2 */
    copyvalues(&p3,i,p2,i);
  }

  /* Clear the p3 set */
  clearpars(&p3);

  /* Now add the parameter */
  if ((p2->name[i] = (char *)malloc((strlen(par2)+1)*sizeof(char))) == NULL) nomem(__FILE__,__FUNCTION__,__LINE__);
  strcpy(p2->name[i],par2);
  /* Copy values from p1 to p2 */
  copyvalues(p1,ix,p2,i);

}