QMCPACK
ParserClass.h
Go to the documentation of this file.
1 //////////////////////////////////////////////////////////////////////////////////////
2 // This file is distributed under the University of Illinois/NCSA Open Source License.
3 // See LICENSE file in top directory for details.
4 //
5 // Copyright (c) 2016 Jeongnim Kim and QMCPACK developers.
6 //
7 // File developed by: Paul R. C. Kent, kentpr@ornl.gov, Oak Ridge National Laboratory
8 // Ye Luo, yeluo@anl.gov, Argonne National Laboratory
9 // Mark A. Berrill, berrillma@ornl.gov, Oak Ridge National Laboratory
10 //
11 // File created by: Paul R. C. Kent, kentpr@ornl.gov, Oak Ridge National Laboratory
12 //////////////////////////////////////////////////////////////////////////////////////
13 
14 
15 #ifndef PARSER_CLASS_H
16 #define PARSER_CLASS_H
17 
18 #include <vector>
19 #include <string>
20 #include <complex>
21 #include <cstdio>
22 #include <fstream>
23 
24 
26 {
27 public:
28  std::streamsize FileSize(std::string fname);
29  virtual bool OpenFile(std::string fname) = 0;
30  virtual void CloseFile() = 0;
31  virtual bool FindToken(std::string token) = 0;
32  virtual bool ReadInt(int& val) = 0;
33  virtual bool ReadLong(long& val) = 0;
34  virtual bool ReadDouble(double& val) = 0;
35  virtual bool ReadWord(std::string& word) = 0;
36  virtual bool ReadLine(std::string& line) = 0;
37  virtual bool NextLine() = 0;
38  virtual void Reset() = 0;
39  virtual void SavePos() = 0;
40  virtual void RestorePos() = 0;
41  bool ReadComplex(std::complex<double>& val);
42 };
43 
45 {
46 private:
47  std::string Buffer;
48  int Pos, saved;
49 
50 public:
51  bool OpenFile(std::string fname) override;
52  void CloseFile() override;
53  bool FindToken(std::string token) override;
54  bool ReadInt(int& val) override;
55  bool ReadLong(long& val) override;
56  bool ReadDouble(double& val) override;
57  bool ReadComplex(std::complex<double>& val);
58  bool ReadWord(std::string& word) override;
59  bool ReadLine(std::string& line) override;
60  bool NextLine() override;
61  void SavePos() override;
62  void RestorePos() override;
63  void Reset() override;
64 
66  {
67  // do nothing for now
68  }
69 };
70 
71 
73 {
74 private:
75  std::ifstream Infile;
76  std::streampos FileSize;
77  std::streampos Pos, saved;
78 
79 public:
80  bool OpenFile(std::string fname) override;
81  void CloseFile() override;
82  bool FindToken(std::string token) override;
83  bool ReadInt(int& val) override;
84  bool ReadLong(long& val) override;
85  bool ReadDouble(double& val) override;
86  bool ReadComplex(std::complex<double>& val);
87  bool ReadWord(std::string& word) override;
88  bool ReadLine(std::string& line) override;
89  bool NextLine() override;
90  void SavePos() override;
91  void RestorePos() override;
92  void Reset() override;
93 
95  {
96  // do nothing for now
97  }
98 };
99 
101 {
102 private:
103  std::ifstream Infile;
104  long FileSize;
105  long Pos, saved;
106  std::string Buffer;
108  void ReadChunk(long startpos);
109  inline long BufferEnd() { return BufferStart + (long)Buffer.size(); }
110 
111 public:
112  bool OpenFile(std::string fname) override;
113  void CloseFile() override;
114  bool FindToken(std::string token) override;
115  bool ReadInt(int& val) override;
116  bool ReadLong(long& val) override;
117  bool ReadDouble(double& val) override;
118  bool ReadComplex(std::complex<double>& val);
119  bool ReadWord(std::string& word) override;
120  bool ReadLine(std::string& line) override;
121  bool NextLine() override;
122  void SavePos() override;
123  void RestorePos() override;
124  void Reset() override;
125 
126  FileParserClass2(int buffSize = 16777216) { MaxBufferSize = buffSize; }
127 };
128 
129 
130 #endif
void CloseFile() override
void Reset() override
bool NextLine() override
bool ReadDouble(double &val) override
bool NextLine() override
std::streamsize FileSize(std::string fname)
void SavePos() override
bool ReadComplex(std::complex< double > &val)
bool FindToken(std::string token) override
bool ReadWord(std::string &word) override
bool OpenFile(std::string fname) override
void CloseFile() override
virtual void RestorePos()=0
std::ifstream Infile
Definition: ParserClass.h:103
void SavePos() override
bool ReadDouble(double &val) override
bool ReadInt(int &val) override
bool FindToken(std::string token) override
std::string Buffer
Definition: ParserClass.h:47
bool ReadWord(std::string &word) override
bool ReadInt(int &val) override
virtual bool FindToken(std::string token)=0
bool ReadLong(long &val) override
bool ReadComplex(std::complex< double > &val)
bool ReadLine(std::string &line) override
virtual void SavePos()=0
void ReadChunk(long startpos)
bool ReadWord(std::string &word) override
bool OpenFile(std::string fname) override
virtual bool NextLine()=0
void Reset() override
bool ReadLong(long &val) override
bool ReadLine(std::string &line) override
std::ifstream Infile
Definition: ParserClass.h:75
bool ReadComplex(std::complex< double > &val)
virtual bool OpenFile(std::string fname)=0
virtual bool ReadInt(int &val)=0
std::streampos saved
Definition: ParserClass.h:77
bool ReadLong(long &val) override
void RestorePos() override
FileParserClass2(int buffSize=16777216)
Definition: ParserClass.h:126
bool FindToken(std::string token) override
std::string Buffer
Definition: ParserClass.h:106
std::streampos Pos
Definition: ParserClass.h:77
virtual bool ReadWord(std::string &word)=0
bool ReadInt(int &val) override
virtual bool ReadLong(long &val)=0
void RestorePos() override
void CloseFile() override
bool ReadComplex(std::complex< double > &val)
std::streampos FileSize
Definition: ParserClass.h:76
virtual bool ReadLine(std::string &line)=0
virtual void Reset()=0
bool OpenFile(std::string fname) override
void RestorePos() override
void SavePos() override
void Reset() override
bool ReadDouble(double &val) override
bool ReadLine(std::string &line) override
virtual void CloseFile()=0
virtual bool ReadDouble(double &val)=0
bool NextLine() override