5 #include "genericFile.h" 14 void readWindow(
const std::vector<int> &nw,
const std::vector<int> &fw,
const std::vector<int>& jw,
void *data,
void *head=0);
15 void writeWindow(
const std::vector<int>& nw,
const std::vector<int>& fw,
const std::vector<int>& jw,
const void *data,
void *head=0);
16 virtual void readStream(
const long long sz,
void *data){
19 virtual void writeStream(
const long long sz,
const void *dat){
22 virtual void readTraceStream(
const long long sz,
void *dat,
void *head=0);
23 virtual void writeTraceStream(
const long long sz,
const void *dat,
const void *head=0);
24 virtual void writeReelHead(
const void *reelH);
25 void readBlocks(
const int naxes,
const std::vector<int>& nwo,
const std::vector<int>& fwo,
const std::vector<int>& jwo,
26 const std::vector<int> &nwi,
const std::vector<int>& fwi,
const std::vector<int> &jwi,
27 const long long buf,
void *data,
void *head);
28 void writeBlocks(
const int naxes,
const std::vector<int> &nwo,
const std::vector<int> &fwo,
const std::vector<int> &jwo,
29 const std::vector<int>& nwi,
const std::vector<int> &fwi,
const std::vector<int> &jwi,
30 const long long buf,
const void *data,
const void *head);
31 virtual void partsToBlock(
const std::vector<int> &nw,
const std::vector<int>& fw,
const std::vector<int> &jw,
void *in,
const void *out,
const void *head);
32 virtual void blockToParts(
const std::vector<int> &nw,
const std::vector<int> &fw,
const std::vector<int> &jw,
const void *in,
void *out,
void *head);
33 virtual long long getCurrentPos()
const {
36 virtual long long getSize(){
39 void swap_float_bytes(
const int n,
float *buf);
40 virtual inline void seekTo(
const long long off,
const int whence){
43 virtual inline void seekToPos(
const long long pos){
47 void setFileParams(
const std::string nm,
const usage_code usage,
const int reelH,
const int traceH,
48 const int esize,
const bool swapData,std::shared_ptr<hypercube> hyper);
53 long long _reelH,_traceH;
56 std::shared_ptr<hypercube> _hyper;
60 myFileIO(
const std::string& nm,
const usage_code usage,
const int reelH,
const int traceH,
const int esize,
const bool swapData,std::shared_ptr<hypercube> hyper);
61 virtual inline void seekToPos(
const long long pos){
62 long long ft=getCurrentPos();
63 long long bg=1024*1024*1024;
64 long long diff=pos-ft;
67 if(diff>0) dst=std::min(bg,diff);
68 else dst=-std::min(-diff,bg);
69 fseek(_myf,dst,SEEK_CUR);
73 virtual inline void seekTo(
const long long pos,
const int whence){
75 fseek(_myf,pos,whence);
78 virtual long long getCurrentPos()
const {
81 virtual long long getSize(){
82 long long cp=getCurrentPos();
83 fseek(_myf,0L,SEEK_END);
84 long long end=getCurrentPos();
88 virtual void readStream(
const long long sz,
void *data);
89 virtual void writeStream(
const long long sz,
const void *data);
91 if(myf!=0) fclose(myf);