|
NMD
|

Go to the source code of this file.
Functions | |
| int | main (int argc, char **argv) |
| int main | ( | int | argc, |
| char ** | argv | ||
| ) |
Test setting and getting of array values
Definition at line 5 of file u10.c.
References NMD_FREE, NMD_MALLOC, NMDCreateObject(), NMDDestroyObject(), NMDGetArrayValue(), NMDIntarray, NMDRealarray, and NMDSetArrayValue().
{
NMD_metadata nmd; NMDErrorCode ierr;
NMDTruth flg; NMDDataType t;
int *ii,*iir,len; double *rr;
PetscFunctionBegin;
PetscInitialize(&argc,&argv,0,0);
ierr = NMDCreateObject(&nmd); NMD_ERR_RETURN(ierr);
NMD_MALLOC(ii,5,int,"int array");
NMD_MALLOC(rr,2,double,"double array");
ii[2] = 15; rr[1] = 37.2;
ierr = NMDSetArrayValue
(nmd,"ctg","i array",NMDIntarray,&ii,5); NMD_ERR_RETURN(ierr);
ierr = NMDSetArrayValue
(nmd,"ctg","r array",NMDRealarray,&rr,2); NMD_ERR_RETURN(ierr);
ierr = NMDGetArrayValue
(nmd,"ctg","r array",NULL,NULL,&len,&flg); NMD_ERR_RETURN(ierr);
if (!flg) NMD_ERR_REPORT("Could not get r array");
if (len!=2) NMD_ERR_REPORTi("r array length mismatch",len);
NMD_FREE(ii);
/* this should go wrong since the array was freed */
ierr = NMDGetArrayValue
(nmd,"ctg","i array",&t,(void*)&iir,&len,&flg); NMD_ERR_RETURN(ierr);
if (!flg) NMD_ERR_REPORT("Could not get i array");
if (len!=5) NMD_ERR_REPORTi("i array wrong length",len);
if (t!=NMDIntarray) NMD_ERR_REPORTi("i array type mismatch",(int)t);
printf("Error because of incorrect usage coming up:\n\n");
if (iir[2]!=15) NMD_ERR_REPORTi("i array value problem",iir[2]);
NMD_FREE(rr);
ierr = NMDDestroyObject(nmd); NMD_ERR_RETURN(ierr);
PetscFinalize();
PetscFunctionReturn(0);
}

1.7.6.1