Curiously I'm making a huffman compression algo for fun, however I didn't see anything in std.array or anywhere that was to support bools specifically (in a packed form anyways). So I'm making one. So far I've got it saving the data as uint, 0 refers to the most significant bit and 7 the least significant, so A will come out as 0100001 and look right

It supports a range, however foreach doesn't like using front/popFront/empty if I make opApply. It supports slices as well.

 For the BitArray, using it as follows I get an error:

struct BitArray {
  alias length opDollar;
  alias length __dollar;

  int length();
  Range opSlice();
  Range opSlice(int s, int e);
  struct Range {
     int opDollar();
  }
}

 BitArray ba = BitArray(someArrayOfUbyte);
auto range = ba[0 .. $]; //needs to access 'this' for length? shouldn't it rewrite to ba[0 .. ba.opDollar()] ?
 auto range2 = ba[];      //works fine

It also seems the BitArray (but not the range) requires __dollar rather than opDollar, however an alias seems to fix that. (Why is this?? the Range doesn't need a __dollar alias to work right)

I also have it so you can ref the individual bools (by using an intermediate one in opApply). So..

//perfectly fine in unittest
foreach(ref r_b; range) {
  r_b = !r_b;
}

Reply via email to