- previously using an '|=' or '^=' would increase the list size to
match the RHS. Now it only increases to last bit set.
- limit bit-wise operations to addressable range for minor efficiency
improvement
- trim results from '&' and '^' operations for more consistent
behaviour
The compact ASCII format is a block of index/value tuples for the
non-zero entries:
{ (index1 value1) (index2 value2) (index3 value3) }
For PackedList<1>, and thus PackedBoolList, the compact ASCII format is
a block of indices for the non-zero entries:
{ index1 index2 index3 }
Thus either of the following could be used - for PackedList<2>:
- a list of all values:
16(0 3 0 2 0 0 3 1 0 0 0 0 0 0 0 1)
- a block of index/value tuples:
{(1 3) (3 2) (7 3) (8 1) (15 1)}
For PackedList<1> and PackedBoolList, either of the following could be
used:
- a list of all values, using any valid bool representation:
16(0 1 0 true 0 0 t 1 0 n n 0 0 0 0 yes)
- a block of the indices for non-zero entries:
{1 3 7 8 15}
ENH: adjust internal storage of PackedList to ensure that all unused
internal storage elements are guaranteed to always be bit-wise
zero. This makes the PackedBoolList implementation easier, and
also greatly eases much of the book-keeping.
Bits are now also zeroed on PackedList::clear()
Note: in PackedList, require packing at least 2 items otherwise it is
more efficient to use a normal list.