ENH: stateFunctionObject - separated dictionary access and updated api to return result status for retrieving properties

This commit is contained in:
Andrew Heather
2016-10-21 17:01:35 +01:00
parent fb0b764466
commit 3c9e050d6e
3 changed files with 65 additions and 23 deletions

View File

@ -95,6 +95,39 @@ bool Foam::functionObjects::stateFunctionObject::foundProperty
}
bool Foam::functionObjects::stateFunctionObject::getDict
(
const word& entryName,
dictionary& dict
) const
{
return getObjectDict(name(), entryName, dict);
}
bool Foam::functionObjects::stateFunctionObject::getObjectDict
(
const word& objectName,
const word& entryName,
dictionary& dict
) const
{
const IOdictionary& stateDict = this->stateDict();
if (stateDict.found(objectName))
{
const dictionary& baseDict = stateDict.subDict(objectName);
if (baseDict.found(entryName) && baseDict.isDict(entryName))
{
dict = baseDict.subDict(entryName);
return true;
}
}
return false;
}
Foam::word Foam::functionObjects::stateFunctionObject::resultType
(
const word& entryName

View File

@ -125,6 +125,21 @@ public:
//- Return true if the property exists
bool foundProperty(const word& entryName) const;
//- Set dictionary, return true if set
bool getDict
(
const word& entryName,
dictionary& dict
) const;
//- Set dictionary from named object, return true if set
bool getObjectDict
(
const word& objectName,
const word& entryName,
dictionary& dict
) const;
//- Retrieve generic property
template<class Type>
Type getProperty
@ -133,9 +148,9 @@ public:
const Type& defaultValue = Type(Zero)
) const;
//- Retrieve generic property
//- Set generic property, return true if set
template<class Type>
void getProperty(const word& entryName, Type& value) const;
bool getProperty(const word& entryName, Type& value) const;
//- Add generic property
template<class Type>
@ -150,9 +165,9 @@ public:
const Type& defaultValue = Type(Zero)
) const;
//- Retrieve generic property from named object
//- Set generic property from named object, return true if set
template<class Type>
void getObjectProperty
bool getObjectProperty
(
const word& objectName,
const word& entryName,
@ -205,9 +220,9 @@ public:
const Type& defaultValue = Type(Zero)
) const;
//- Retrieve result from named object
//- Set result from named object, return true if set
template<class Type>
void getObjectResult
bool getObjectResult
(
const word& objectName,
const word& entryName,

View File

@ -41,13 +41,13 @@ Type Foam::functionObjects::stateFunctionObject::getProperty
template<class Type>
void Foam::functionObjects::stateFunctionObject::getProperty
bool Foam::functionObjects::stateFunctionObject::getProperty
(
const word& entryName,
Type& value
) const
{
getObjectProperty(name(), entryName, value);
return getObjectProperty(name(), entryName, value);
}
@ -77,7 +77,7 @@ Type Foam::functionObjects::stateFunctionObject::getObjectProperty
template<class Type>
void Foam::functionObjects::stateFunctionObject::getObjectProperty
bool Foam::functionObjects::stateFunctionObject::getObjectProperty
(
const word& objectName,
const word& entryName,
@ -89,18 +89,10 @@ void Foam::functionObjects::stateFunctionObject::getObjectProperty
if (stateDict.found(objectName))
{
const dictionary& baseDict = stateDict.subDict(objectName);
if (baseDict.found(entryName))
{
if (baseDict.isDict(entryName))
{
value = baseDict.subDict(entryName);
}
else
{
baseDict.lookup(entryName) >> value;
}
}
return baseDict.readIfPresent(entryName, value);
}
return false;
}
@ -192,13 +184,13 @@ Type Foam::functionObjects::stateFunctionObject::getObjectResult
) const
{
Type result = defaultValue;
getObjectResult(objectName, entryName, result);
(void)getObjectResult(objectName, entryName, result);
return result;
}
template<class Type>
void Foam::functionObjects::stateFunctionObject::getObjectResult
bool Foam::functionObjects::stateFunctionObject::getObjectResult
(
const word& objectName,
const word& entryName,
@ -222,10 +214,12 @@ void Foam::functionObjects::stateFunctionObject::getObjectResult
const dictionary& resultTypeDict =
objectDict.subDict(dictTypeName);
resultTypeDict.readIfPresent<Type>(entryName, value);
return resultTypeDict.readIfPresent<Type>(entryName, value);
}
}
}
return false;
}