net.inet: Replace CTFE-pow with pow operator
This commit is contained in:
parent
964a7af32f
commit
5e40424f7d
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user