[Issue 24086] New: No output or failed function call
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Tue Aug 15 01:26:07 UTC 2023
https://issues.dlang.org/show_bug.cgi?id=24086
Issue ID: 24086
Summary: No output or failed function call
Product: D
Version: D2
Hardware: x86
URL: http://dlang.org/
OS: All
Status: NEW
Severity: major
Priority: P3
Component: dmd
Assignee: nobody at puremagic.com
Reporter: apz28 at hotmail.com
import std.stdio;
import std.bitmanip : bigEndianToNative, nativeToBigEndian;
nothrow @safe:
struct X(int N)
{
@nogc nothrow @safe:
enum HALFSize = N / 2;
alias HALF = makeHALF!HALFSize;
version (LittleEndian)
{
HALF lo;
HALF hi;
}
else
{
HALF hi;
HALF lo;
}
this(scope const(ubyte)[] bigEndianBytes) pure
{
}
ubyte[] toBigEndianBytes(return ubyte[] bytes) const
in
{
assert(bytes.length == N);
}
do
{
debug writeln("toBigEndianBytes: ", Bytes);
static if (N <= 4)
{
bytes[0..HALFSize] = nativeToBigEndian(hi);
bytes[HALFSize..N] = nativeToBigEndian(lo);
}
else
{
hi.toBigEndianBytes(bytes[0..HALFSize]);
lo.toBigEndianBytes(bytes[HALFSize..N]);
}
return bytes;
}
}
template makeHALF(int N)
{
static if (N >= 4)
alias makeHALF = X!N;
else static if (N == 2)
alias makeHALF = ushort;
else static if (N == 1)
alias makeHALF = ubyte;
else
static assert(0, "Unsupport makeHALF");
}
alias x4 = X!4;
alias x8 = X!8;
static immutable x4[2] x4s = [
x4([1]),
x4([2]),
];
static immutable x8[2] x8s = [
x8([3]),
x8([4]),
];
void main()
{
ubyte[4] b4;
foreach (i, e; x4s)
{
debug writeln("x4s: [", i, "] ", e.toBigEndianBytes(b4));
}
ubyte[8] b8;
foreach (i, e; x8s)
{
debug writeln("x8s: [", i, "] ", e.toBigEndianBytes(b8));
}
}
--
More information about the Digitalmars-d-bugs
mailing list