File IdPair.hpp¶
File List > astrea > trace > trace > types > IdPair.hpp
Go to the documentation of this file
#pragma once
#include <cstdint>
#include <functional>
namespace astrea {
namespace trace {
struct IdPair {
std::size_t sender;
std::size_t receiver;
IdPair() = default;
IdPair(std::size_t sender, std::size_t receiver) :
sender(sender),
receiver(receiver)
{
}
IdPair(const IdPair& other) :
sender(other.sender),
receiver(other.receiver)
{
}
~IdPair() = default;
bool operator==(const IdPair& other) const { return (sender == other.sender && receiver == other.receiver); }
};
} // namespace trace
} // namespace astrea
template <>
struct std::hash<astrea::trace::IdPair> {
std::size_t operator()(const astrea::trace::IdPair& k) const
{
return (std::hash<std::size_t>()(k.sender)) ^ (std::hash<std::size_t>()(k.receiver));
}
};
template <>
struct std::less<astrea::trace::IdPair> {
bool operator()(const astrea::trace::IdPair& lhs, const astrea::trace::IdPair& rhs) const
{
if (lhs.sender == rhs.sender) { return lhs.receiver < rhs.receiver; }
else {
return lhs.sender < rhs.sender;
}
};
};