StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
EEmcDbIOsolo.C
1 #include <stdio.h>
2 #include <string.h>
3 
4 #include "EEmcDbIO.h"
5 #include "kretDbBlobS.hh"
6 
7 // ================================================================
8 //
9 // ================================================================
10 
11 KretDbBlobSIO::KretDbBlobSIO(int n) : EEmcDbIOBase(n,sizeof(kretDbBlobS)) {};
12 
13 
14 inline kretDbBlobS*
15 KretDbBlobSIO::data (int i) { return ( (kretDbBlobS *)bytePtr + i ); };
16 
17 //-----------------------------------------------------
18 //-----------------------------------------------------
19 //-----------------------------------------------------
20 int
21  KretDbBlobSIO::read(FILE *f)
22 {
23  // fprintf(stdout,"Jestem w kretBlobS file->DB\n");
24  memset(bytePtr,0x00,bytes);
25  kretDbBlobS *s = data();
26  int i=0;
27  do {
28  int c=fgetc(f);
29  if(c==EOF) break;
30  s->dataS[i]=c;
31  i++;
32  if(i>= KRETmxBlobSlen) {
33  fprintf(stderr,"%d data too long for BlobS , ABORT\n",i);
34  return 0;
35  }
36  } while(1);
37  s->dataS[i]=0; // terminate string at EOF
38  //printf("data=%s=\n",s->data);
39  if(comment) strncpy(s->comment,comment,KRETDbMaxComment-1);
40  return 1;
41 }
42 
43 //-----------------------------------------------------
44 //-----------------------------------------------------
45 //-----------------------------------------------------
46 int
47 KretDbBlobSIO::write(FILE *f)
48 {
49  // fprintf(stdout,"Jestem w kretBlobS DB-->FILE\n");
50  kretDbBlobS *s = data(0);
51 
52  int i=0;
53  int k=0;
54  do {
55  int c=s->dataS[i++];
56  if(c==0) break; // end of data
57  k+=fputc(c,f);
58  if(i>= KRETmxBlobSlen) {
59  fprintf(stderr,"Unexpected, too long data %d from BlobS , STOP\n",i);
60  return 0;
61  }
62  } while(1);
63  setComment(s->comment);
64  return 1;
65 }
66