|
BashSpark
|
Iterative 'for' loop node that iterates over an expandable sequence. More...
#include <shell_node.h>


Public Member Functions | |
| shell_node_for (std::size_t nPos, std::string sVariable, std::unique_ptr< shell_node_expandable > &&pSequence, std::unique_ptr< shell_node_evaluable > &&pIterative) | |
| Construct a for-loop node. | |
| shell_status | evaluate (shell_session &oSession) const override |
| Evaluate the for-loop. | |
| const std::string & | get_variable () const noexcept |
| Get the loop variable name. | |
| const shell_node_expandable * | get_sequence () const noexcept |
| Get the sequence expandable. | |
| const shell_node_evaluable * | get_iterative () const noexcept |
| Get the iterative block executed on each element. | |
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. | |
Iterative 'for' loop node that iterates over an expandable sequence.
The loop assigns successive elements of the expanded sequence to shell session variable m_sVariable and executes the iterative block for each value.
| bs::shell_node_for::shell_node_for | ( | std::size_t | nPos, |
| std::string | sVariable, | ||
| std::unique_ptr< shell_node_expandable > && | pSequence, | ||
| std::unique_ptr< shell_node_evaluable > && | pIterative | ||
| ) |
Construct a for-loop node.
| shell_node_invalid_argument | If pSequence or pIterative is null. |
| nPos | Position in the input stream where the for loop starts. |
| sVariable | Name of the loop variable that receives each sequence value (moved in). |
| pSequence | Owned expandable that yields the sequence to iterate. |
| pIterative | Owned evaluable block executed for each sequence element. |
|
overridevirtual |
Evaluate the for-loop.
The sequence is expanded (respecting split semantics). For each token produced, the session variable named by m_sVariable is set to that token and m_pIterative is executed. The loop follows shell semantics for control (break/continue) and returns the last command status or an appropriate control status.
| oSession | Session context used for variable assignment and execution. |
Implements bs::shell_node_evaluable.
|
inlinenoexcept |
Get the iterative block executed on each element.
|
inlinenoexcept |
Get the sequence expandable.
|
inlinenoexcept |
Get the loop variable name.