mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: Updated wordRe handling in IOobjectList and objectRegistry
This commit is contained in:
@ -148,7 +148,7 @@ Foam::IOobject* Foam::IOobjectList::lookup(const word& name) const
|
||||
}
|
||||
|
||||
|
||||
Foam::IOobjectList Foam::IOobjectList::lookupRe(const wordRe& name) const
|
||||
Foam::IOobjectList Foam::IOobjectList::lookup(const wordRe& name) const
|
||||
{
|
||||
IOobjectList objectsOfName(size());
|
||||
|
||||
@ -169,6 +169,29 @@ Foam::IOobjectList Foam::IOobjectList::lookupRe(const wordRe& name) const
|
||||
}
|
||||
|
||||
|
||||
Foam::IOobjectList Foam::IOobjectList::lookup(const wordReList& patterns) const
|
||||
{
|
||||
wordReListMatcher names(patterns);
|
||||
|
||||
IOobjectList objectsOfName(size());
|
||||
|
||||
forAllConstIter(HashPtrTable<IOobject>, *this, iter)
|
||||
{
|
||||
if (names.match(iter()->name()))
|
||||
{
|
||||
if (IOobject::debug)
|
||||
{
|
||||
Info<< "IOobjectList::lookupRe : found " << iter.key() << endl;
|
||||
}
|
||||
|
||||
objectsOfName.insert(iter.key(), new IOobject(*iter()));
|
||||
}
|
||||
}
|
||||
|
||||
return objectsOfName;
|
||||
}
|
||||
|
||||
|
||||
Foam::IOobjectList Foam::IOobjectList::lookupClass(const word& ClassName) const
|
||||
{
|
||||
IOobjectList objectsOfClass(size());
|
||||
|
||||
@ -37,6 +37,7 @@ SourceFiles
|
||||
|
||||
#include "HashPtrTable.H"
|
||||
#include "IOobject.H"
|
||||
#include "wordReList.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
@ -92,7 +93,10 @@ public:
|
||||
IOobject* lookup(const word& name) const;
|
||||
|
||||
//- Return the list for all IOobects whose name matches name
|
||||
IOobjectList lookupRe(const wordRe& name) const;
|
||||
IOobjectList lookup(const wordRe& name) const;
|
||||
|
||||
//- Return the list for all IOobects whose name matches name
|
||||
IOobjectList lookup(const wordReList& patterns) const;
|
||||
|
||||
//- Return the list for all IOobjects of a given class
|
||||
IOobjectList lookupClass(const word& className) const;
|
||||
|
||||
@ -37,6 +37,7 @@ SourceFiles
|
||||
|
||||
#include "HashTable.H"
|
||||
#include "regIOobject.H"
|
||||
#include "wordReList.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
@ -147,6 +148,14 @@ public:
|
||||
template<class Type>
|
||||
wordList names() const;
|
||||
|
||||
//- Return the list of objects whose name matches the input regExp
|
||||
template<class Type>
|
||||
wordList names(const wordRe& name) const;
|
||||
|
||||
//- Return the list of objects whose name matches the input regExp
|
||||
template<class Type>
|
||||
wordList names(const wordReList& name) const;
|
||||
|
||||
//- Lookup and return a const sub-objectRegistry. Optionally create
|
||||
// it if it does not exist.
|
||||
const objectRegistry& subRegistry
|
||||
@ -163,10 +172,6 @@ public:
|
||||
template<class Type>
|
||||
HashTable<Type*> lookupClass(const bool strict = false);
|
||||
|
||||
//- Return the list of objects whose name matches the input regExp
|
||||
template<class Type>
|
||||
wordList foundObjectRe(const wordRe& name) const;
|
||||
|
||||
//- Is the named Type found?
|
||||
template<class Type>
|
||||
bool foundObject(const word& name) const;
|
||||
|
||||
@ -24,7 +24,7 @@ License
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "objectRegistry.H"
|
||||
|
||||
#include "stringListOps.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
@ -48,6 +48,40 @@ Foam::wordList Foam::objectRegistry::names() const
|
||||
}
|
||||
|
||||
|
||||
template<class Type>
|
||||
Foam::wordList Foam::objectRegistry::names(const wordRe& name) const
|
||||
{
|
||||
wordList objectNames(size());
|
||||
|
||||
label count = 0;
|
||||
forAllConstIter(HashTable<regIOobject*>, *this, iter)
|
||||
{
|
||||
if (isA<Type>(*iter()))
|
||||
{
|
||||
const word& objectName = iter()->name();
|
||||
|
||||
if (name.match(objectName))
|
||||
{
|
||||
objectNames[count++] = objectName;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
objectNames.setSize(count);
|
||||
|
||||
return objectNames;
|
||||
}
|
||||
|
||||
|
||||
template<class Type>
|
||||
Foam::wordList Foam::objectRegistry::names(const wordReList& patterns) const
|
||||
{
|
||||
wordList names(this->names<Type>());
|
||||
|
||||
return wordList(names, findStrings(patterns, names));
|
||||
}
|
||||
|
||||
|
||||
template<class Type>
|
||||
Foam::HashTable<const Type*> Foam::objectRegistry::lookupClass
|
||||
(
|
||||
@ -127,31 +161,6 @@ bool Foam::objectRegistry::foundObject(const word& name) const
|
||||
}
|
||||
|
||||
|
||||
template<class Type>
|
||||
Foam::wordList Foam::objectRegistry::foundObjectRe(const wordRe& name) const
|
||||
{
|
||||
wordList objectNames(size());
|
||||
|
||||
label count = 0;
|
||||
forAllConstIter(HashTable<regIOobject*>, *this, iter)
|
||||
{
|
||||
if (isA<Type>(*iter()))
|
||||
{
|
||||
const word& objectName = iter()->name();
|
||||
|
||||
if (name.match(objectName))
|
||||
{
|
||||
objectNames[count++] = objectName;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
objectNames.setSize(count);
|
||||
|
||||
return objectNames;
|
||||
}
|
||||
|
||||
|
||||
template<class Type>
|
||||
const Type& Foam::objectRegistry::lookupObject(const word& name) const
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user