|
NMD
|

Go to the source code of this file.
Functions | |
| int | main (int argc, char **argv) |
| int main | ( | int | argc, |
| char ** | argv | ||
| ) |
Object structure cloning
Definition at line 6 of file u19.c.
References NMD_FREE, NMDCloneObjectStructure(), NMDCreateObject(), NMDDestroyObject(), NMDFalse, NMDGetValue(), NMDInt, NMDReportObject(), and NMDSetValue().
{
NMD_metadata nmd1,nmd2,nmd3; NMDErrorCode ierr; NMDTruth flg;
int i;
PetscFunctionBegin;
PetscInitialize(&argc,&argv,0,0);
ierr = NMDCreateObject(&nmd1); NMD_ERR_RETURN(ierr);
ierr = NMDCreateObject(&nmd2); NMD_ERR_RETURN(ierr);
/*
* objects 1 and 2 have components in different orders
*/
i = 1;
ierr = NMDSetValue(nmd1,"cat1","cmp1",NMDInt,&i); NMD_ERR_RETURN(ierr);
ierr = NMDSetValue(nmd2,"cat1","cmp2",NMDInt,&i); NMD_ERR_RETURN(ierr);
i = 2;
ierr = NMDSetValue(nmd1,"cat1","cmp2",NMDInt,&i); NMD_ERR_RETURN(ierr);
ierr = NMDSetValue(nmd2,"cat1","cmp1",NMDInt,&i); NMD_ERR_RETURN(ierr);
ierr = NMDCloneObjectStructure(nmd1,&nmd3); NMD_ERR_RETURN(ierr);
ierr = NMDGetValue
(nmd3,"cat1","cmp1",NULL,(void*)&i,&flg); NMD_ERR_RETURN(ierr);
if (flg) printf("ERROR: Cloned component cmp1 should not be set\n");
i = 1;
ierr = NMDSetValue(nmd3,"cat1","cmp2",NMDInt,&i); NMD_ERR_RETURN(ierr);
i = 2;
ierr = NMDSetValue(nmd3,"cat1","cmp1",NMDInt,&i); NMD_ERR_RETURN(ierr);
{
const char *s1,*s2,*s3;
/*
* Get the keys, s1 and s3 should be the same
*/
ierr = NMDReportObject
(nmd1,NMDFalse,&s1,NULL,'-',0,0); NMD_ERR_RETURN(ierr);
ierr = NMDReportObject
(nmd2,NMDFalse,&s2,NULL,'-',0,0); NMD_ERR_RETURN(ierr);
ierr = NMDReportObject
(nmd3,NMDFalse,&s3,NULL,'-',0,0); NMD_ERR_RETURN(ierr);
if (strcmp(s1,s3)) {
printf("s1 = <%s> s2 = <%s> s3 = <%s>\n",s1,s2,s3);
NMD_ERR_REPORT(">>>> Error: s1, s3 should be the same\n");
}
NMD_FREE(s1); NMD_FREE(s2); NMD_FREE(s3);
/*
* Get the values, s1 and s2 should be the same
*/
ierr = NMDReportObject(nmd1,NMDFalse,NULL,&s1,'-',0,0); NMD_ERR_RETURN(ierr);
ierr = NMDReportObject(nmd2,NMDFalse,NULL,&s2,'-',0,0); NMD_ERR_RETURN(ierr);
ierr = NMDReportObject(nmd3,NMDFalse,NULL,&s3,'-',0,0); NMD_ERR_RETURN(ierr);
if (strcmp(s1,s2)) {
printf("s1 = <%s> s2 = <%s> s3 = <%s>\n",s1,s2,s3);
NMD_ERR_REPORT(">>>> Error: s1, s2 should be the same\n");
}
NMD_FREE(s1); NMD_FREE(s2); NMD_FREE(s3);
}
ierr = NMDDestroyObject(nmd1); NMD_ERR_RETURN(ierr);
ierr = NMDDestroyObject(nmd2); NMD_ERR_RETURN(ierr);
ierr = NMDDestroyObject(nmd3); NMD_ERR_RETURN(ierr);
PetscFinalize();
PetscFunctionReturn(0);
}

1.7.6.1