ENH: MeshObject: objectRegistry lookup only once. Fixes #1071.

This commit is contained in:
mattijs
2018-11-14 12:41:26 +00:00
parent 4bf4b89af4
commit edf5cf4588

View File

@ -3,7 +3,7 @@
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | \\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation | Copyright (C) 2018 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
@ -45,18 +45,14 @@ const Type& Foam::MeshObject<Mesh, MeshObjectType, Type>::New
const Mesh& mesh const Mesh& mesh
) )
{ {
if const Type* ptr = mesh.thisDb().objectRegistry::template cfindObject<Type>
(
mesh.thisDb().objectRegistry::template foundObject<Type>
(
Type::typeName
)
)
{
return mesh.thisDb().objectRegistry::template lookupObject<Type>
( (
Type::typeName Type::typeName
); );
if (ptr)
{
return *ptr;
} }
else else
{ {
@ -84,18 +80,14 @@ const Type& Foam::MeshObject<Mesh, MeshObjectType, Type>::New
const Data1& d const Data1& d
) )
{ {
if const Type* ptr = mesh.thisDb().objectRegistry::template cfindObject<Type>
(
mesh.thisDb().objectRegistry::template foundObject<Type>
(
Type::typeName
)
)
{
return mesh.thisDb().objectRegistry::template lookupObject<Type>
( (
Type::typeName Type::typeName
); );
if (ptr)
{
return *ptr;
} }
else else
{ {
@ -124,18 +116,14 @@ const Type& Foam::MeshObject<Mesh, MeshObjectType, Type>::New
const Data2& d2 const Data2& d2
) )
{ {
if const Type* ptr = mesh.thisDb().objectRegistry::template cfindObject<Type>
(
mesh.thisDb().objectRegistry::template foundObject<Type>
(
Type::typeName
)
)
{
return mesh.thisDb().objectRegistry::template lookupObject<Type>
( (
Type::typeName Type::typeName
); );
if (ptr)
{
return *ptr;
} }
else else
{ {
@ -167,18 +155,14 @@ const Type& Foam::MeshObject<Mesh, MeshObjectType, Type>::New
const Data3& d3 const Data3& d3
) )
{ {
if const Type* ptr = mesh.thisDb().objectRegistry::template cfindObject<Type>
(
mesh.thisDb().objectRegistry::template foundObject<Type>
(
Type::typeName
)
)
{
return mesh.thisDb().objectRegistry::template lookupObject<Type>
( (
Type::typeName Type::typeName
); );
if (ptr)
{
return *ptr;
} }
else else
{ {
@ -208,18 +192,14 @@ const Type& Foam::MeshObject<Mesh, MeshObjectType, Type>::New
const Data4& d4 const Data4& d4
) )
{ {
if const Type* ptr = mesh.thisDb().objectRegistry::template cfindObject<Type>
(
mesh.thisDb().objectRegistry::template foundObject<Type>
(
Type::typeName
)
)
{
return mesh.thisDb().objectRegistry::template lookupObject<Type>
( (
Type::typeName Type::typeName
); );
if (ptr)
{
return *ptr;
} }
else else
{ {
@ -243,13 +223,12 @@ const Type& Foam::MeshObject<Mesh, MeshObjectType, Type>::New
template<class Mesh, template<class> class MeshObjectType, class Type> template<class Mesh, template<class> class MeshObjectType, class Type>
bool Foam::MeshObject<Mesh, MeshObjectType, Type>::Delete(const Mesh& mesh) bool Foam::MeshObject<Mesh, MeshObjectType, Type>::Delete(const Mesh& mesh)
{ {
if const Type* ptr = mesh.thisDb().objectRegistry::template findObject<Type>
(
mesh.thisDb().objectRegistry::template foundObject<Type>
( (
Type::typeName Type::typeName
) );
)
if (ptr)
{ {
if (meshObject::debug) if (meshObject::debug)
{ {
@ -257,16 +236,7 @@ bool Foam::MeshObject<Mesh, MeshObjectType, Type>::Delete(const Mesh& mesh)
<< Type::typeName << endl; << Type::typeName << endl;
} }
return mesh.thisDb().checkOut return mesh.thisDb().checkOut(const_cast<Type&>(*ptr));
(
const_cast<Type&>
(
mesh.thisDb().objectRegistry::template lookupObject<Type>
(
Type::typeName
)
)
);
} }
else else
{ {