NMD
|
00001 #include <stdlib.h> 00002 #include <stdio.h> 00003 #include <string.h> 00004 #include "nmd.h" 00005 00006 #undef __FUNCT__ 00007 #define __FUNCT__ "NMDTabReportData" 00008 int NMDTabReportData(NMD_metadata nmd,char **rkey,char **rval,int separator) 00009 { 00010 char *key,*val; size_t lkey,lval; 00011 int ncat,icat,nmod,imod; 00012 char **categories,**modules; NMDDataType *types; 00013 int begun=0, ierr; 00014 00015 NMD_MALLOC(key,2000,char,"keys"); 00016 NMD_MALLOC(val,2000,char,"values"); 00017 00018 ierr = NMDGetCategories(nmd,&ncat,&categories); NMD_ERR_RETURN(ierr); 00019 for (icat=0; icat<ncat; icat++) { 00020 int first=1; 00021 ierr = NMDCategoryIGetComponents 00022 (nmd,icat,&nmod,&modules,&types); NMD_ERR_RETURN(ierr); 00023 for (imod=0; imod<nmod; imod++) { 00024 int f=0,is_array,trace_arrays; 00025 void *v; char *stringed; 00026 ierr = NMDGetValue 00027 (nmd,categories[icat],modules[imod], 00028 NULL,(void*)&v,(int*)&f); NMD_ERR_RETURN(ierr); 00029 lkey = strlen(key); lval = strlen(val); 00030 00031 if (begun) { 00032 sprintf(key+lkey++,"\t");/*"%c", separator);*/ 00033 sprintf(val+lval++,"\t");/*"%c", separator);*/ 00034 } else begun=1; 00035 00036 if (first) { 00037 sprintf(key+lkey,"%s:%s",categories[icat],modules[imod]); 00038 first=0; 00039 } else { 00040 sprintf(key+lkey,"%s",modules[imod]); 00041 } 00042 00043 is_array = 00044 ( types[imod]==NMDIntarray || types[imod]==NMDRealarray ); 00045 /*ierr = AnaModTraceArrays(&trace_arrays); NMD_ERR_RETURN(ierr);*/ 00046 trace_arrays = 0; 00047 if (f && (!is_array || trace_arrays) ) { 00048 ierr = QuantityAsString(&v,types[imod],&stringed); NMD_ERR_RETURN(ierr); 00049 } else stringed = ""; 00050 sprintf(val+lval,"%s",stringed); 00051 } 00052 } 00053 *rkey = key; *rval = val; 00054 00055 return 0; 00056 }