summaryrefslogtreecommitdiffstats
path: root/staging_vespalib
diff options
context:
space:
mode:
authorGeir Storli <geirstorli@yahoo.no>2017-03-30 15:59:41 +0200
committerGitHub <noreply@github.com>2017-03-30 15:59:41 +0200
commite1abfd25bae0956b549eebe2be03a159565451b3 (patch)
treee2d5489ea28bf156a0a093303ca44587c365c766 /staging_vespalib
parent7b478602d33afdfb53f5c95e880db14f02b3707f (diff)
parentf49c04a3f62ef38d6bc77964c9f7137b68f6b6b0 (diff)
Merge pull request #2109 from yahoo/toregge/add-convenience-methods-for-storing-bools-in-integer-tags
Add convenience methods for storing boolean values in integer tags.
Diffstat (limited to 'staging_vespalib')
-rw-r--r--staging_vespalib/src/tests/fileheader/fileheader_test.cpp10
-rw-r--r--staging_vespalib/src/vespa/vespalib/data/fileheader.cpp20
-rw-r--r--staging_vespalib/src/vespa/vespalib/data/fileheader.h3
3 files changed, 33 insertions, 0 deletions
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; }
};
/**