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

1.7.6.1