dictionary::functionEntries::if(eq)Entry: New conditional statement handling in dictionary

Class
    Foam::functionEntries::if

Description
    Conditional parsing of dictionary entries.

    E.g.
    \verbatim
        U_inlet 15;

        #if #calc "${U_inlet} < 10"
            ..
        #else
            ..
        #endif
    \endverbatim

    Note:
    - only supports single line, '\' is not supported
    - condition should be readable as a \c Switch
      (supports 0,1, true, false, etc.)

Class
    Foam::functionEntries::ifeqEntry

Description
    Conditional parsing of dictionary entries.

    E.g.
    \verbatim
        a #calc "0.123";
        b 1.23e-1;

        #ifeq $a $b
            ..
        #else
            ..
        #endif
    \endverbatim

    \verbatim
    ddtSchemes
    {
    #ifeq ${FOAM_APPLICATION} simpleFoam
        default         steadyState;
    #else
        default         Euler;
    #endif
    }
    \endverbatim

    Note:
    - supports dictionary variables and environment variables
    - the two arguments should be two tokens
    - the comparison is a string comparison for any word/string/variable,
      integer comparison for two integers and floating point comparison for
      any floating point number.
    - parsing of (non)matching \c #else, \c #endif is not very sophisticated

Contributed by Mattijs Janssens
This commit is contained in:
Henry Weller
2018-12-31 18:51:25 +00:00
parent 0c31e465be
commit 70afbf01a5
6 changed files with 881 additions and 1 deletions

View File

@ -285,7 +285,7 @@ Foam::string Foam::stringOps::getVariable
{
value = getEnv(name);
if (value.empty())
if (!allowEmpty && value.empty())
{
FatalIOErrorInFunction
(