aboutsummaryrefslogtreecommitdiff
path: root/src/testio.cc
blob: cd71601d123b428893b223f27cd0036ef73cd505 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include <stdio.h>
#include <stdlib.h>
#include "IEEEIO.hh"

void main(int argc,char *argv[]){
  int i;
  float bogusdata[16*16];
  //float attribdata[128];
  int bogusdims[2]={16,16};
  int bogusrank=2;
  IO *outfile = new IEEEIO("testfile.raw",IO::Create);
  if(!outfile->isValid()){
    perror("IO open failed");
    exit(0);
  }
  else puts("Writing File");
  for(i=0;i<16*16;i++)
    bogusdata[i]=(float)i;
  char *string="I am annotation[0]";
  char *name="attrib0";
  for(i=0;i<5;i++){
    outfile->write(IO::Float32,bogusrank,bogusdims,bogusdata);
    (string[16])='0';
    for(int j=0;j<i;j++,(string[16])='0'+j)
      outfile->writeAnnotation(string);
    name[6]='0';
    //if(i<4)
      for(j=0;j<i;j++,name[6]='0'+j)
	outfile->writeAttribute(name,IO::Float32,2*j,bogusdata+j);
    
  }
  delete outfile;
  puts("##################REOPEN#######################");
  outfile = new IEEEIO("testfile.raw",IO::Read);

  if(!outfile->isValid()){
    perror("IO open failed");
    exit(0);
  }
  for(i=0;i<10;i++){
    IO::DataType dt;
    int idt;
    int rank,dims[3];
    for(int j=0;j<16*16;j++) bogusdata[j]=0.0; // clear bogusdata
    if(outfile->readInfo(dt,rank,dims)<=0){
      puts("***********************end****************");
      break;
    }
    outfile->read(bogusdata);
    printf("----------------------Data Read[%u]-------------------\n",i);
    idt=dt;
    printf("\tDatatype=%u rank=%u\n",idt,rank);
    for(j=0;j<3;j++) printf("\tDims[%u]=%u\n",j,dims[j]);
    puts("+++++++Annotations");
    for(j=0;j<outfile->nAnnotations();j++){
      char buffer[128];
      outfile->readAnnotation(j,buffer,sizeof(buffer));
      printf("\tAnnotation[%u]=[%s]\n",j,buffer);
    }
    puts("");
    for(j=0;j<16*16;j++) printf("data[%4u]=%f\n",j,bogusdata[j]);
  }
  printf("Seek=%d\n",outfile->seek(3));
  for(i=0;i<10;i++){
    IO::DataType dt;
    int idt;
    int rank,dims[3];
    for(int j=0;j<16*16;j++) bogusdata[j]=0.0; // clear bogusdata
    if(outfile->readInfo(dt,rank,dims)<=0){
      puts("***********************end****************");
      break;
    }
    outfile->read(bogusdata);
    printf("----------------------Data Read[%u]-------------------\n",i);
    idt=dt;
    printf("\tDatatype=%u rank=%u\n",idt,rank);
    for(j=0;j<3;j++) printf("\tDims[%u]=%u\n",j,dims[j]);
    puts("+++++++Annotations");
    for(j=0;j<outfile->nAnnotations();j++){
      char buffer[128];
      outfile->readAnnotation(j,buffer,sizeof(buffer));
      printf("\tAnnotation[%u]=[%s]\n",j,buffer);
    }
    puts("xxxxxxxAttribs");
    int buflen;
    IO::DataType attribtype;
    for(j=0;j<outfile->nAttributes();j++){
      float buffer[128];
      char namebuf[128];
      IO::DataType dt;
      outfile->readAttributeInfo(j,namebuf,dt,buflen);
      printf("\tAttribname[%u] = [%s]\n",j,namebuf);
      outfile->readAttribute(j,buffer);
      for(int k=0;k<buflen;k++)
	printf("\tattr data[%u]=%f\n",k,buffer[k]);
    }
    int i;
    if((i=outfile->readAttributeInfo("attrib2",attribtype,buflen))>=0){
      float buffer[128];
      outfile->readAttribute(i,buffer);
      puts("&&&&&Read [attrib2]");
      for(int k=0;k<buflen;k++)
	printf("\tattr data[%u]=%f\n",k,buffer[k]);
    }
    else puts("&&&&There is no [attrib2]");
				 
    puts("");
    for(j=0;j<16*16;j++) printf("data[%4u]=%f\n",j,bogusdata[j]);
  }
  delete outfile;
}