BAN: Add more APIs for IPv4 address
This commit is contained in:
parent
bc1441a5eb
commit
c18f72ceb9
|
@ -1,13 +1,14 @@
|
|||
#pragma once
|
||||
|
||||
#include <BAN/Formatter.h>
|
||||
#include <BAN/Hash.h>
|
||||
|
||||
namespace BAN
|
||||
{
|
||||
|
||||
struct IPv4Address
|
||||
{
|
||||
IPv4Address(uint32_t u32_address)
|
||||
constexpr IPv4Address(uint32_t u32_address)
|
||||
{
|
||||
address[0] = u32_address >> 24;
|
||||
address[1] = u32_address >> 16;
|
||||
|
@ -15,7 +16,7 @@ namespace BAN
|
|||
address[3] = u32_address >> 0;
|
||||
}
|
||||
|
||||
constexpr uint32_t as_u32()
|
||||
constexpr uint32_t as_u32() const
|
||||
{
|
||||
return
|
||||
((uint32_t)address[0] << 24) |
|
||||
|
@ -24,10 +25,28 @@ namespace BAN
|
|||
((uint32_t)address[3] << 0);
|
||||
}
|
||||
|
||||
constexpr bool operator==(const IPv4Address& other) const
|
||||
{
|
||||
return
|
||||
address[0] == other.address[0] &&
|
||||
address[1] == other.address[1] &&
|
||||
address[2] == other.address[2] &&
|
||||
address[3] == other.address[3];
|
||||
}
|
||||
|
||||
uint8_t address[4];
|
||||
};
|
||||
static_assert(sizeof(IPv4Address) == 4);
|
||||
|
||||
template<>
|
||||
struct hash<IPv4Address>
|
||||
{
|
||||
constexpr hash_t operator()(IPv4Address ipv4) const
|
||||
{
|
||||
return hash<uint32_t>()(ipv4.as_u32());
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
namespace BAN::Formatter
|
||||
|
|
Loading…
Reference in New Issue