BashSpark
Loading...
Searching...
No Matches
bs::shell_node_str Class Reference

Base for string-like nodes composed of expandable fragments. More...

#include <shell_node.h>

Inheritance diagram for bs::shell_node_str:
Collaboration diagram for bs::shell_node_str:

Public Member Functions

void expand (std::vector< std::string > &vTokens, shell_session &oSession, bool bSplit) const override
 Expand by concatenating child fragments into one token. Expand the node into textual tokens.
Parameters
vTokensVector where generated token strings will be appended.
oSessionSession context (used for variable/argument lookup, etc.).
bSplitWhen true apply word-splitting semantics; otherwise keep as single token.
.
 
const std::vector< std::unique_ptr< shell_node_expandable > > & get_children () const noexcept
 Get the children fragments.
 
- Public Member Functions inherited from bs::shell_node_expandable
 shell_node_expandable (const shell_node_type nType, const std::size_t nPos)
 Construct an expandable 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.
 

Protected Member Functions

 shell_node_str (shell_node_type nType, std::size_t nPos, std::vector< std::unique_ptr< shell_node_expandable > > &&vChildren)
 Construct a string node.
 
- 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.
 

Additional Inherited Members

- 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.
 

Detailed Description

Base for string-like nodes composed of expandable fragments.

Used by quoted and unquoted string types. Holds child expandables which are concatenated during expansion.

Constructor & Destructor Documentation

◆ shell_node_str()

bs::shell_node_str::shell_node_str ( shell_node_type  nType,
std::size_t  nPos,
std::vector< std::unique_ptr< shell_node_expandable > > &&  vChildren 
)
protected

Construct a string node.

Exceptions
shell_node_invalid_argumentIf vChildren contains null pointer.
Parameters
nTypeSpecific string node type.
nPosPosition in the input stream.
vChildrenChild expandable fragments.

Member Function Documentation

◆ expand()

void bs::shell_node_str::expand ( std::vector< std::string > &  vTokens,
shell_session oSession,
bool  bSplit 
) const
overridevirtual

Expand by concatenating child fragments into one token. Expand the node into textual tokens.

Parameters
vTokensVector where generated token strings will be appended.
oSessionSession context (used for variable/argument lookup, etc.).
bSplitWhen true apply word-splitting semantics; otherwise keep as single token.
.

Implements bs::shell_node_expandable.

◆ get_children()

const std::vector< std::unique_ptr< shell_node_expandable > > & bs::shell_node_str::get_children ( ) const
inlinenoexcept

Get the children fragments.

Returns
const reference to children vector.

The documentation for this class was generated from the following files: