u19.c File Reference

#include <stdlib.h>
#include "memory.h"
#include "nmd.h"

Include dependency graph for u19.c:

Go to the source code of this file.

Functions

int main (int argc, char **argv)


Function Documentation

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().

00006                                {
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     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,'-',NULL,NULL); NMD_ERR_RETURN(ierr);
00043     ierr = NMDReportObject
00044       (nmd2,NMDFalse,&s2,NULL,'-',NULL,NULL); NMD_ERR_RETURN(ierr);
00045     ierr = NMDReportObject
00046       (nmd3,NMDFalse,&s3,NULL,'-',NULL,NULL); 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,'-',NULL,NULL); NMD_ERR_RETURN(ierr);
00056     ierr = NMDReportObject(nmd2,NMDFalse,NULL,&s2,'-',NULL,NULL); NMD_ERR_RETURN(ierr);
00057     ierr = NMDReportObject(nmd3,NMDFalse,NULL,&s3,'-',NULL,NULL); 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 }

Here is the call graph for this function:


Generated on Sun Oct 4 03:59:31 2009 for NMD by  doxygen 1.5.9