• Mark Olesen's avatar
    ENH: code reduction in PackedList, PackedBoolList (issue #751) · 5d1fb235
    Mark Olesen authored
    - eliminate iterators from PackedList since they were unused, had
      lower performance than direct access and added unneeded complexity.
    - eliminate auto-vivify for the PackedList '[] operator.
      The set() method provides any required auto-vivification and
      removing this ability from the '[]' operator allows for a lower
      when accessing the values. Replaced the previous cascade of iterators
      with simpler reference class.
    - (temporarily) eliminate logic and addition operators since
      these contained partially unclear semantics.
    - the new test() method tests the value of a single bit position and
      returns a bool without any ambiguity caused by the return type
      (like the get() method), nor the const/non-const access (like
      operator[] has). The name corresponds to what std::bitset uses.
    - more consistent use of PackedBoolList test(), set(), unset() methods
      for fewer operation and clearer code. Eg,
          if (list.test(index)) ...    |  if (list[index]) ...
          if (!list.test(index)) ...   |  if (list[index] == 0u) ...
          list.set(index);             |  list[index] = 1u;
          list.unset(index);           |  list[index] = 0u;
    - deleted the operator=(const labelUList&) and replaced with a setMany()
      method for more clarity about the intended operation and to avoid any
      potential inadvertent behaviour.