NMD
|
Go to the source code of this file.
Defines | |
#define | ILEN 4 |
#define | RLEN 6 |
Functions | |
int | main (int argc, char **argv) |
#define ILEN 4 |
#define RLEN 6 |
int main | ( | int | argc, |
char ** | argv | ||
) |
Object cloning including arrays
Definition at line 6 of file u15.c.
References ILEN, NMD_FREE, NMD_MALLOC, NMDCloneObject(), NMDCreateObject(), NMDDestroyObject(), NMDFalse, NMDInt, NMDIntarray, NMDReal, NMDRealarray, NMDReportObject(), NMDSetArrayValue(), NMDSetValue(), NMDTrue, and RLEN.
{ NMD_metadata nmd,nmd2; NMDErrorCode ierr; int i=5; double r=6.7; int *ii; double *rr; PetscFunctionBegin; PetscInitialize(&argc,&argv,0,0); ierr = NMDCreateObject(&nmd); NMD_ERR_RETURN(ierr); ierr = NMDCreateObject(&nmd2); NMD_ERR_RETURN(ierr); ierr = NMDSetValue(nmd,"cat1","cmp1",NMDInt,&i); NMD_ERR_RETURN(ierr); ierr = NMDSetValue(nmd,"cat1","cmp2",NMDReal,&r); NMD_ERR_RETURN(ierr); #define ILEN 4 NMD_MALLOC(ii,ILEN,int,"int array"); for (i=0; i<ILEN; i++) ii[i] = 2*i; ierr = NMDSetArrayValue (nmd,"cat1","cmp3",NMDIntarray,&ii,ILEN); NMD_ERR_RETURN(ierr); #define RLEN 6 NMD_MALLOC(rr,RLEN,NMDRealtype,"real array"); for (i=0; i<RLEN; i++) rr[i] = i*i; ierr = NMDSetArrayValue (nmd,"cat1","cmp4",NMDRealarray,&rr,RLEN); NMD_ERR_RETURN(ierr); ierr = NMDCloneObject(nmd,nmd2); NMD_ERR_RETURN(ierr); { const char *s1,*s2,*s3; /* report the original object */ ierr = NMDReportObject(nmd,NMDFalse,&s1,&s2,'\n',0,0); NMD_ERR_RETURN(ierr); printf("original keys:\n%s\nvalues:\n%s\n",s1,s2); ierr = NMDReportObject(nmd,NMDTrue,NULL,&s3,'\n',0,0); NMD_ERR_RETURN(ierr); printf("values with arrays:\n%s\n",s3); NMD_FREE(s1); NMD_FREE(s2); NMD_FREE(s3); /* report the clone */ ierr = NMDReportObject(nmd2,NMDFalse,&s1,&s2,'\n',0,0); NMD_ERR_RETURN(ierr); printf("clone keys:\n%s\nvalues:\n%s\n",s1,s2); ierr = NMDReportObject(nmd2,NMDTrue,NULL,&s3,'\n',0,0); NMD_ERR_RETURN(ierr); printf("values with arrays:\n%s\n",s3); NMD_FREE(s1); NMD_FREE(s2); NMD_FREE(s3); } NMD_FREE(ii); NMD_FREE(rr); ierr = NMDDestroyObject(nmd); NMD_ERR_RETURN(ierr); ierr = NMDDestroyObject(nmd2); NMD_ERR_RETURN(ierr); PetscFinalize(); PetscFunctionReturn(0); }