[][src]Trait glsl::visitor::Host

pub trait Host {
    fn visit<V>(&mut self, visitor: &mut V)
    where
        V: Visitor
; }

Part of the AST that can be visited.

You shouldn’t have to worry about this type nor how to implement it – it’s completely implemented for you. However, it works in a pretty simple way: any implementor of Host can be used with a Visitor.

The idea is that visiting an AST node is a two-step process:

  • First, you can get your visitor called once as soon as an interesting node gets visited. For instance, if your visitor has an implementation for visiting expressions, everytime an expression gets visited, your visitor will run.
  • If your implementation of visiting an AST node returns Visit::Children and if the given node has children, the visitor will go deeper, invoking other calls if you have defined any. A typical pattern you might want to do is to implement your visitor to gets run on all typenames. Since expressions contains variables, you will get your visitor called once again there.
  • Notice that since visitors are mutable, you can accumulate a state as you go deeper in the AST to implement various checks and validations.

Required methods

fn visit<V>(&mut self, visitor: &mut V) where
    V: Visitor

Visit an AST node.

Loading content...

Implementations on Foreign Types

impl<T> Host for Option<T> where
    T: Host
[src]

impl<T> Host for Box<T> where
    T: Host
[src]

Loading content...

Implementors

impl Host for ArraySpecifier[src]

impl Host for AssignmentOp[src]

impl Host for BinaryOp[src]

impl Host for CaseLabel[src]

impl Host for Condition[src]

impl Host for Declaration[src]

impl Host for Expr[src]

impl Host for ExternalDeclaration[src]

impl Host for ForInitStatement[src]

impl Host for FunIdentifier[src]

impl Host for FunctionParameterDeclaration[src]

impl Host for Initializer[src]

impl Host for InterpolationQualifier[src]

impl Host for IterationStatement[src]

impl Host for JumpStatement[src]

impl Host for LayoutQualifierSpec[src]

impl Host for PrecisionQualifier[src]

impl Host for Preprocessor[src]

impl Host for PreprocessorExtensionBehavior[src]

impl Host for PreprocessorExtensionName[src]

impl Host for PreprocessorVersionProfile[src]

impl Host for SelectionRestStatement[src]

impl Host for SimpleStatement[src]

impl Host for Statement[src]

impl Host for StorageQualifier[src]

impl Host for TypeQualifierSpec[src]

impl Host for TypeSpecifierNonArray[src]

impl Host for UnaryOp[src]

impl Host for ArrayedIdentifier[src]

impl Host for Block[src]

impl Host for CompoundStatement[src]

impl Host for ForRestStatement[src]

impl Host for FullySpecifiedType[src]

impl Host for FunctionDefinition[src]

impl Host for FunctionParameterDeclarator[src]

impl Host for FunctionPrototype[src]

impl Host for Identifier[src]

impl Host for InitDeclaratorList[src]

impl Host for LayoutQualifier[src]

impl Host for PreprocessorDefine[src]

impl Host for PreprocessorExtension[src]

impl Host for PreprocessorVersion[src]

impl Host for SelectionStatement[src]

impl Host for SingleDeclaration[src]

impl Host for SingleDeclarationNoType[src]

impl Host for StructFieldSpecifier[src]

impl Host for StructSpecifier[src]

impl Host for SwitchStatement[src]

impl Host for TranslationUnit[src]

impl Host for TypeName[src]

impl Host for TypeQualifier[src]

impl Host for TypeSpecifier[src]

Loading content...