Add == and != operators for multipart_t

Closes #512
This commit is contained in:
Geir Henning Eikeland 2021-09-11 22:20:30 +02:00
parent 267d300d1c
commit 14f304f987
2 changed files with 28 additions and 3 deletions

View File

@ -75,6 +75,21 @@ TEST_CASE("multipart legacy test", "[multipart]")
assert(ok);
assert(copy.equal(&multipart));
// Test equality operators
assert(copy == multipart);
assert(multipart == copy);
multipart.pop();
assert(copy != multipart);
assert(multipart != copy);
multipart_t emptyMessage1 {};
multipart_t emptyMessage2 {};
assert(emptyMessage1 == emptyMessage2);
assert(emptyMessage2 == emptyMessage1);
multipart.clear();
assert(multipart.empty());

View File

@ -612,16 +612,26 @@ class multipart_t
}
// Check if equal to other multipart
bool equal(const multipart_t *other) const
bool equal(const multipart_t *other) const ZMQ_NOTHROW
{
if (size() != other->size())
return *this == *other;
}
bool operator==(const multipart_t &other) const ZMQ_NOTHROW
{
if (size() != other.size())
return false;
for (size_t i = 0; i < size(); i++)
if (*peek(i) != *other->peek(i))
if (at(i) != other.at(i))
return false;
return true;
}
bool operator!=(const multipart_t &other) const ZMQ_NOTHROW
{
return !(*this == other);
}
#ifdef ZMQ_CPP11
// Return single part message_t encoded from this multipart_t.