filestream.h
Go to the documentation of this file.
1 #ifndef RAPIDJSON_FILESTREAM_H_
2 #define RAPIDJSON_FILESTREAM_H_
3 
4 #include <cstdio>
5 
6 namespace rapidjson {
7 
9 
13 class FileStream {
14 public:
15  typedef char Ch;
16 
17  FileStream(FILE* fp) : fp_(fp), count_(0) { Read(); }
18 
19  char Peek() const { return current_; }
20  char Take() { char c = current_; Read(); return c; }
21  size_t Tell() const { return count_; }
22  void Put(char c) { fputc(c, fp_); }
23 
24  // Not implemented
25  char* PutBegin() { return 0; }
26  size_t PutEnd(char*) { return 0; }
27 
28 private:
29  void Read() {
30  RAPIDJSON_ASSERT(fp_ != 0);
31  int c = fgetc(fp_);
32  if (c != EOF) {
33  current_ = (char)c;
34  count_++;
35  }
36  else
37  current_ = '\0';
38  }
39 
40  FILE* fp_;
41  char current_;
42  size_t count_;
43 };
44 
45 } // namespace rapidjson
46 
47 #endif // RAPIDJSON_FILESTREAM_H_
Wrapper of C file stream for input or output.
Definition: filestream.h:13
void Put(char c)
Definition: filestream.h:22
FileStream(FILE *fp)
Definition: filestream.h:17
void Read()
Definition: filestream.h:29
char Ch
Character type. Only support char.
Definition: filestream.h:15
char current_
Definition: filestream.h:41
char * PutBegin()
Definition: filestream.h:25
FILE * fp_
Definition: filestream.h:40
char Peek() const
Definition: filestream.h:19
size_t count_
Definition: filestream.h:42
size_t Tell() const
Definition: filestream.h:21
size_t PutEnd(char *)
Definition: filestream.h:26
char Take()
Definition: filestream.h:20
int c
Definition: calibrate.py:100
Definition: document.h:13
#define RAPIDJSON_ASSERT(x)
Assertion.
Definition: rapidjson.h:80