Skip to content

Commit

Permalink
Merge pull request zeromq#513 from geirhei/geirhei/multipart-equality…
Browse files Browse the repository at this point in the history
…-operator

Add == and != operators for multipart_t
  • Loading branch information
gummif committed Sep 12, 2021
2 parents 267d300 + 14f304f commit e0314c9
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 3 deletions.
15 changes: 15 additions & 0 deletions tests/multipart.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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());

Expand Down
16 changes: 13 additions & 3 deletions zmq_addon.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down

0 comments on commit e0314c9

Please sign in to comment.