#include #include #include "Arch.h" #include "IO.hh" #include "IEEEIO.hh" #ifdef WITH_HDF4 #include "HDFIO.hh" #endif #ifdef WITH_HDF5 #include "H5IO.hh" #endif // dummy routine extern "C" void CCTKi_RegisterThorn() {} struct CmdlnParams { char *programname; char *filename,*filetype; int showdatasetinfo,showannotationinfo,showattribinfo; int showdatamax,showannotationmax,showattribmax; int showdatastats,showattribstats; void setDefaults(){ programname=""; filename=0; filetype=0; showdatasetinfo=1; showannotationinfo=0; showattribinfo=0; showdatamax=0; showannotationmax=0; showattribmax=0; showdatastats=0; showattribstats=0; } CmdlnParams(){ setDefaults(); } CmdlnParams(int argc,char *argv[]){ setDefaults(); parse(argc,argv); } void parse(int argc,char *argv[]){ programname=argv[0]; for(int i=1;iisValid()){ printf("%s: The file %s is not a valid %s file... sorry\n", cmdln.programname,cmdln.filename,cmdln.filetype); exit(1); } int ndatasets=infile->nDatasets(); printf("Number of datasets=%d\n",ndatasets); puts ("==========================="); // OK... now its time for da main event loop.... for(i=0;ireadInfo(datatype,rank,dims); printf("Datatype=%s Rank=%u Dims=",Typename(datatype),rank); for(j=0;j0 && dims[0]>0) buffer=new char[idims[0] * IObase::sizeOf(datatype)]; //infile->readChunk(buffer); delete buffer; delete idims; } #endif int nattribs=infile->nAttributes(); int nannotations=infile->nAnnotations(); printf("Annotations: %u\n",nannotations); printf("Attributes: %u\n",nattribs); if(cmdln.showattribinfo){ for(j=0;jreadAttributeInfo(j,attribname,datatype,length); printf("\tAttribute[%u] Name=%s Type=%s Length=%u\n", j,attribname,Typename(datatype),length); if(cmdln.showattribmax || cmdln.showattribstats){ //printf("Length of Attribute=%u for total bytes=%u\n",length,IObase::sizeOf(datatype)); void *dataptr; dataptr=0; if(IObase::sizeOf(datatype)>0 && length>0) dataptr=new char[length * IObase::sizeOf(datatype)]; else { //puts("no data to display"); continue; // no data to display } infile->readAttribute(j,dataptr); switch(datatype){ case IObase::Char8:{ char *d=(char*)dataptr; d[length]='\0'; //puts("show char data"); printf("\t%s string[%u]:= %s\n",attribname,length,d); }break; case IObase::Int8: case IObase::uInt8:{ char *d=(char*)dataptr; for(int k=0;k=0x20 && d[k]<=0x7e) printf("\t%s[%u]:=%c\n",attribname,k,d[k]); else { int intchar=(unsigned int)(d[k]); printf("\t%s[%u]:=%u\n",attribname,k,intchar); } }break; case IObase::Int16:{ short *d=(short*)dataptr; for(int k=0;k-----"); break; } if(dataptr) delete (char*)dataptr; } } } } puts("Closing file"); delete infile; puts("***done"); return 0; }