- dropped auto-vivification for now (performance issue), but reworked to
allow easy reinstatement
- derived both iterator and const_iterator from iteratorBase and use
iteratorBase as our proxy for non-const access to the list elements.
This allows properly chaining assignments:
list[1] = list[2];
list[1] = list[2] = 10;
- assigning iterators from iteratorBase or other iterators works:
iterator iter = list[20];
- made template parameter nBits=1 the default
- the bit counting is relatively fast:
under 0.2 seconds for 1M bits counted 1000 times
- trim()'ing the final zero elements tested for a few cases,
but might need more attention
- incompressible, Boussinesq variant of buoyantSimpleFoam
- requires new fixedFluxBoussinesqBuoyantPressure bc on pd at walls
to balance the flux generated by the temperature gradient
- ditched PrimitivePatchExtra in favour of a PatchTools class that is
currently just a collection of static functions. They could equally well
live within PrimitivePatch itself, but isolated also has its advantages.
- MeshedSurface, UnsortedMeshedSurface now have 'regions' instead of
'patches' since they are more like a faceZone for meshed surfaces than
patches. This might avoid confusion at a later stage.
- exists() = forward to OSspecific exists(...)
- isDir() = forward to OSspecific dir(...)
- isFile() = forward to OSspecific file(...)
- IOobjectComponents() - split into instance, local, name following rules
set out for IOobject.
- added IOobject(path, registry, ...) constructor that uses
fileName::IOobjectComponents(). This hides the complexity we otherwise need.
- set() handles overflow as max_value() - the principle of least surprise.
- use pointers in iterator to avoid any assignment issues. Allows default
bitwise copy/assignment.
- added Mattijs' speed tests
- optimized resize() and assignment operators to avoid set() method
- add const_iterator and re-did the proxy handling.
Reading/writing by looping across iterators is still somewhat slow, but
might be acceptable.
- eliminated previous PackedBitRef class, the iterator does all of that and
can also be used to (forward) traverse the list
- no const_iterator yet
- Note that PackedList is also a bit like DynamicList in terms of storage
management and the append() method. Since the underlying storage in
integer, any auto-vivified elements will also flood-fill the gaps with
zero.