git repos / blockattack-game

blame: source/code/Libs/include/cereal/external/rapidjson/filestream.h

normal view · raw

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