net.inet: Replace CTFE-pow with pow operator

This commit is contained in:
Eugen Wissner 2018-04-20 15:15:00 +02:00
parent 964a7af32f
commit 5e40424f7d
1 changed files with 10 additions and 11 deletions

View File

@ -14,7 +14,6 @@
*/ */
module tanya.net.inet; module tanya.net.inet;
import std.math;
import tanya.meta.trait; import tanya.meta.trait;
import tanya.meta.transform; import tanya.meta.transform;
import tanya.range.primitive; import tanya.range.primitive;
@ -31,7 +30,7 @@ import tanya.range.primitive;
* L = Desired range length. * L = Desired range length.
*/ */
struct NetworkOrder(uint L) struct NetworkOrder(uint L)
if (L > ubyte.sizeof && L <= ulong.sizeof) if (L > ubyte.sizeof && L <= ulong.sizeof)
{ {
static if (L > uint.sizeof) static if (L > uint.sizeof)
{ {
@ -53,7 +52,7 @@ struct NetworkOrder(uint L)
private StorageType value; private StorageType value;
private size_t size = L; private size_t size = L;
const pure nothrow @safe @nogc invariant invariant
{ {
assert(this.size <= L); assert(this.size <= L);
} }
@ -69,13 +68,13 @@ struct NetworkOrder(uint L)
* T = Value type. * T = Value type.
* value = The value should be represented by this range. * value = The value should be represented by this range.
* *
* Precondition: $(D_INLINECODE value <= 2 ^^ (length * 8) - 1). * Precondition: $(D_INLINECODE value <= (2 ^^ (L * 8)) - 1).
*/ */
this(T)(const T value) this(T)(T value)
if (isUnsigned!T) if (isUnsigned!T)
in in
{ {
assert(value <= pow(2, L * 8) - 1); assert(value <= (2 ^^ (L * 8)) - 1);
} }
do do
{ {
@ -216,10 +215,10 @@ struct NetworkOrder(uint L)
* order. * order.
*/ */
T toHostOrder(T = size_t, R)(R range) T toHostOrder(T = size_t, R)(R range)
if (isInputRange!R if (isInputRange!R
&& !isInfinite!R && !isInfinite!R
&& is(Unqual!(ElementType!R) == ubyte) && is(Unqual!(ElementType!R) == ubyte)
&& isUnsigned!T) && isUnsigned!T)
{ {
T ret; T ret;
ushort pos = T.sizeof * 8; ushort pos = T.sizeof * 8;