summaryrefslogtreecommitdiffstats
path: root/staging_vespalib
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@yahoo-inc.com>2017-03-30 13:39:49 +0000
committerTor Egge <Tor.Egge@yahoo-inc.com>2017-03-30 13:39:49 +0000
commitf49c04a3f62ef38d6bc77964c9f7137b68f6b6b0 (patch)
tree886282da7047ff9707f8ca9aeb720a5fab883475 /staging_vespalib
parent8ba178cec0ea2cafa912a3e27373e9ebdfd6fcee (diff)
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; }
};
/**