summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/tags.h
diff options
context:
space:
mode:
authorDarshan Shaligram <dshaligram@users.sourceforge.net>2011-01-03 22:03:29 +0530
committerDarshan Shaligram <dshaligram@users.sourceforge.net>2011-01-03 22:24:31 +0530
commit0470220645d576c0230e20e5688ff20bb64bfb36 (patch)
treeca1ff6f0e4960b1a01405a26193763157ad575b2 /crawl-ref/source/tags.h
parent90aec3c2775412cd8994db7bed86643aff9605df (diff)
downloadcrawl-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.h15
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);
/* ***********************************************************************