u21.c File Reference

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

Include dependency graph for u21.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 database output

Definition at line 10 of file u21.c.

References ILEN, NMD_FREE, NMD_MALLOC, NMDCategoryGetComponents(), NMDCreateObject(), NMDDestroyObject(), NMDFalse, NMDGetArrayValue(), NMDGetCategories(), NMDGetTypeMySQLName(), NMDGetValue(), NMDInt, NMDIntarray, NMDIsArrayType(), NMDReal, NMDRealarray, NMDReportObject(), NMDSetArrayValue(), NMDSetValue(), NMDTrue, and RLEN.

00010                                {
00011   NMD_metadata nmd; NMDErrorCode ierr; 
00012   int i=5; double r=6.7;
00013   int *ii; double *rr;
00014   PetscFunctionBegin;
00015 /* #if !defined(HAVE_MYSQL) */
00016 /*   printf("This test only works with MySQL enabled\n"); */
00017 /*   PetscFunctionReturn(0); */
00018 /* #endif */
00019   PetscInitialize(&argc,&argv,0,0);
00020 
00021   ierr = NMDCreateObject(&nmd); NMD_ERR_RETURN(ierr);
00022 
00023   ierr = NMDSetValue(nmd,"cat1","cmp1",NMDInt,&i); NMD_ERR_RETURN(ierr);
00024   ierr = NMDSetValue(nmd,"cat1","cmp2",NMDReal,&r); NMD_ERR_RETURN(ierr);
00025 
00026 #define ILEN 4
00027   NMD_MALLOC(ii,ILEN,int,"int array");
00028   for (i=0; i<ILEN; i++) ii[i] = 2*i;
00029   ierr = NMDSetArrayValue
00030     (nmd,"cat1","cmp3",NMDIntarray,&ii,ILEN); NMD_ERR_RETURN(ierr);
00031 
00032 #define RLEN 6
00033   NMD_MALLOC(rr,RLEN,NMDRealtype,"real array");
00034   for (i=0; i<RLEN; i++) rr[i] = i*i;
00035   ierr = NMDSetArrayValue
00036     (nmd,"cat1","cmp4",NMDRealarray,&rr,RLEN); NMD_ERR_RETURN(ierr);
00037 
00038   {
00039     char *s1,*s2,*s3;
00040     ierr = NMDReportObject
00041       (nmd,NMDFalse,&s1,&s2,'\n',NULL,NULL); NMD_ERR_RETURN(ierr);
00042     printf("keys:\n%s\nvalues:\n%s\n",s1,s2);
00043     ierr = NMDReportObject
00044       (nmd,NMDTrue,NULL,&s3,'\n',NULL,NULL); NMD_ERR_RETURN(ierr);
00045     printf("values with arrays:\n%s\n",s3);
00046     NMD_FREE(s1);
00047     NMD_FREE(s2);
00048     NMD_FREE(s3);
00049   }
00050 
00051   printf("CREATE TABLE yourtable (\n");
00052   {
00053     int ncat,icat,iwrite=0; char **cats;
00054     ierr = NMDGetCategories(nmd,&ncat,&cats); CHKERRQ(ierr);
00055     for (icat=0; icat<ncat; icat++) {
00056       int ncmp,icmp; char **cmps; NMDDataType *types;
00057       ierr = NMDCategoryGetComponents
00058         (nmd,cats[icat],&ncmp,&cmps,&types); CHKERRQ(ierr);
00059       for (icmp=0; icmp<ncmp; icmp++) {
00060         char *type;
00061         if (iwrite>0) printf(",\n"); iwrite++;
00062         ierr = NMDGetTypeMySQLName(types[icmp],&type); CHKERRQ(ierr);
00063         printf("  `%s-%s` %s",cats[icat],cmps[icmp],type);
00064       }
00065       NMD_FREE(cmps); NMD_FREE(types);
00066     }
00067     NMD_FREE(cats);
00068   }
00069   printf("\n)\n");
00070 
00071   printf("simple printout\n");
00072   {
00073     int ncat,icat; char **cats;
00074     ierr = NMDGetCategories(nmd,&ncat,&cats); CHKERRQ(ierr);
00075     for (icat=0; icat<ncat; icat++) {
00076       int ncmp,icmp; char **cmps; NMDDataType *types;
00077       ierr = NMDCategoryGetComponents
00078         (nmd,cats[icat],&ncmp,&cmps,&types); CHKERRQ(ierr);
00079       for (icmp=0; icmp<ncmp; icmp++) {
00080         NMDTruth success; int l;
00081         ierr = NMDIsArrayType(types[icmp],&success); CHKERRQ(ierr);
00082         if (success) {
00083           int *ii; double *rr;
00084           if (!success) NMD_ERR_REPORTss("Should have been able to retrieve",
00085                                          cats[icat],cmps[icmp]);
00086           switch (types[icmp]) {
00087           case NMDIntarray :
00088             ierr = NMDGetArrayValue
00089               (nmd,cats[icat],cmps[icmp],NULL,&ii,&l,&success); CHKERRQ(ierr);
00090             if (!success) NMD_ERR_REPORT("oops3");
00091             printf("  `%s-%s` %dints",cats[icat],cmps[icmp],l); break;
00092           case NMDRealarray :
00093             ierr = NMDGetArrayValue
00094               (nmd,cats[icat],cmps[icmp],NULL,&rr,&l,&success); CHKERRQ(ierr);
00095             if (!success) NMD_ERR_REPORT("oops3");
00096             printf("  `%s-%s` %dfloats",cats[icat],cmps[icmp],l); break;
00097           default:
00098             NMD_ERR_REPORT("Unexpected array type")
00099           }
00100         } else {
00101           int i; double r;
00102           switch (types[icmp]) {
00103           case NMDInt :  
00104             ierr = NMDGetValue
00105               (nmd,cats[icat],cmps[icmp],NULL,&i,&success); CHKERRQ(ierr);
00106             if (!success) NMD_ERR_REPORT("oops1");
00107             printf("  `%s-%s` %d",cats[icat],cmps[icmp],i); break;
00108           case NMDReal :
00109             ierr = NMDGetValue
00110               (nmd,cats[icat],cmps[icmp],NULL,&r,&success); CHKERRQ(ierr);
00111             if (!success) NMD_ERR_REPORT("oops2");
00112             printf("  `%s-%s` %9.4f",cats[icat],cmps[icmp],r); break;
00113           default :
00114             NMD_ERR_REPORT("Unexpected scalar type");
00115           }
00116         }
00117         printf("\n");
00118       }
00119       NMD_FREE(cmps); NMD_FREE(types);
00120     }
00121     NMD_FREE(cats);
00122   }
00123   printf("INSERT INTO yourtable (\n");
00124   {
00125     char *keys,*vals;
00126     ierr = NMDReportObject(nmd,NMDFalse,&keys,&vals,',','`','`'); CHKERRQ(ierr);
00127     printf("(%s)\nVALUES\n(%s);\n",keys,vals);
00128     NMD_FREE(keys); NMD_FREE(vals);
00129   }
00130   printf("\n)\n");
00131 
00132   NMD_FREE(ii);
00133   NMD_FREE(rr);
00134   ierr = NMDDestroyObject(nmd); NMD_ERR_RETURN(ierr);
00135 
00136   PetscFinalize();
00137   PetscFunctionReturn(0);
00138 }

Here is the call graph for this function:


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