OpenVDB  9.0.1
Public Types | Public Member Functions | List of all members
VisitNodeType< NodeT, OpT, Derived > Struct Template Reference

#include <openvdb_ax/ast/Scanners.h>

Inherits Visitor< std::conditional< std::is_same< Derived, void >::value, VisitNodeType< NodeT, OpT >, Derived >::type >.

Public Types

using VisitorT = typename std::conditional< std::is_same< Derived, void >::value, VisitNodeType< NodeT, OpT >, Derived >::type
 
using NodeType = typename std::conditional< true, const NodeT, NodeT >::type
 Templated conditional which resolves to a const NodeT if ConstVisit is true, or a non-const NodeT if ConstVisit is false. More...
 

Public Member Functions

bool visitNodeHierarchies () const
 
 VisitNodeType (const OpT &op)
 
 ~VisitNodeType ()=default
 
bool visit (const NodeT *node)
 
std::conditional< std::is_same< Derived, void >::value, VisitNodeType< NodeT, OpT >, Derived >::type & derived ()
 Accesses the derived class by static casting the current object. Assumes use of the Curiously Recursive Template Pattern (CRTP). More...
 
Options
bool postOrderNodes () const
 Default behavior option. If true, this results in post-order traversal, where node children are traversed and visited before their parent node. If false, this results in pre-order traversal, where by the current node is visited before the node's children. More...
 
bool reverseChildVisits () const
 Default behavior option. Reverses the traversal order of child nodes. If true, child nodes are accessed from last to first index .i.e. Node::children() -> 0. If false, child nodes are accessed from first to last .i.e. 0 -> Node::children() More...
 
bool reverseHierarchyVisits () const
 Default behavior option. Reverses the traversal order of node hierarchies. If true, hierarchical visits start at the very top of their inheritance structure (always a Node AST node) and visit downwards until the lowest derived concrete node is reached. If false, hierarchical visits start at the lowest derived concrete node and visit upwards until the very top of their inheritance structure (always a Node AST node) is reached. More...
 
Traversals
bool traverse (NodeType< ast::Tree > *tree)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::StatementList > *cond)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::Block > *block)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::CommaOperator > *comma)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::Loop > *loop)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::Keyword > *keyw)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::ConditionalStatement > *cond)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::AssignExpression > *asgn)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::Crement > *crmt)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::UnaryOperator > *unry)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::BinaryOperator > *bin)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::TernaryOperator > *tern)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::Cast > *cast)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::FunctionCall > *call)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::Attribute > *attr)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::ExternalVariable > *ext)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::DeclareLocal > *decl)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::Local > *loc)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::ArrayPack > *pack)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::ArrayUnpack > *pack)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::Value< bool >> *val)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::Value< int16_t >> *val)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::Value< int32_t >> *val)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::Value< int64_t >> *val)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::Value< float >> *val)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::Value< double >> *val)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::Value< std::string >> *val)
 Default traversals for a given concrete AST node type. More...
 
bool traverse (NodeType< ast::Node > *node)
 The default traversal method which is hit for all child traversals. The correct derived traversal scheme is selected by using the node enumerated type. More...
 
Visits
bool visit (NodeType< ast::Node > *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::Statement > *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::Expression > *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::Variable > *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::ValueBase > *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::Tree > *)
 Visits for concrete Node types. More...
 
bool visit (NodeType< ast::StatementList > *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::Block > *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::CommaOperator > *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::Loop > *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::Keyword > *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::ConditionalStatement > *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::AssignExpression > *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::Crement > *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::UnaryOperator > *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::BinaryOperator > *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::TernaryOperator > *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::Cast > *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::FunctionCall > *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::Attribute > *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::ExternalVariable > *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::DeclareLocal > *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::Local > *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::ArrayPack > *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::ArrayUnpack > *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::Value< bool >> *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::Value< int16_t >> *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::Value< int32_t >> *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::Value< int64_t >> *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::Value< float >> *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::Value< double >> *)
 Visits for abstract (pure-virtual) Node types. More...
 
bool visit (NodeType< ast::Value< std::string >> *)
 Visits for abstract (pure-virtual) Node types. More...
 

Member Typedef Documentation

using NodeType = typename std::conditional<true , const NodeT, NodeT>::type
inherited

Templated conditional which resolves to a const NodeT if ConstVisit is true, or a non-const NodeT if ConstVisit is false.

using VisitorT = typename std::conditional< std::is_same<Derived, void>::value, VisitNodeType<NodeT, OpT>, Derived>::type

Constructor & Destructor Documentation

VisitNodeType ( const OpT &  op)
inline
~VisitNodeType ( )
default

Member Function Documentation

std::conditional< std::is_same< Derived, void >::value, VisitNodeType< NodeT, OpT >, Derived >::type & derived ( )
inlineinherited

Accesses the derived class by static casting the current object. Assumes use of the Curiously Recursive Template Pattern (CRTP).

bool postOrderNodes ( ) const
inlineinherited

Default behavior option. If true, this results in post-order traversal, where node children are traversed and visited before their parent node. If false, this results in pre-order traversal, where by the current node is visited before the node's children.

Post-order traversal (for each node):

  1. Traverse all children.
  2. Visit the current node. Pre-order traversal (for each node):
  1. Visit the current node.
  2. Traverse all children.
bool reverseChildVisits ( ) const
inlineinherited

Default behavior option. Reverses the traversal order of child nodes. If true, child nodes are accessed from last to first index .i.e. Node::children() -> 0. If false, child nodes are accessed from first to last .i.e. 0 -> Node::children()

bool reverseHierarchyVisits ( ) const
inlineinherited

Default behavior option. Reverses the traversal order of node hierarchies. If true, hierarchical visits start at the very top of their inheritance structure (always a Node AST node) and visit downwards until the lowest derived concrete node is reached. If false, hierarchical visits start at the lowest derived concrete node and visit upwards until the very top of their inheritance structure (always a Node AST node) is reached.

Note
Has no effect if visitNodeHierarchies() is false
bool traverse ( NodeType< ast::Tree > *  tree)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::StatementList > *  cond)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::Block > *  block)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::CommaOperator > *  comma)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::Loop > *  loop)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::Keyword > *  keyw)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::ConditionalStatement > *  cond)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::AssignExpression > *  asgn)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::Crement > *  crmt)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::UnaryOperator > *  unry)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::BinaryOperator > *  bin)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::TernaryOperator > *  tern)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::Cast > *  cast)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::FunctionCall > *  call)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::Attribute > *  attr)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::ExternalVariable > *  ext)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::DeclareLocal > *  decl)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::Local > *  loc)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::ArrayPack > *  pack)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::ArrayUnpack > *  pack)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::Value< bool >> *  val)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::Value< int16_t >> *  val)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::Value< int32_t >> *  val)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::Value< int64_t >> *  val)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::Value< float >> *  val)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::Value< double >> *  val)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::Value< std::string >> *  val)
inlineinherited

Default traversals for a given concrete AST node type.

Returns
True if traversal should continue, false to terminate
bool traverse ( NodeType< ast::Node > *  node)
inlineinherited

The default traversal method which is hit for all child traversals. The correct derived traversal scheme is selected by using the node enumerated type.

Note
Only handles traversal on concrete node types.
bool visit ( const NodeT *  node)
inline
bool visit ( NodeType< ast::Node > *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::Statement > *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::Expression > *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::Variable > *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::ValueBase > *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::Tree > *  )
inlineinherited

Visits for concrete Node types.

Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::StatementList > *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::Block > *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::CommaOperator > *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::Loop > *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::Keyword > *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::ConditionalStatement > *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::AssignExpression > *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::Crement > *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::UnaryOperator > *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::BinaryOperator > *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::TernaryOperator > *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::Cast > *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::FunctionCall > *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::Attribute > *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::ExternalVariable > *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::DeclareLocal > *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::Local > *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::ArrayPack > *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::ArrayUnpack > *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::Value< bool >> *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::Value< int16_t >> *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::Value< int32_t >> *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::Value< int64_t >> *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::Value< float >> *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::Value< double >> *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visit ( NodeType< ast::Value< std::string >> *  )
inlineinherited

Visits for abstract (pure-virtual) Node types.

Note
These are only hit through the default behavior if Visitor::visitNodeHierarchies is enabled.
Returns
True if traversal should continue, false to terminate
bool visitNodeHierarchies ( ) const
inline