Improve alignment of its behaviour with std::unique_ptr
- element_type typedef
- release() method - identical to ptr() method
- get() method to get the pointer without checking and without releasing it.
- operator*() for dereferencing
Method name changes
- renamed rawPtr() to get()
- renamed rawRef() to ref(), removed unused const version.
Removed methods/operators
- assignment from a raw pointer was deleted (was rarely used).
Can be convenient, but uncontrolled and potentially unsafe.
Do allow assignment from a literal nullptr though, since this
can never leak (and also corresponds to the unique_ptr API).
Additional methods
- clone() method: forwards to the clone() method of the underlying
data object with argument forwarding.
- reset(autoPtr&&) as an alternative to operator=(autoPtr&&)
STYLE: avoid implicit conversion from autoPtr to object type in many places
- existing implementation has the following:
operator const T&() const { return operator*(); }
which means that the following code works:
autoPtr<mapPolyMesh> map = ...;
updateMesh(*map); // OK: explicit dereferencing
updateMesh(map()); // OK: explicit dereferencing
updateMesh(map); // OK: implicit dereferencing
for clarity it may preferable to avoid the implicit dereferencing
- prefer operator* to operator() when deferenced a return value
so it is clearer that a pointer is involve and not a function call
etc Eg, return *meshPtr_; vs. return meshPtr_();
This class does not simply rotate the coordinate system is also changes
it from Cartesian to cylindrical which is not clear from the original name.
We plan to rewrite the coordinateRotation classes to be
coordinateTransformation classes and massively simplify the interface
from the currently unintelligible mess.
coordinate systems
Modifying constructors from dictionary of coordinateSystem class (no
default type)
Adding localAxesRotation type. It constructs a axes-rotation tensor on each
cell centre.
Adding functionality to coordinateRotation blase class (transformTensor,
transformVector, etc)
- findAll() method returns a labelList of all matching names
- find() method returns the index to the first matching name
For example, use a regex to specify alternative coordinate systems
in porousZones
(
"cat1?(Back|Front)*"
{
coordinateSystem "(cat1|system_10)";
porosity 0.781;
...
}
)
- coordinateSystem, cylindricalCS, sphericalCS:
get copy with name constructor
- cylindricalCS, sphericalCS:
can switch off default degrees
- dropped cartesianCS class (already covered by coordinateSystem) and just
always use coordinateSystem directly.
The dictionary runtime selection still accepts type "cartesian" as an alias,
to provide the least surprises.
- dropped runtime selection based on origin/axis/direction (not used), but
left runtime selection based on origin/coordinateRotation as still being
potentially useful.