Joseph Rushton Wakeling:

I take it you mean std.bitmanip.BitArray ... ?

Right.


I ran into some interesting problems which are probably down to incomplete
implementation: e.g.

    myBitArray.length += n;

... results in a compiler error message: myBitArray.length() is not an lvalue

This is just a missing feature. Someone should implement it. std.bitmanip.BitArray lacks several small features.


BitArrays are also not sliceable, it seems.

This is a bit more complex to implement in BitArray.
One way to implement it is to copy all the sliced data, with no alignment, and create a new BitArray. But this is semantically different from the regular array slicing (that doesn't copy data). If you don't want to copy data then you have to add to BitArray a field (one ubyte one uint, if you use an ubyte it needs a static if for static safety) that represents the 0..(size_T.sizeof * 8) offset. But this could slow down a bit the access of single bits.

Bye,
bearophile

Reply via email to