ENH: refactor IOobject options

- IOobjectOption class encapsulates read/write, storage flags for
  lightweight handling, independent of objectRegistry etc.

ENH: add IOobject isReadRequired() and isReadOptional() queries

- encapsulates test of MUST_READ, MUST_READ_IF_MODIFIED,
  READ_IF_PRESENT for convenience / less clutter.

Example,

    if (isReadRequired() || (isReadOptional() && headerOk()))
    {
        ...
    }

Instead of

    if
    (
        (
            readOpt() == IOobject::MUST_READ
         || readOpt() == IOobject::MUST_READ_IF_MODIFIED
        )
     || (readOpt() == IOobject::READ_IF_PRESENT && headerOk())
    )
    {
        ...
    }
This commit is contained in:
Mark Olesen
2022-09-27 13:07:29 +02:00
parent 623c0624fb
commit d938e01d7a
78 changed files with 891 additions and 850 deletions

View File

@ -55,8 +55,8 @@ const Foam::Enum
>
Foam::functionObjects::writeObjects::writeOptionNames_
({
{ writeOption::AUTO_WRITE, "autoWrite" },
{ writeOption::NO_WRITE, "noWrite" },
{ writeOption::AUTO_WRITE, "autoWrite" },
{ writeOption::ANY_WRITE, "anyWrite" },
});
@ -173,16 +173,7 @@ bool Foam::functionObjects::writeObjects::write()
switch (writeOption_)
{
case AUTO_WRITE:
{
if (obj.writeOpt() != IOobject::AUTO_WRITE)
{
continue;
}
break;
}
case NO_WRITE:
case writeOption::NO_WRITE:
{
if (obj.writeOpt() != IOobject::NO_WRITE)
{
@ -191,7 +182,16 @@ bool Foam::functionObjects::writeObjects::write()
break;
}
case ANY_WRITE:
case writeOption::AUTO_WRITE:
{
if (obj.writeOpt() != IOobject::AUTO_WRITE)
{
continue;
}
break;
}
case writeOption::ANY_WRITE:
{
break;
}