#include <node.h>


Public Member Functions | |
| virtual | ~INode () |
| virtual void | enter (listener::Base &listener)=0 |
| virtual void | exit (listener::Base &listener)=0 |
| virtual std::vector< INode * > | getChildren ()=0 |
| virtual std::unique_ptr< INode > | clone () const =0 |
| template<class T > | |
| std::unique_ptr< T > | cloneAs () |
The abstract sytnax tree node interface. All nodes of the tree implment this interface. Base classes should inherit virtually to allow nodes with multiple types.
|
pure virtual |
Perform a deep copy of this node.
Implemented in cymoca::ast::expression::Function, cymoca::ast::condition::Boolean, cymoca::ast::expression::List, cymoca::ast::model::Class, cymoca::ast::expression::Number, cymoca::ast::model::ElementDict, cymoca::ast::equation::Block, cymoca::ast::element::Component, and cymoca::ast::expression::Reference.

|
inline |
|
pure virtual |
A double dispatch entrace hook for listeners.
Implemented in cymoca::ast::expression::Function, cymoca::ast::condition::Boolean, cymoca::ast::expression::List, cymoca::ast::expression::Number, cymoca::ast::model::Class, cymoca::ast::statement::Block, cymoca::ast::equation::Block, cymoca::ast::model::ElementDict, cymoca::ast::element::Component, and cymoca::ast::expression::Reference.

|
pure virtual |
A double dispatch exit hook for listeners.
Implemented in cymoca::ast::expression::Function, cymoca::ast::condition::Boolean, cymoca::ast::expression::List, cymoca::ast::expression::Number, cymoca::ast::model::Class, cymoca::ast::statement::Block, cymoca::ast::equation::Block, cymoca::ast::model::ElementDict, cymoca::ast::element::Component, and cymoca::ast::expression::Reference.

|
pure virtual |
Returns a list of children (non-owning).
Implemented in cymoca::ast::TList< Base, INode >, cymoca::ast::expression::Function, cymoca::ast::condition::Boolean, cymoca::ast::model::Class, cymoca::ast::expression::Number, cymoca::ast::model::ElementDict, cymoca::ast::equation::Block, cymoca::ast::element::Component, and cymoca::ast::expression::Reference.

1.8.6