|
BashSpark
|
Conditional execution node (if-then-else). More...
#include <shell_node.h>


Public Member Functions | |
| shell_node_if (std::size_t nPos, std::unique_ptr< shell_node_evaluable > &&pCondition, std::unique_ptr< shell_node_evaluable > &&pCaseIf, std::unique_ptr< shell_node_evaluable > &&pCaseElse) | |
| Construct an if node. | |
| shell_status | evaluate (shell_session &oSession) const override |
| Evaluate the if statement. | |
| const shell_node_evaluable * | get_condition () const noexcept |
| Get the condition node. | |
| const shell_node_evaluable * | get_case_if () const noexcept |
| Get the 'if' branch node. | |
| const shell_node_evaluable * | get_case_else () const noexcept |
| Get the 'else' branch node. | |
Public Member Functions inherited from bs::shell_node_evaluable | |
| shell_node_evaluable (const shell_node_type nType, const std::size_t nPos) | |
| Construct an evaluable node. | |
Public Member Functions inherited from bs::shell_node | |
| virtual | ~shell_node ()=default |
| Virtual default destructor for polymorphic deletion. | |
| shell_node_type | get_type () const noexcept |
| Get the node type. | |
| std::size_t | get_pos () const noexcept |
| Get node position in the original input stream. | |
Additional Inherited Members | |
Protected Member Functions inherited from bs::shell_node | |
| shell_node (const shell_node_type nType, const std::size_t nPos) | |
| Protected constructor used by derived classes. | |
Protected Attributes inherited from bs::shell_node | |
| const shell_node_type | m_nType |
| Node type. | |
| const std::size_t | m_nPos |
| Position in the input stream. | |
Conditional execution node (if-then-else).
Represents an if statement with a condition and two branches: the 'if' branch executed on success and the optional 'else' branch executed on failure.
| bs::shell_node_if::shell_node_if | ( | std::size_t | nPos, |
| std::unique_ptr< shell_node_evaluable > && | pCondition, | ||
| std::unique_ptr< shell_node_evaluable > && | pCaseIf, | ||
| std::unique_ptr< shell_node_evaluable > && | pCaseElse | ||
| ) |
Construct an if node.
| shell_node_invalid_argument | If pCondition or pCaseIf is null. |
| nPos | Position in the input stream where the if starts. |
| pCondition | Owned evaluable node representing the condition. |
| pCaseIf | Owned evaluable block executed when condition returns success. |
| pCaseElse | Owned evaluable block executed when condition returns error (may be null). |
|
overridevirtual |
Evaluate the if statement.
The condition is evaluated first. If it returns success, the pCaseIf branch is evaluated and its status returned; otherwise pCaseElse (if present) is evaluated and its status returned. The exact semantics follow shell evaluation rules for conditionals.
| oSession | Session context used for evaluation. |
Implements bs::shell_node_evaluable.
|
inlinenoexcept |
Get the 'else' branch node.
|
inlinenoexcept |
Get the 'if' branch node.
|
inlinenoexcept |
Get the condition node.