#include <ast.h>
Inheritance diagram for unionNode::
Public Methods | |
unionNode (const Coord coord=Coord::Unknown) | |
Create new union type. More... | |
virtual | ~unionNode () |
Destroy a unionNode. More... | |
virtual Node * | clone () const |
Clone the input node. More... | |
AST Traversal | |
virtual void | visit (Visitor *the_visitor) |
Dispatch a Visitor. More... | |
virtual void | walk (Walker &the_walker) |
Dispatch a Walker. More... | |
virtual Node * | change (Changer &the_changer, bool redispatch=false) |
Dispatch a Changer. More... |
This class represents union types. Note that it does not represent the definition of the unions, but just an instant of the type. For example, in the declaration "union A * x;" the AST built would look like this: declNode "x" --> ptrNode --> unionNode. The actual definition resides in an suespecNode.
The NodeType is Union.
|
Create new union type. The new union type has no tag and doesn't refer to any definition. Use the sueNode::spec() methods to get and set the reference to the definition, which also contains the name.
|
|
Destroy a unionNode.
|
|
Dispatch a Changer. This abstract method works much the walker, but allows the tree to be changed.
Reimplemented from Node. |
|
Clone the input node. This is not a "deep" clone, so be careful. For a deep clone, use the clone_changer class.
Reimplemented from Node. |
|
Dispatch a Visitor. This abstract method is the entry point for the visitor design pattern. Each node subclass defines a visit() method that calls the appropriate at_ method in the visitor. For more information see the Visitor documentation.
Reimplemented from Node. |
|
Dispatch a Walker. This abstract method works much like the visitor, but instead walks the entire underlying subtree calling the appropriate at_ method at each node. For more information see the Walker documentation.
Reimplemented from Node. |