Envision
A visual programming IDE for object-oriented languages
List of all members | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Private Member Functions
Model::Visitor< ConcreteVisitor, Result > Class Template Reference

Public Types

using BaseVisitorType = ConcreteVisitor
 
using VisitFunctionInstance = std::function< Result(ConcreteVisitor *, Node *)>
 
using VisitorResultType = Result
 

Public Member Functions

virtual ~Visitor ()
 
Result visit (Node *n)
 
virtual Result visitChildren (Node *n)
 

Static Public Member Functions

template<typename NodeType >
static void addType (std::function< Result(ConcreteVisitor *, NodeType *)> f)
 

Protected Member Functions

virtual VisitFunctionInstance findFunctionForId (int id)
 

Static Private Member Functions

static QVector< VisitFunctionInstance > & types ()
 

Member Typedef Documentation

◆ BaseVisitorType

template<typename ConcreteVisitor , typename Result = void>
using Model::Visitor< ConcreteVisitor, Result >::BaseVisitorType = ConcreteVisitor

◆ VisitFunctionInstance

template<typename ConcreteVisitor , typename Result = void>
using Model::Visitor< ConcreteVisitor, Result >::VisitFunctionInstance = std::function<Result(ConcreteVisitor*, Node*)>

◆ VisitorResultType

template<typename ConcreteVisitor , typename Result = void>
using Model::Visitor< ConcreteVisitor, Result >::VisitorResultType = Result

Constructor & Destructor Documentation

◆ ~Visitor()

template<typename ConcreteVisitor , typename Result = void>
virtual Model::Visitor< ConcreteVisitor, Result >::~Visitor ( )
virtual

Member Function Documentation

◆ addType()

template<typename ConcreteVisitor , typename Result >
template<typename NodeType >
void Model::Visitor< ConcreteVisitor, Result >::addType ( std::function< Result(ConcreteVisitor< ConcreteVisitor, Result > *, NodeType *)>  f)
inlinestatic

◆ findFunctionForId()

template<typename ConcreteVisitor , typename Result = void>
virtual VisitFunctionInstance Model::Visitor< ConcreteVisitor, Result >::findFunctionForId ( int  id)
protectedvirtual

◆ types()

template<typename ConcreteVisitor , typename Result = void>
static QVector<VisitFunctionInstance>& Model::Visitor< ConcreteVisitor, Result >::types ( )
staticprivate

◆ visit()

template<typename ConcreteVisitor , typename Result = void>
Result Model::Visitor< ConcreteVisitor, Result >::visit ( Node n)

◆ visitChildren()

template<typename ConcreteVisitor , typename Result = void>
virtual Result Model::Visitor< ConcreteVisitor, Result >::visitChildren ( Node n)
virtual