- this should provide a slightly more naturally means to using transfer
constructors, for example
labelList list2(list1.transfer());
vs. labelList list2(xferMove(list1));
- returns a plain list where appropriate (eg, DynamicList, SortableList)
for example
labelList list2(dynList1.transfer());
vs. labelList list2(xferMoveTo<labelList>(dynList1));
StaticHashTable:
- erase(iterator&) now actually alters the iterator and iterator++() handles
it properly
- clear() also sets count to zero
- operator=(const StaticHashTable&) doesn't crash after a previous transfer
- operator(), operator==() and operator!=() added
HashTable:
- operator=(const HashTable&) gets tableSize if required, eg, after a
previous transfer)
HashSet / Map
- add xfer<...> constructor for underlying HashTable
- added boundBox(const tmp<pointField>&) constructor for use with
coordinate systems
- moved some methods from treeBoundBox to boundBox and use VectorSpace ops
//- Does the surface need an update?
virtual bool needsUpdate() const = 0;
//- Mark the surface as needing an update.
// May also free up unneeded data.
// Return false if surface was already marked as expired.
virtual bool expire() = 0;
//- Update the surface as required.
// Do nothing (and return false) if no update was required
virtual bool update() = 0;
The constructors for the derived classes should generally start in a
'expired' condition (ie, needsUpdate() == true) and rely on a subsequent
call to the update() method to complete the initialization. Delaying the
final construction as late as possible allows the construction of
surfaces that may depend on intermediate calculation results (eg,
iso-surfaces) and also avoids the unnecessary reconstruction of surfaces
between sampling intervals.
It is the responsibility of the caller to ensure that the surface
update() is called before the surface is used. The update() method
implementation should do nothing when the surface is already up-to-date.
- This was originally plan 'B', but it is actually probably more efficient
than using PtrDictionary anyhow.
- straightened out the return value logic, but it wasn't being used anywhere
anyhow.
- new 'updated_' data member avoids inadvertent execution in the read()
method when execution is turned off.
- if mandatory is true, findEtcFile() will abort with a message (via cerr).
This allows a non-existent file to be caught at the lowest level and avoid
error handling in IFstream, which might not be initialized at that stage.
- the improved side-effect of enabling -zeroTimea alters default selection
behaviour and -latestTime selection behaviour for utilities in which
accidentally using the 0/ directory can cause damage (eg, reconstructPar)
- can combine -time ranges and -latestTime
- can now use dictionary substitutions and regular expressions in
system/fvSolution
- foamUpgradeFvSolution application to convert system/fvSolution
(with -test option)
motion solver syntax left as-is.
- dropped setSize() in favour of List::setSize().
The size of the indices is set in sort() anyhow and undefined before that.
- added reverseSort() method
- added ListOps uniqueOrder() and duplicateOrder()
- setSize() adjusts the addressable length only.
Changed setSize(label) usage to setCapacity(label) or reserve(label)
throughout. The final name (capacity vs. storageSize() vs. whatever) can
easily be decided at a later date.
- added setSize(label, const T&), which may still not be really useful, but
is at least now meaningful
- made shrink() a bit more legible.
- added append(UList<T>&)
- copying from a UList avoids reallocations where possible
The following bits of code continue to use the DynamicList::setSize(), but
appear to be legitimate (or the corresponding code itself needs rethinking).
src/OpenFOAM/meshes/primitiveMesh/primitiveMeshPointCells.C:167: error: within this context
src/OpenFOAM/lnInclude/faceTemplates.C:44: error: within this context
src/surfMesh/surfaceFormats/tri/TRIsurfaceFormatCore.C:178: error: within this context
src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C:737: error: within this context
src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C:741: error: within this context
src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C:745: error: within this context
src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C:749: error: within this context
src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C:754: error: within this context
src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C:935: error: within this context
src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C:940: error: within this context
src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C:1041: error: within this context
src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C:1046: error: within this context
src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C:2161: error: within this context
src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C:2162: error: within this context
src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C:2201: error: within this context
src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C:2205: error: within this context
src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C:2261: error: within this context
src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C:2262: error: within this context
src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C:2263: error: within this context
src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C:2264: error: within this context
src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C:2265: error: within this context
src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C:3011: error: within this context
src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C:3076: error: within this context
src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C:3244: error: within this context
src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C:3371: error: within this context
src/dynamicMesh/meshCut/cellLooper/topoCellLooper.C:73: error: within this context
src/dynamicMesh/meshCut/cellLooper/topoCellLooper.C:91: error: within this context
src/dynamicMesh/meshCut/cellLooper/topoCellLooper.C:73: error: within this context
src/dynamicMesh/meshCut/cellLooper/topoCellLooper.C:91: error: within this context