| 7a956470 |
sago007 |
2016-02-14 17:09 |
1 |
#ifndef RAPIDJSON_FILESTREAM_H_
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
2 |
#define RAPIDJSON_FILESTREAM_H_
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
3 |
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
4 |
#include <cstdio>
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
5 |
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
6 |
namespace rapidjson {
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
7 |
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
8 |
//! Wrapper of C file stream for input or output.
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
9 |
/*!
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
10 |
This simple wrapper does not check the validity of the stream.
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
11 |
\implements Stream
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
12 |
*/
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
13 |
class FileStream {
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
14 |
public:
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
15 |
typedef char Ch; //!< Character type. Only support char.
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
16 |
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
17 |
FileStream(FILE* fp) : fp_(fp), count_(0) { Read(); }
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
18 |
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
19 |
char Peek() const { return current_; }
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
20 |
char Take() { char c = current_; Read(); return c; }
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
21 |
size_t Tell() const { return count_; }
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
22 |
void Put(char c) { fputc(c, fp_); }
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
23 |
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
24 |
// Not implemented
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
25 |
char* PutBegin() { return 0; }
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
26 |
size_t PutEnd(char*) { return 0; }
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
27 |
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
28 |
private:
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
29 |
void Read() {
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
30 |
RAPIDJSON_ASSERT(fp_ != 0);
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
31 |
int c = fgetc(fp_);
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
32 |
if (c != EOF) {
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
33 |
current_ = (char)c;
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
34 |
count_++;
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
35 |
}
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
36 |
else
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
37 |
current_ = '\0';
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
38 |
}
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
39 |
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
40 |
FILE* fp_;
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
41 |
char current_;
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
42 |
size_t count_;
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
43 |
};
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
44 |
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
45 |
} // namespace rapidjson
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
46 |
|
| 7a956470 |
sago007 |
2016-02-14 17:09 |
47 |
#endif // RAPIDJSON_FILESTREAM_H_
|
|
|
1970-01-01 00:00 |
48 |
|