NMD
|
00001 #include <stdlib.h> 00002 #include "memory.h" 00003 #include "nmd.h" 00004 00005 /*! Object structure cloning */ 00006 int main(int argc,char **argv) { 00007 NMD_metadata nmd1,nmd2,nmd3; NMDErrorCode ierr; NMDTruth flg; 00008 int i; 00009 PetscFunctionBegin; 00010 PetscInitialize(&argc,&argv,0,0); 00011 00012 ierr = NMDCreateObject(&nmd1); NMD_ERR_RETURN(ierr); 00013 ierr = NMDCreateObject(&nmd2); NMD_ERR_RETURN(ierr); 00014 00015 /* 00016 * objects 1 and 2 have components in different orders 00017 */ 00018 i = 1; 00019 ierr = NMDSetValue(nmd1,"cat1","cmp1",NMDInt,&i); NMD_ERR_RETURN(ierr); 00020 ierr = NMDSetValue(nmd2,"cat1","cmp2",NMDInt,&i); NMD_ERR_RETURN(ierr); 00021 i = 2; 00022 ierr = NMDSetValue(nmd1,"cat1","cmp2",NMDInt,&i); NMD_ERR_RETURN(ierr); 00023 ierr = NMDSetValue(nmd2,"cat1","cmp1",NMDInt,&i); NMD_ERR_RETURN(ierr); 00024 00025 ierr = NMDCloneObjectStructure(nmd1,&nmd3); NMD_ERR_RETURN(ierr); 00026 00027 ierr = NMDGetValue 00028 (nmd3,"cat1","cmp1",NULL,(void*)&i,&flg); NMD_ERR_RETURN(ierr); 00029 if (flg) printf("ERROR: Cloned component cmp1 should not be set\n"); 00030 00031 i = 1; 00032 ierr = NMDSetValue(nmd3,"cat1","cmp2",NMDInt,&i); NMD_ERR_RETURN(ierr); 00033 i = 2; 00034 ierr = NMDSetValue(nmd3,"cat1","cmp1",NMDInt,&i); NMD_ERR_RETURN(ierr); 00035 00036 { 00037 const char *s1,*s2,*s3; 00038 /* 00039 * Get the keys, s1 and s3 should be the same 00040 */ 00041 ierr = NMDReportObject 00042 (nmd1,NMDFalse,&s1,NULL,'-',0,0); NMD_ERR_RETURN(ierr); 00043 ierr = NMDReportObject 00044 (nmd2,NMDFalse,&s2,NULL,'-',0,0); NMD_ERR_RETURN(ierr); 00045 ierr = NMDReportObject 00046 (nmd3,NMDFalse,&s3,NULL,'-',0,0); NMD_ERR_RETURN(ierr); 00047 if (strcmp(s1,s3)) { 00048 printf("s1 = <%s> s2 = <%s> s3 = <%s>\n",s1,s2,s3); 00049 NMD_ERR_REPORT(">>>> Error: s1, s3 should be the same\n"); 00050 } 00051 NMD_FREE(s1); NMD_FREE(s2); NMD_FREE(s3); 00052 /* 00053 * Get the values, s1 and s2 should be the same 00054 */ 00055 ierr = NMDReportObject(nmd1,NMDFalse,NULL,&s1,'-',0,0); NMD_ERR_RETURN(ierr); 00056 ierr = NMDReportObject(nmd2,NMDFalse,NULL,&s2,'-',0,0); NMD_ERR_RETURN(ierr); 00057 ierr = NMDReportObject(nmd3,NMDFalse,NULL,&s3,'-',0,0); NMD_ERR_RETURN(ierr); 00058 if (strcmp(s1,s2)) { 00059 printf("s1 = <%s> s2 = <%s> s3 = <%s>\n",s1,s2,s3); 00060 NMD_ERR_REPORT(">>>> Error: s1, s2 should be the same\n"); 00061 } 00062 NMD_FREE(s1); NMD_FREE(s2); NMD_FREE(s3); 00063 } 00064 00065 ierr = NMDDestroyObject(nmd1); NMD_ERR_RETURN(ierr); 00066 ierr = NMDDestroyObject(nmd2); NMD_ERR_RETURN(ierr); 00067 ierr = NMDDestroyObject(nmd3); NMD_ERR_RETURN(ierr); 00068 00069 PetscFinalize(); 00070 PetscFunctionReturn(0); 00071 }