Class WalkPhase<T extends JobParameters>

java.lang.Object
io.github.douira.glsl_transformer.GLSLParserBaseListener
io.github.douira.glsl_transformer.transform.TransformationPhase<T>
io.github.douira.glsl_transformer.transform.WalkPhase<T>
All Implemented Interfaces:
io.github.douira.glsl_transformer.GLSLParserListener, LifecycleUser<T>, PartialParseTreeListener, ParseTreeListener
Direct Known Subclasses:
SearchTerminals

public abstract class WalkPhase<T extends JobParameters> extends TransformationPhase<T>
The walk phase is a phase on which the listener methods of the generated listener interface are called. It can control when it is run by changing the is*Walk and isActive methods. It can also run before and after the tree walk happens.
  • Nested Class Summary

    Nested classes/interfaces inherited from class io.github.douira.glsl_transformer.transform.TransformationPhase

    TransformationPhase.InjectionPoint
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    afterWalk(io.github.douira.glsl_transformer.GLSLParser.TranslationUnitContext ctx)
    This method is called after the tree walk was performed.
    protected void
    beforeWalk(io.github.douira.glsl_transformer.GLSLParser.TranslationUnitContext ctx)
    This method is called before the tree walk is performed.
    protected boolean
    Called during planning in order to determine if this phase does any walking at all or if it just runs some code, like a RunPhase.
    protected final boolean
    checkBeforeWalk(io.github.douira.glsl_transformer.GLSLParser.TranslationUnitContext ctx)
    Method called by the execution planner before the walk happens.
    protected boolean
    Determines if this phase's afterWalk(TranslationUnitContext) should be run.
    protected boolean
    Determines if the phase's listener methods should be run.
    protected boolean
    Determines if this phase's beforeWalk(TranslationUnitContext) should be run.
    protected final void
    runAfterWalk(io.github.douira.glsl_transformer.GLSLParser.TranslationUnitContext ctx)
    Method called by the execution planner after the walk happens.

    Methods inherited from class io.github.douira.glsl_transformer.GLSLParserBaseListener

    enterAdditiveExpression, enterArrayAccessExpression, enterArraySpecifier, enterArraySpecifierSegment, enterAssignmentExpression, enterAtomicUnitType, enterAttribute, enterBitwiseAndExpression, enterBitwiseExclusiveOrExpression, enterBitwiseInclusiveOrExpression, enterBooleanType, enterBooleanVectorType, enterBreakStatement, enterBuiltinType, enterCallParameterList, enterCompoundStatement, enterConditionalExpression, enterContinueStatement, enterDeclarationMember, enterDeclarationStatement, enterDefaultCaseLabel, enterDemoteStatement, enterDiscardStatement, enterDoWhileStatement, enterEmptyDeclaration, enterEmptyStatement, enterEqualityExpression, enterEveryRule, enterExpressionStatement, enterExtensionStatement, enterExternalDeclaration, enterFloatMatrixType, enterFloatType, enterFloatVectorType, enterForStatement, enterFullySpecifiedType, enterFunctionCall, enterFunctionCallExpression, enterFunctionDeclaration, enterFunctionDefinition, enterFunctionHeader, enterFunctionIdentifier, enterFunctionParameterList, enterFunctionPrototype, enterGroupingExpression, enterImageType, enterInitDeclaratorList, enterInitializer, enterIntegerType, enterIntegerVectorType, enterInterfaceBlockDeclaration, enterInterpolationQualifier, enterInvariantQualifier, enterIterationCondition, enterLayoutDefaults, enterLayoutQualifier, enterLiteralExpression, enterLogicalAndExpression, enterLogicalExclusiveOrExpression, enterLogicalInclusiveOrExpression, enterMemberAccessExpression, enterMethodCall, enterMethodCallExpression, enterMultiplicativeExpression, enterNamedLayoutQualifier, enterParameterDeclaration, enterParameterDeclarator, enterPostfixExpression, enterPragmaStatement, enterPreciseQualifier, enterPrecisionDeclaration, enterPrecisionQualifier, enterPrefixExpression, enterReferencedType, enterReferenceExpression, enterRelationalExpression, enterReturnStatement, enterSamplerType, enterSelectionStatement, enterSequenceExpression, enterSharedLayoutQualifier, enterShiftExpression, enterSingleAttribute, enterStatement, enterStorageQualifier, enterStructBody, enterStructDeclarator, enterStructMember, enterStructSpecifier, enterStructSpecifierType, enterSwitchStatement, enterTranslationUnit, enterTypeAndInitDeclaration, enterTypeNameList, enterTypeQualifier, enterTypeSpecifier, enterValuedCaseLabel, enterVariableDeclaration, enterVariableIdentifier, enterVersionStatement, enterVoidType, enterWhileStatement, exitAdditiveExpression, exitArrayAccessExpression, exitArraySpecifier, exitArraySpecifierSegment, exitAssignmentExpression, exitAtomicUnitType, exitAttribute, exitBitwiseAndExpression, exitBitwiseExclusiveOrExpression, exitBitwiseInclusiveOrExpression, exitBooleanType, exitBooleanVectorType, exitBreakStatement, exitBuiltinType, exitCallParameterList, exitCompoundStatement, exitConditionalExpression, exitContinueStatement, exitDeclarationMember, exitDeclarationStatement, exitDefaultCaseLabel, exitDemoteStatement, exitDiscardStatement, exitDoWhileStatement, exitEmptyDeclaration, exitEmptyStatement, exitEqualityExpression, exitEveryRule, exitExpressionStatement, exitExtensionStatement, exitExternalDeclaration, exitFloatMatrixType, exitFloatType, exitFloatVectorType, exitForStatement, exitFullySpecifiedType, exitFunctionCall, exitFunctionCallExpression, exitFunctionDeclaration, exitFunctionDefinition, exitFunctionHeader, exitFunctionIdentifier, exitFunctionParameterList, exitFunctionPrototype, exitGroupingExpression, exitImageType, exitInitDeclaratorList, exitInitializer, exitIntegerType, exitIntegerVectorType, exitInterfaceBlockDeclaration, exitInterpolationQualifier, exitInvariantQualifier, exitIterationCondition, exitLayoutDefaults, exitLayoutQualifier, exitLiteralExpression, exitLogicalAndExpression, exitLogicalExclusiveOrExpression, exitLogicalInclusiveOrExpression, exitMemberAccessExpression, exitMethodCall, exitMethodCallExpression, exitMultiplicativeExpression, exitNamedLayoutQualifier, exitParameterDeclaration, exitParameterDeclarator, exitPostfixExpression, exitPragmaStatement, exitPreciseQualifier, exitPrecisionDeclaration, exitPrecisionQualifier, exitPrefixExpression, exitReferencedType, exitReferenceExpression, exitRelationalExpression, exitReturnStatement, exitSamplerType, exitSelectionStatement, exitSequenceExpression, exitSharedLayoutQualifier, exitShiftExpression, exitSingleAttribute, exitStatement, exitStorageQualifier, exitStructBody, exitStructDeclarator, exitStructMember, exitStructSpecifier, exitStructSpecifierType, exitSwitchStatement, exitTranslationUnit, exitTypeAndInitDeclaration, exitTypeNameList, exitTypeQualifier, exitTypeSpecifier, exitValuedCaseLabel, exitVariableDeclaration, exitVariableIdentifier, exitVersionStatement, exitVoidType, exitWhileStatement, visitErrorNode, visitTerminal

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface io.github.douira.glsl_transformer.transform.LifecycleUser

    getJobParameters, getLexer, getParser, getRootNode, init, initOnce, resetState

    Methods inherited from interface org.antlr.v4.runtime.tree.ParseTreeListener

    enterEveryRule, exitEveryRule, visitErrorNode, visitTerminal

    Methods inherited from interface io.github.douira.glsl_transformer.traversal.PartialParseTreeListener

    isDeepEnough, isFinished
  • Constructor Details

    • WalkPhase

      public WalkPhase()
  • Method Details

    • isActiveBeforeWalk

      protected boolean isActiveBeforeWalk()
      Determines if this phase's beforeWalk(TranslationUnitContext) should be run.
      Returns:
      If it should be run
    • isActiveAtWalk

      protected boolean isActiveAtWalk()
      Determines if the phase's listener methods should be run. If this returns false, the phase effectively degenerates into a RunPhase.
      Returns:
      If the phase should participate in the tree walk
    • isActiveAfterWalk

      protected boolean isActiveAfterWalk()
      Determines if this phase's afterWalk(TranslationUnitContext) should be run.
      Returns:
      If it should be run
    • beforeWalk

      protected void beforeWalk(io.github.douira.glsl_transformer.GLSLParser.TranslationUnitContext ctx)
      This method is called before the tree walk is performed.
      Parameters:
      ctx - The root translation unit node
    • afterWalk

      protected void afterWalk(io.github.douira.glsl_transformer.GLSLParser.TranslationUnitContext ctx)
      This method is called after the tree walk was performed.
      Parameters:
      ctx - The root translation unit node
    • canWalk

      protected boolean canWalk()
      Description copied from class: TransformationPhase
      Called during planning in order to determine if this phase does any walking at all or if it just runs some code, like a RunPhase. This doesn't exclude or include this phase from walking but rather helps the execution planner combine walk phases into execution levels. Enabling and disabling a phase should be done with the methods TransformationPhase.checkBeforeWalk(TranslationUnitContext) and TransformationPhase.runAfterWalk(TranslationUnitContext).
      Specified by:
      canWalk in class TransformationPhase<T extends JobParameters>
      Returns:
      If this phase needs to be walked on the tree
    • checkBeforeWalk

      protected final boolean checkBeforeWalk(io.github.douira.glsl_transformer.GLSLParser.TranslationUnitContext ctx)
      Description copied from class: TransformationPhase
      Method called by the execution planner before the walk happens. The returned boolean determines if the phase is added to the list of phases that are walked on the tree. Returns false by default and implementing classes should overwrite this.
      Overrides:
      checkBeforeWalk in class TransformationPhase<T extends JobParameters>
      Parameters:
      ctx - The root node
      Returns:
      true if the phase should be walked on the tree
    • runAfterWalk

      protected final void runAfterWalk(io.github.douira.glsl_transformer.GLSLParser.TranslationUnitContext ctx)
      Description copied from class: TransformationPhase
      Method called by the execution planner after the walk happens. Does nothing by default.
      Overrides:
      runAfterWalk in class TransformationPhase<T extends JobParameters>
      Parameters:
      ctx - The root node