00001 #include <stdlib.h>
00002 #include "memory.h"
00003 #include "nmd.h"
00004
00005
00006 int main(int argc,char **argv) {
00007 NMD_metadata nmd,nmd2; NMDErrorCode ierr;
00008 int i=5; double r=6.7;
00009 int *ii; double *rr;
00010 PetscFunctionBegin;
00011 PetscInitialize(&argc,&argv,0,0);
00012
00013 ierr = NMDCreateObject(&nmd); NMD_ERR_RETURN(ierr);
00014 ierr = NMDCreateObject(&nmd2); NMD_ERR_RETURN(ierr);
00015
00016 ierr = NMDSetValue(nmd,"cat1","cmp1",NMDInt,&i); NMD_ERR_RETURN(ierr);
00017 ierr = NMDSetValue(nmd,"cat1","cmp2",NMDReal,&r); NMD_ERR_RETURN(ierr);
00018
00019 #define ILEN 4
00020 NMD_MALLOC(ii,ILEN,int,"int array");
00021 for (i=0; i<ILEN; i++) ii[i] = 2*i;
00022 ierr = NMDSetArrayValue
00023 (nmd,"cat1","cmp3",NMDIntarray,&ii,ILEN); NMD_ERR_RETURN(ierr);
00024
00025 #define RLEN 6
00026 NMD_MALLOC(rr,RLEN,NMDRealtype,"real array");
00027 for (i=0; i<RLEN; i++) rr[i] = i*i;
00028 ierr = NMDSetArrayValue
00029 (nmd,"cat1","cmp4",NMDRealarray,&rr,RLEN); NMD_ERR_RETURN(ierr);
00030
00031 ierr = NMDCloneObject(nmd,nmd2); NMD_ERR_RETURN(ierr);
00032 {
00033 char *s1,*s2,*s3;
00034
00035 ierr = NMDReportObject(nmd,NMDFalse,&s1,&s2,'\n',NULL,NULL); NMD_ERR_RETURN(ierr);
00036 printf("original keys:\n%s\nvalues:\n%s\n",s1,s2);
00037 ierr = NMDReportObject(nmd,NMDTrue,NULL,&s3,'\n',NULL,NULL); NMD_ERR_RETURN(ierr);
00038 printf("values with arrays:\n%s\n",s3);
00039 NMD_FREE(s1);
00040 NMD_FREE(s2);
00041 NMD_FREE(s3);
00042
00043 ierr = NMDReportObject(nmd2,NMDFalse,&s1,&s2,'\n',0,0); NMD_ERR_RETURN(ierr);
00044 printf("clone keys:\n%s\nvalues:\n%s\n",s1,s2);
00045 ierr = NMDReportObject(nmd2,NMDTrue,NULL,&s3,'\n',0,0); NMD_ERR_RETURN(ierr);
00046 printf("values with arrays:\n%s\n",s3);
00047 NMD_FREE(s1);
00048 NMD_FREE(s2);
00049 NMD_FREE(s3);
00050 }
00051
00052 NMD_FREE(ii);
00053 NMD_FREE(rr);
00054
00055 ierr = NMDDestroyObject(nmd); NMD_ERR_RETURN(ierr);
00056 ierr = NMDDestroyObject(nmd2); NMD_ERR_RETURN(ierr);
00057
00058 PetscFinalize();
00059 PetscFunctionReturn(0);
00060 }