Cerealed v0.6.1: even less boilerplate for binary serialization
Dicebot via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Mon Aug 3 02:27:01 PDT 2015
On Monday, 3 August 2015 at 09:21:50 UTC, Atila Neves wrote:
> The summary is you can now write this:
>
> struct UdpPacket {
> static struct Header {
> ushort srcPort;
> ushort dstPort;
> ushort length;
> ushort checksum;
> }
>
> enum headerSize = unalignedSizeof!Header;
> alias header this;
>
> Header header;
> @LengthInBytes("length - headerSize") ubyte[] data;
> }
>
This deserialization will be identical to casting like this,
right? (Not trying to diminish your work, just making sure I get
semantics :))
align(1)
struct UdpPacket
{
align(1)
static struct Header {
ushort srcPort;
ushort dstPort;
ushort length;
ushort checksum;
}
Header header;
ubyte[0] data;
}
// ...
auto packet = cast(UdpPacket*) raw_data.ptr;
More information about the Digitalmars-d-announce
mailing list