Recursive searching for objects within a registry is now optional (previous it was always done).
A recursive search effectively blocks the construction of sub-sub-registries if their names are 'masked' by some parent level sub-registry with the same name! (BUG)
Recursive search is now turned OFF by default, which makes it consistent with dictionary and probably causes the least number of surprises.
Various new convenience methods added:
lookupObjectRef()
returns a non-const reference. For example,
volScalarField& U = mesh().lookupObjectRef<volScalarField>("U");
Instead of
volScalarField& U = const_cast<volScalarField&>
(
mesh().lookupObject<volScalarField>("U")
);
-- lookupObjectPtr()
returns a const pointer, and nullptr on failure. For example,
const volScalarField* Uptr = mesh().lookupObjectPtr<volScalarField>("U");
if (Uptr)
{
const volScalarField& U = *Uptr;
...
}
Instead of
if (mesh().foundObject<volScalarField>("U"))
{
const volScalarField& U = mesh().lookupObject<volScalarField>("U");
...
}
-- lookupObjectRefPtr()
returns a non-const pointer, and nullptr on failure. For example,
volScalarField* Uptr = mesh().lookupObjectRefPtr<volScalarField>("U");
if (Uptr)
{
volScalarField& U = *Uptr; // use as reference
(*Uptr) = ...; // or use directly
}
Instead of
if (mesh().foundObject<volScalarField>("U"))
{
volScalarField& U = const_cast<volScalarField&>
(
mesh().lookupObject<volScalarField>("U")
);
}
-- sortedNames()
now works with template parameters and with regular expression matching as well. For example,
wordList names = mesh().sortedNames();
wordList fields = mesh().sortedName<volScalarField>();
Instead of
wordList names = mesh().sortedNames();
wordList fields = mesh().names<volScalarField>();
Foam::sort(fields);
--