summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-03-17 20:16:22 +0100
committerGitHub <noreply@github.com>2019-03-17 20:16:22 +0100
commit5d85d59f46565111563f731bb681b823bed20696 (patch)
tree4b33cf5b9ee1d1a306284c92172012aea496b6b5 /searchlib
parent62e24214b736b6d3d29b5a8840809147bb1062fa (diff)
parentca51f8194ac8a36f0d9d1b77c9ecf224d51dfa2b (diff)
Merge pull request #8809 from vespa-engine/toregge/handle-long-long-in-statebuf
Also handle long long in search::StateBuf.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/tests/util/statebuf/statebuf_test.cpp12
-rw-r--r--searchlib/src/vespa/searchlib/util/statebuf.cpp28
-rw-r--r--searchlib/src/vespa/searchlib/util/statebuf.h6
3 files changed, 37 insertions, 9 deletions
diff --git a/searchlib/src/tests/util/statebuf/statebuf_test.cpp b/searchlib/src/tests/util/statebuf/statebuf_test.cpp
index 61f1194bcb6..40abf942fa1 100644
--- a/searchlib/src/tests/util/statebuf/statebuf_test.cpp
+++ b/searchlib/src/tests/util/statebuf/statebuf_test.cpp
@@ -52,10 +52,16 @@ TEST_F("keys can be appended to stream", Fixture)
}
-TEST_F("integers can be appended to stream", Fixture)
+TEST_F("positive integers can be appended to stream", Fixture)
{
- f << (UINT64_C(1) << 63) << " " << -42l << " " << 0l;
- EXPECT_EQUAL("9223372036854775808 -42 0", f.str());
+ f << (1ull << 63) << " " << 42l << " " << 21 << " " << 0;
+ EXPECT_EQUAL("9223372036854775808 42 21 0", f.str());
+}
+
+TEST_F("negative integers can be appended to stream", Fixture)
+{
+ f << (1ll << 63) << " " << -42l << " " << -21;
+ EXPECT_EQUAL("-9223372036854775808 -42 -21", f.str());
}
TEST_F("struct timespec can be appended to stream", Fixture)
diff --git a/searchlib/src/vespa/searchlib/util/statebuf.cpp b/searchlib/src/vespa/searchlib/util/statebuf.cpp
index 12d18599a41..af1c7dda30d 100644
--- a/searchlib/src/vespa/searchlib/util/statebuf.cpp
+++ b/searchlib/src/vespa/searchlib/util/statebuf.cpp
@@ -72,7 +72,7 @@ StateBuf::appendKey(const char *s) noexcept
StateBuf &
-StateBuf::operator<<(unsigned long val) noexcept
+StateBuf::operator<<(unsigned long long val) noexcept
{
char buf[22];
char *p = buf;
@@ -92,21 +92,37 @@ StateBuf::operator<<(unsigned long val) noexcept
StateBuf &
-StateBuf::operator<<(long val) noexcept
+StateBuf::operator<<(long long val) noexcept
{
if (val < 0) {
- *this << '-' << static_cast<unsigned long>(- val);
+ *this << '-' << static_cast<unsigned long long>(- val);
} else {
- *this << static_cast<unsigned long>(val);
+ *this << static_cast<unsigned long long>(val);
}
return *this;
}
StateBuf &
+StateBuf::operator<<(unsigned long val) noexcept
+{
+ *this << static_cast<unsigned long long>(val);
+ return *this;
+}
+
+
+StateBuf &
+StateBuf::operator<<(long val) noexcept
+{
+ *this << static_cast<long long>(val);
+ return *this;
+}
+
+
+StateBuf &
StateBuf::operator<<(unsigned int val) noexcept
{
- *this << static_cast<unsigned long>(val);
+ *this << static_cast<unsigned long long>(val);
return *this;
}
@@ -114,7 +130,7 @@ StateBuf::operator<<(unsigned int val) noexcept
StateBuf &
StateBuf::operator<<(int val) noexcept
{
- *this << static_cast<long>(val);
+ *this << static_cast<long long>(val);
return *this;
}
diff --git a/searchlib/src/vespa/searchlib/util/statebuf.h b/searchlib/src/vespa/searchlib/util/statebuf.h
index 6f847e82c66..3dbf8beaf16 100644
--- a/searchlib/src/vespa/searchlib/util/statebuf.h
+++ b/searchlib/src/vespa/searchlib/util/statebuf.h
@@ -59,6 +59,12 @@ public:
appendAddr(void *addr) noexcept;
StateBuf &
+ operator<<(unsigned long long val) noexcept;
+
+ StateBuf &
+ operator<<(long long val) noexcept;
+
+ StateBuf &
operator<<(unsigned long val) noexcept;
StateBuf &