genericIO
rsfRegFiles.h
1 #ifndef rsf_REGFILE_FUNC_H
2 #define rsf_REGFILE_FUNC_H 1
3 #include <string>
4 #include <stdbool.h>
5 #include "genericFile.h"
6 #include "basicIO.h"
7 #define NO_BLAS 1
8 extern "C" {
9 #include <rsf.h>
10 }
11 
12 class rsfBasic : public basicIO {
13 public:
14 rsfBasic(sf_file file){
15  _file=file;
16 }
17 virtual inline void seekToPos(const long long pos){
18  long long ft=ftell(_myf);
19  long long bg=1024*1024*1024;
20  long long diff=pos-ft;
21  while(diff!=0) {
22  long long dst;
23  if(diff>0) dst=std::min(bg,diff);
24  else dst=-std::min(-diff,bg);
25  sf_seek(_file,dst,SEEK_CUR);
26  diff-=dst;
27  }
28 }
29 virtual void readStream(const long long sz, void *data){
30  sf_ucharread((unsigned char*)data,sz,_file);
31 
32 }
33 virtual void writeStream(const long long sz, const void *data){
34 
35  sf_ucharwrite((unsigned char*)data,sz,_file);
36 
37 }
38 
39 sf_file _file;
40 
41 };
42 class rsfRegFile : public genericRegFile {
43 public:
44 
45 // rsfRegFile::rsfRegFile(const std::string tag,usage_code usage){
46 
47 rsfRegFile(std::string tg, usage_code usage);
48 virtual int getInt(const std::string arg) const;
49 virtual int getInt(const std::string arg, const int def) const;
50 
51 virtual float getFloat(const std::string, const float def) const;
52 virtual float getFloat(const std::string) const;
53 
54 virtual std::string getString(const std::string arg) const;
55 virtual std::string getString(const std::string arg, const std::string def) const;
56 
57 
58 virtual bool getBool(const std::string, const bool def) const;
59 virtual bool getBool(const std::string) const;
60 virtual void seekTo(const long long iv,const int whence);
61 
62 
63 virtual std::vector<int> getInts(const std::string arg,int num) const;
64 virtual std::vector<int> getInts(const std::string arg,std::vector<int> &defs) const;
65 
66 virtual std::vector<float> getFloats(const std::string arg,int num) const;
67 virtual std::vector<float> getFloats(const std::string arg,std::vector<float> &defs) const;
68 
69 virtual void error(const std::string err) const;
70 virtual void readComplexStream(float _Complex*array,const long long npts);
71 virtual void readFloatStream(float *array,const long long npts);
72 virtual void readUCharStream(unsigned char *array,const long long npts);
73 virtual void writeComplexStream( const float _Complex *array,const long long npts);
74 
75 virtual void writeFloatStream( const float *array,const long long npts);
76 virtual void readUCharWindow(const std::vector<int>& nw, const std::vector<int>& fw,
77  const std::vector<int>& jw, unsigned char *array);
78 
79 virtual void readComplexWindow(const std::vector<int>& nw, const std::vector<int> &fw,
80  const std::vector<int> &jw, float _Complex *array);
81 
82 virtual void writeComplexWindow(const std::vector<int>& nw, const std::vector<int>& fw,
83  const std::vector<int>& jw, float _Complex *array);
84 
85 virtual void readFloatWindow(const std::vector<int> &nw, const std::vector<int> &fw,
86  const std::vector<int>& jw, float *array);
87 
88 virtual void writeFloatWindow(const std::vector<int>& nw, const std::vector<int>& fw,
89  const std::vector<int> &jw, float *array);
90 virtual void readDescription();
91 virtual void writeDescription();
92 virtual void putInt(const std::string par, const int val);
93 virtual void putFloat(const std::string par, const float val);
94 virtual void putString(const std::string par, const std::string val);
95 virtual void putBool(const std::string par, const bool val);
96 virtual void putInts(const std::string par, const std::vector<int> val);
97 virtual void putFloats(const std::string par, const std::vector<float> val);
98 virtual void close() const {
99  sf_fileclose(_file);
100 }
101 
102 
103 private:
104 usage_code _usage;
105 std::string _tag;
106 sf_file _file;
107 std::shared_ptr<rsfBasic> myio;
108 int _esize;
109 };
110 
111 
112 
113 
114 
115 
116 
117 
118 
119 #endif
Definition: rsfRegFiles.h:12
Definition: rsfRegFiles.h:42