NMD
|
Go to the source code of this file.
Defines | |
#define | ILEN 4 |
#define | RLEN 6 |
Functions | |
int | main (int argc, char **argv) |
#define ILEN 4 |
#define RLEN 6 |
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.
{ NMD_metadata nmd; NMDErrorCode ierr; int i=5; double r=6.7; int *ii; double *rr; PetscFunctionBegin; /* #if !defined(HAVE_MYSQL) */ /* printf("This test only works with MySQL enabled\n"); */ /* PetscFunctionReturn(0); */ /* #endif */ PetscInitialize(&argc,&argv,0,0); ierr = NMDCreateObject(&nmd); 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); { const char *s1,*s2,*s3; ierr = NMDReportObject (nmd,NMDFalse,&s1,&s2,'\n',0,0); NMD_ERR_RETURN(ierr); printf("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); } printf("CREATE TABLE yourtable (\n"); { int ncat,icat,iwrite=0; char **cats; ierr = NMDGetCategories(nmd,&ncat,&cats); CHKERRQ(ierr); for (icat=0; icat<ncat; icat++) { int ncmp,icmp; const char **cmps; NMDDataType *types; ierr = NMDCategoryGetComponents (nmd,cats[icat],&ncmp,&cmps,&types); CHKERRQ(ierr); for (icmp=0; icmp<ncmp; icmp++) { const char *type; if (iwrite>0) printf(",\n"); iwrite++; ierr = NMDGetTypeMySQLName(types[icmp],&type); CHKERRQ(ierr); printf(" `%s-%s` %s",cats[icat],cmps[icmp],type); } NMD_FREE(cmps); NMD_FREE(types); } NMD_FREE(cats); } printf("\n)\n"); printf("simple printout\n"); { int ncat,icat; char **cats; ierr = NMDGetCategories(nmd,&ncat,&cats); CHKERRQ(ierr); for (icat=0; icat<ncat; icat++) { int ncmp,icmp; const char **cmps; NMDDataType *types; ierr = NMDCategoryGetComponents (nmd,cats[icat],&ncmp,&cmps,&types); CHKERRQ(ierr); for (icmp=0; icmp<ncmp; icmp++) { NMDTruth success; int l; ierr = NMDIsArrayType(types[icmp],&success); CHKERRQ(ierr); if (success) { int *ii; double *rr; if (!success) NMD_ERR_REPORTss("Should have been able to retrieve", cats[icat],cmps[icmp]); switch (types[icmp]) { case NMDIntarray : ierr = NMDGetArrayValue (nmd,cats[icat],cmps[icmp],NULL,&ii,&l,&success); CHKERRQ(ierr); if (!success) NMD_ERR_REPORT("oops3"); printf(" `%s-%s` %dints",cats[icat],cmps[icmp],l); break; case NMDRealarray : ierr = NMDGetArrayValue (nmd,cats[icat],cmps[icmp],NULL,&rr,&l,&success); CHKERRQ(ierr); if (!success) NMD_ERR_REPORT("oops3"); printf(" `%s-%s` %dfloats",cats[icat],cmps[icmp],l); break; default: NMD_ERR_REPORT("Unexpected array type") } } else { int i; double r; switch (types[icmp]) { case NMDInt : ierr = NMDGetValue (nmd,cats[icat],cmps[icmp],NULL,&i,&success); CHKERRQ(ierr); if (!success) NMD_ERR_REPORT("oops1"); printf(" `%s-%s` %d",cats[icat],cmps[icmp],i); break; case NMDReal : ierr = NMDGetValue (nmd,cats[icat],cmps[icmp],NULL,&r,&success); CHKERRQ(ierr); if (!success) NMD_ERR_REPORT("oops2"); printf(" `%s-%s` %9.4f",cats[icat],cmps[icmp],r); break; default : NMD_ERR_REPORT("Unexpected scalar type"); } } printf("\n"); } NMD_FREE(cmps); NMD_FREE(types); } NMD_FREE(cats); } printf("INSERT INTO yourtable (\n"); { const char *keys,*vals; ierr = NMDReportObject(nmd,NMDFalse,&keys,&vals,',','`','`'); CHKERRQ(ierr); printf("(%s)\nVALUES\n(%s);\n",keys,vals); NMD_FREE(keys); NMD_FREE(vals); } printf("\n)\n"); NMD_FREE(ii); NMD_FREE(rr); ierr = NMDDestroyObject(nmd); NMD_ERR_RETURN(ierr); PetscFinalize(); PetscFunctionReturn(0); }