Forgotten changes from the previous commit

This commit is contained in:
Zahary Karadjov 2020-06-05 19:19:06 +03:00
parent c0f884b81b
commit bb2221ba8c
No known key found for this signature in database
GPG Key ID: C8936F8A3073D609
1 changed files with 18 additions and 8 deletions

View File

@ -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.}