Templates, D way

crimaniak via Digitalmars-d digitalmars-d at puremagic.com
Tue Sep 5 05:20:14 PDT 2017


On Tuesday, 5 September 2017 at 11:08:57 UTC, Void-995 wrote:
> 	@property mixin(DataList!("firstSublist", 
> MyBinarySubStructAForA, firstSublistMembersCount, 
> firstSublistMembersOffset));
  I don't think string mixins are required here. It seems just 
template is more simple.

T[] getBytesAs(T, alias length, alias offset)()
{
     return (cast(T *)(cast(byte *)(&this) + offset))[0 .. length];
}

struct MyBinaryStructA
{
  ...
     alias firstList = getBytesAs!(MyBinarySubStructAForA, 
firstSublistMembersCount, firstSublistMembersOffset);
     alias secondList = getBytesAs!(MyBinarySubStructBForA, 
secondSublistMembersCount, secondSublistMembersOffset);
}

unittest
{
...
     MyBinaryStructA *binaryData = cast(MyBinaryStructA 
*)fileData.ptr;

     auto a = binaryData.firstList;
}


More information about the Digitalmars-d mailing list