Skip to content
Snippets Groups Projects
Closed objectRegistry functionality
  • View options
  • objectRegistry functionality

  • View options
  • Closed Issue created

    While attempting to use the subRegistry functionality to add extra information onto the mesh obr, I noticed some odd behaviour. Delving into the code, it seems to be related to how the lookupObject works. It implicitly includes a upwards recursion into the parent registry, only stopping when it hits Time. This means that adding subRegistry2("name=abc") to subRegistry1 will fail if the parent of subRegistry1 already contained an objectRegistry with the name "abc". Test-objectRegistry.C

    I think we need to make this recursion an optional parameter (default = true for compatibility) to at least a few methods. It would also be a nice time to add this, for symmetry with dictionary lookupEntryPtr:

    //- Lookup and return pointer to the object of the given Type,
    //  return nullptr if the object was not found or had the incorrect type
    template<class Type>
    const Type* lookupObjectPtr(const word& name, bool recursive=true) const;
    
    //- Lookup and return the object of the given Type,
    // return nullptr if the object was not found or had the incorrect type
    template<class Type>
    Type* lookupObjectPtr(const word& name, bool recursive=true) const;

    Then use like this:

    volScalarField* fieldPtr = mesh().lookupObjectPtr<volScalarField>("foo");
    if (fieldPtr)
    {
        volScalarField& fld = *fieldPtr;
       ...
    }

    Instead of

    if (mesh().foundObject<volScalarField>("foo"))
    {
        volScalarField& fld = const_cast<volScalarField&>(mesh().lookupObject<volScalarField>("foo"));
       ...
    }

    @andy

    Linked items ... 0

  • Activity

    • All activity
    • Comments only
    • History only
    • Newest first
    • Oldest first
    Loading Loading Loading Loading Loading Loading Loading Loading Loading Loading