eRPC Generator (erpcgen)  Rev. 1.12.0
NXP Semiconductors
erpcgen::AstNode Class Reference

Homogeneous AST node class. More...

#include <AstNode.hpp>

Public Types

typedef std::map< std::string, Value * > attribute_map_t
 
typedef std::vector< AstNode * > child_list_t
 
typedef child_list_t::iterator iterator
 
typedef child_list_t::const_iterator const_iterator
 

Public Member Functions

 AstNode (const Token &token)
 This function is constructor of AstNode class. More...
 
 AstNode (Token &token, AstNode *parent)
 This function is constructor of AstNode class. More...
 
 AstNode (const AstNode &other)
 This function is copy constructor of AstNode class. More...
 
AstNodeoperator= (const AstNode &other)
 Assignment operator. More...
 
virtual ~AstNode ()
 This function is destructor of AstNode class. More...
 
virtual AstNodeclone () const
 This function returns an exact duplicate of this object. More...
 
virtual std::string nodeName () const
 This function returns name of this node. More...
 
std::string getDescription () const
 This function returns string description of the node. More...
 
Token
TokengetToken ()
 This function returns token of this node. More...
 
const TokengetToken () const
 This function returns constant token of this node. More...
 
void setToken (const Token &token)
 This function set token to this node. More...
 
ValuegetTokenValue ()
 This function returns value of token of this node. More...
 
std::string getTokenString ()
 This function returns string representation of this node token value. More...
 
Parent
AstNodegetParent () const
 This function returns pointer to parent node. More...
 
void setParent (AstNode *newParent)
 This function set parent for this node. More...
 
Attribute
size_t attributeCount () const
 This function returns count of node attributes. More...
 
bool hasAttribute (const std::string &name) const
 This function find attribute in AstNode attributes. More...
 
ValuegetAttribute (const std::string &name)
 This function return attribute from AstNode attributes. More...
 
void setAttribute (const std::string &name, Value *node)
 This function set attribute in AstNode attributes. More...
 
void removeAttribute (const std::string &name)
 This function remove attribute from AstNode attributes. More...
 
Value *& operator[] (const std::string &name)
 Square brackets. More...
 
Children
void appendChild (AstNode *node)
 This function add given node to the end of children list for current AstNode. More...
 
size_t childCount () const
 This function return count of children for current node. More...
 
AstNodegetChild (int index) const
 This function return child node from node children. More...
 
size_t getIndexOfChild (const AstNode *child)
 This function return index of searched child node. More...
 
size_t getIndex ()
 This function return index of current node in parent's list of children. More...
 
void replaceChild (AstNode *original, AstNode *replacement)
 This function replace child in AstNode tree. More...
 
void reverseExpr ()
 This function replace children location in AstNode tree. More...
 
AstNode *& operator[] (int index)
 Square brackets. More...
 
const AstNodeoperator[] (int index) const
 Square brackets. More...
 
Child iterators
iterator begin ()
 
iterator end ()
 
const_iterator begin () const
 
const_iterator end () const
 

Protected Attributes

Token m_token
 
AstNodem_parent
 
attribute_map_t m_attributes
 
child_list_t m_children
 

Detailed Description

Homogeneous AST node class.

This class is meant to represent arbitrary AST nodes. Each node optionally has a Token object associated with it. It has an ordered list of child nodes and a pointer to its parent. Named attribute values can be set on a node. The attribute values are members of the Value class hierarchy of boxed types.

Member Typedef Documentation

typedef std::map<std::string, Value *> erpcgen::AstNode::attribute_map_t

Map type of named attributes.

typedef std::vector<AstNode *> erpcgen::AstNode::child_list_t

Vector of AstNode children.

typedef child_list_t::const_iterator erpcgen::AstNode::const_iterator

Constant iterator of AstNode children vector.

typedef child_list_t::iterator erpcgen::AstNode::iterator

Iterator of AstNode children vector.

Constructor & Destructor Documentation

erpcgen::AstNode::AstNode ( const Token token)
inlineexplicit

This function is constructor of AstNode class.

This function set parent AstNode variable for this object to nullptr and token variable for this object to given token.

Parameters
[in]tokenConstant reference to token.
See also
AstNode::AstNode(Token * token, AstNode * parent)
AstNode::AstNode(const AstNode & other)
erpcgen::AstNode::AstNode ( Token token,
AstNode parent 
)
inline

This function is constructor of AstNode class.

This function set parent AstNode variable for this object to given node and token variable for this object to given token.

Parameters
[in]tokenPointer to given token.
[in]parentPointer to given parent node.
See also
AstNode::AstNode(Token * token)
AstNode::AstNode(const AstNode & other)
AstNode::AstNode ( const AstNode other)

This function is copy constructor of AstNode class.

This function copy data from given node to this object.

Parameters
[in]otherGiven node.
See also
AstNode::AstNode(Token * token)
AstNode::AstNode(Token * token, AstNode * parent)
AstNode::~AstNode ( )
virtual

This function is destructor of AstNode class.

This function also call for children destructors.

Member Function Documentation

void AstNode::appendChild ( AstNode node)

This function add given node to the end of children list for current AstNode.

If node is NULL then a NULL pointer is added to the children list. The list node's location is automatically updated after the node is added by a call to updateLocation().

Parameters
[in]nodeChild node for current AstNode.
size_t erpcgen::AstNode::attributeCount ( ) const
inline

This function returns count of node attributes.

Returns
Size of node attributes.
size_t erpcgen::AstNode::childCount ( ) const
inline

This function return count of children for current node.

Returns
Count of children for current node.
virtual AstNode* erpcgen::AstNode::clone ( ) const
inlinevirtual

This function returns an exact duplicate of this object.

Returns
Pointer to new (cloned) AstNode object.
Value * AstNode::getAttribute ( const std::string &  name)

This function return attribute from AstNode attributes.

This function return attribute from giving name in AstNode attributes.

Parameters
[in]nameName for AstNode attribute.
Returns
See also
bool AstNode::hasAttribute() const
void AstNode::setAttribute()
void AstNode::removeAttribute()
AstNode* erpcgen::AstNode::getChild ( int  index) const
inline

This function return child node from node children.

Parameters
[in]indexIndex of node child.
Returns
Pointer to searched child node.
See also
size_t AstNode::getIndex()
size_t getIndexOfChild()
string AstNode::getDescription ( ) const

This function returns string description of the node.

Returns
String description of the node.
size_t AstNode::getIndex ( )

This function return index of current node in parent's list of children.

Returns
Return value is from parent getIndexOfChild.
See also
size_t AstNode::getIndexOfChild()
AstNode * getChild()
size_t AstNode::getIndexOfChild ( const AstNode child)

This function return index of searched child node.

Parameters
[in]childSearched child node for current AstNode.
Returns
Index of searched child node.
Return values
-1If child was not found.
See also
size_t AstNode::getIndex()
AstNode * getChild()
AstNode* erpcgen::AstNode::getParent ( ) const
inline

This function returns pointer to parent node.

Returns
Pointer to parent node.
Token& erpcgen::AstNode::getToken ( )
inline

This function returns token of this node.

Returns
Node token.
See also
const Token & getToken()
const Token& erpcgen::AstNode::getToken ( ) const
inline

This function returns constant token of this node.

Returns
Node constant token pointer.
See also
Token & getToken()
std::string erpcgen::AstNode::getTokenString ( )
inline

This function returns string representation of this node token value.

Returns
Node token value string representation.
Value* erpcgen::AstNode::getTokenValue ( )
inline

This function returns value of token of this node.

Returns
Node token value pointer.
bool AstNode::hasAttribute ( const std::string &  name) const

This function find attribute in AstNode attributes.

This function find attribute from giving name in AstNode attributes.

Parameters
[in]nameName for AstNode attribute.
Returns
True if attribute was found.
See also
Value* AstNode::getAttribute()
void AstNode::setAttribute()
void AstNode::removeAttribute()
virtual std::string erpcgen::AstNode::nodeName ( ) const
inlinevirtual

This function returns name of this node.

Returns
Node name as string representation.
AstNode & AstNode::operator= ( const AstNode other)

Assignment operator.

This function copy data from one to second node, when assignment operator is used.

Parameters
[in]otherOther is AstNode, from which are copied data to second AstNode.
Returns
Second AstNode object.
Value*& erpcgen::AstNode::operator[] ( const std::string &  name)
inline

Square brackets.

This function return node attribute from attributes. Attribute is requested by given attribute name in square brackets.

Parameters
[in]nameName of searched attribute.
Returns
Node attribute.
AstNode*& erpcgen::AstNode::operator[] ( int  index)
inline

Square brackets.

This function return node from this node children list. Attribute is requested by given attribute index number in square brackets.

Parameters
[in]indexIndex of searched child node.
Returns
Node child.
See also
const AstNode *& operator [] ()
const AstNode* erpcgen::AstNode::operator[] ( int  index) const
inline

Square brackets.

This function return const node from this node children list. Attribute is requested by given attribute index number in square brackets.

Parameters
[in]indexIndex of searched child node.
Returns
Node child const node.
See also
AstNode *& operator [] ()
void AstNode::removeAttribute ( const std::string &  name)

This function remove attribute from AstNode attributes.

This function remove attribute from giving name in AstNode attributes.

Parameters
[in]nameName for AstNode attribute.
See also
bool AstNode::hasAttribute() const
Value* AstNode::getAttribute()
void AstNode::setAttribute()
void AstNode::replaceChild ( AstNode original,
AstNode replacement 
)

This function replace child in AstNode tree.

This function replace original AstNode child with replacement.

Parameters
[in]originalOriginal AstNode child.
[in]replacementReplacement AstNode child.
See also
void AstNode::reverseExpr()
void AstNode::reverseExpr ( )

This function replace children location in AstNode tree.

This function move top of array AstNode node in AstNode tree to bottom of tree.

See also
void AstNode::replaceChild()
void AstNode::setAttribute ( const std::string &  name,
Value node 
)

This function set attribute in AstNode attributes.

This function set attribute for giving name and node in AstNode attributes.

Parameters
[in]nameName for AstNode attribute.
[in]nodeAstNode attribute.
See also
bool AstNode::hasAttribute() const
Value* AstNode::getAttribute()
void AstNode::removeAttribute()
void erpcgen::AstNode::setParent ( AstNode newParent)
inline

This function set parent for this node.

Parameters
[in]newParentPointer to given parent node.
void erpcgen::AstNode::setToken ( const Token token)
inline

This function set token to this node.

Parameters
[in]tokenPointer to given token.

Member Data Documentation

attribute_map_t erpcgen::AstNode::m_attributes
protected

Map of named attributes.

child_list_t erpcgen::AstNode::m_children
protected

Ordered list of children of this node.

AstNode* erpcgen::AstNode::m_parent
protected

Pointer to parent node of this object. May be NULL.

Token erpcgen::AstNode::m_token
protected

The token associated with this node.


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