From f49c04a3f62ef38d6bc77964c9f7137b68f6b6b0 Mon Sep 17 00:00:00 2001 From: Tor Egge Date: Thu, 30 Mar 2017 13:39:49 +0000 Subject: Add convenience methods for storing boolean values in integer tags. --- .../src/tests/fileheader/fileheader_test.cpp | 10 ++++++++++ .../src/vespa/vespalib/data/fileheader.cpp | 20 ++++++++++++++++++++ .../src/vespa/vespalib/data/fileheader.h | 3 +++ 3 files changed, 33 insertions(+) (limited to 'staging_vespalib') diff --git a/staging_vespalib/src/tests/fileheader/fileheader_test.cpp b/staging_vespalib/src/tests/fileheader/fileheader_test.cpp index 4e9c8959ca5..2d47739100c 100644 --- a/staging_vespalib/src/tests/fileheader/fileheader_test.cpp +++ b/staging_vespalib/src/tests/fileheader/fileheader_test.cpp @@ -146,6 +146,16 @@ Test::testTag() tag = tmp; } } + { + GenericHeader::Tag trueTag("foo", true); + GenericHeader::Tag falseTag("foo", false); + EXPECT_EQUAL(GenericHeader::Tag::TYPE_INTEGER, trueTag.getType()); + EXPECT_EQUAL(GenericHeader::Tag::TYPE_INTEGER, falseTag.getType()); + EXPECT_EQUAL(1, trueTag.asInteger()); + EXPECT_EQUAL(0, falseTag.asInteger()); + EXPECT_TRUE(trueTag.asBool()); + EXPECT_FALSE(falseTag.asBool()); + } } void diff --git a/staging_vespalib/src/vespa/vespalib/data/fileheader.cpp b/staging_vespalib/src/vespa/vespalib/data/fileheader.cpp index 7ee0db4bdf3..f4e4716f454 100644 --- a/staging_vespalib/src/vespa/vespalib/data/fileheader.cpp +++ b/staging_vespalib/src/vespa/vespalib/data/fileheader.cpp @@ -125,6 +125,26 @@ GenericHeader::Tag::Tag(const vespalib::string &name, uint64_t val) : // empty } +GenericHeader::Tag::Tag(const vespalib::string &name, bool val) + : _type(TYPE_INTEGER), + _name(name), + _fVal(0), + _iVal(val ? 1 : 0), + _sVal("") +{ + // empty +} + +GenericHeader::Tag::Tag(const vespalib::string &name, const char *val) + : _type(TYPE_STRING), + _name(name), + _fVal(0), + _iVal(0), + _sVal(val) +{ + // empty +} + GenericHeader::Tag::Tag(const vespalib::string &name, const vespalib::string &val) : _type(TYPE_STRING), _name(name), diff --git a/staging_vespalib/src/vespa/vespalib/data/fileheader.h b/staging_vespalib/src/vespa/vespalib/data/fileheader.h index 4ad6172bd2b..5c8b63bbd93 100644 --- a/staging_vespalib/src/vespa/vespalib/data/fileheader.h +++ b/staging_vespalib/src/vespa/vespalib/data/fileheader.h @@ -59,6 +59,8 @@ public: Tag(const vespalib::string &name, uint32_t val); Tag(const vespalib::string &name, int64_t val); Tag(const vespalib::string &name, uint64_t val); + Tag(const vespalib::string &name, bool val); + Tag(const vespalib::string &name, const char *val); Tag(const vespalib::string &name, const vespalib::string &val); ~Tag(); @@ -73,6 +75,7 @@ public: double asFloat() const { return _fVal; } int64_t asInteger() const { return _iVal; } const vespalib::string &asString() const { return _sVal; } + bool asBool() const { return _iVal != 0; } }; /** -- cgit v1.2.3