Forgotten changes from the previous commit
This commit is contained in:
parent
c0f884b81b
commit
bb2221ba8c
|
@ -2,32 +2,42 @@ import std/net as stdNet
|
|||
export stdNet
|
||||
|
||||
type
|
||||
ValidIpAddress* = distinct IpAddress
|
||||
ValidIpAddress* {.requiresInit.} = object
|
||||
value: IpAddress
|
||||
|
||||
{.push raises: [Defect].}
|
||||
|
||||
proc ipv4*(address: array[4, byte]): ValidIpAddress =
|
||||
ValidIpAddress IpAddress(family: IPv4, address_v4: address)
|
||||
ValidIpAddress(value: IpAddress(family: IPv4, address_v4: address))
|
||||
|
||||
template ipv4*(a, b, c, d: byte): ValidIpAddress =
|
||||
ipv4([a, b, c, d])
|
||||
|
||||
proc ipv6*(address: array[16, byte]): ValidIpAddress =
|
||||
ValidIpAddress IpAddress(family: IPv6, address_v6: address)
|
||||
ValidIpAddress(value: IpAddress(family: IPv6, address_v6: address))
|
||||
|
||||
template family*(a: ValidIpAddress): IpAddressFamily =
|
||||
IpAddress(a).family
|
||||
a.value.family
|
||||
|
||||
template address_v4*(a: ValidIpAddress): array[4, byte] =
|
||||
IpAddress(a).address_v4
|
||||
a.value.address_v4
|
||||
|
||||
template address_v6*(a: ValidIpAddress): array[16, byte] =
|
||||
IpAddress(a).address_v6
|
||||
a.value.address_v6
|
||||
|
||||
template `$`*(a: ValidIpAddress): string =
|
||||
$ IpAddress(a)
|
||||
$a.value
|
||||
|
||||
func init*(T: type ValidIpAddress, str: string): T
|
||||
{.raises: [ValueError].} =
|
||||
ValidIpAddress stdNet.parseIpAddress(str)
|
||||
ValidIpAddress(value: stdNet.parseIpAddress(str))
|
||||
|
||||
func init*(T: type ValidIpAddress, ip: IpAddress): T
|
||||
{.raises: [ValueError].} =
|
||||
ValidIpAddress(value: ip)
|
||||
|
||||
converter toNormalIp*(ip: ValidIpAddress): IpAddress =
|
||||
ip.value
|
||||
|
||||
func default*(T: type ValidIpAddress): T {.error.}
|
||||
|
||||
|
|
Loading…
Reference in New Issue