NMD
Defines | Functions
u15.c File Reference
#include <stdlib.h>
#include "memory.h"
#include "nmd.h"
Include dependency graph for u15.c:

Go to the source code of this file.

Defines

#define ILEN   4
#define RLEN   6

Functions

int main (int argc, char **argv)

Define Documentation

#define ILEN   4
#define RLEN   6

Function Documentation

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);
}

Here is the call graph for this function: