diff options
author | Darshan Shaligram <dshaligram@users.sourceforge.net> | 2011-01-03 22:03:29 +0530 |
---|---|---|
committer | Darshan Shaligram <dshaligram@users.sourceforge.net> | 2011-01-03 22:24:31 +0530 |
commit | 0470220645d576c0230e20e5688ff20bb64bfb36 (patch) | |
tree | ca1ff6f0e4960b1a01405a26193763157ad575b2 /crawl-ref/source/tags.h | |
parent | 90aec3c2775412cd8994db7bed86643aff9605df (diff) | |
download | crawl-ref-0470220645d576c0230e20e5688ff20bb64bfb36.tar.gz crawl-ref-0470220645d576c0230e20e5688ff20bb64bfb36.zip |
Simplify tag minor version handling.
Make reader::getMinorVersion() the standard way of accessing a tagged chunk's
minor version. The old confusing situation where getMinorVersion() was
sometimes valid and sometimes not was a recipe for problems.
Diffstat (limited to 'crawl-ref/source/tags.h')
-rw-r--r-- | crawl-ref/source/tags.h | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/crawl-ref/source/tags.h b/crawl-ref/source/tags.h index 275d7bb851..4ef419c14d 100644 --- a/crawl-ref/source/tags.h +++ b/crawl-ref/source/tags.h @@ -155,8 +155,8 @@ void marshallSigned(writer& th, int64_t v); class reader { public: - reader(const std::string &filename, int minorVersion = TAG_MINOR_VERSION); - reader(FILE* input, int minorVersion = TAG_MINOR_VERSION) + reader(const std::string &filename, int minorVersion = TAG_MINOR_INVALID); + reader(FILE* input, int minorVersion = TAG_MINOR_INVALID) : _file(input), _chunk(0), opened_file(false), _pbuf(0), _read_offset(0), _minorVersion(minorVersion) {} reader(const std::vector<unsigned char>& input, @@ -170,11 +170,16 @@ public: unsigned char readByte(); void read(void *data, size_t size); void advance(size_t size); - int getMinorVersion(); + int getMinorVersion() const; + void setMinorVersion(int minorVersion); bool valid() const; - void fail_if_not_eof(const std::string name); + void fail_if_not_eof(const std::string &name); + void close(); + + std::string filename() const { return _filename; } private: + std::string _filename; FILE* _file; chunk_reader *_chunk; bool opened_file; @@ -228,7 +233,7 @@ static inline void unmarshallSigned(reader& th, T& v) * Tag interface * *********************************************************************** */ -void tag_read(reader &inf, int minorVersion, tag_type tag_id); +void tag_read(reader &inf, tag_type tag_id); void tag_write(tag_type tagID, writer &outf); /* *********************************************************************** |