webkit  2cdf99a9e3038c7e01b3c37e8ad903ecbe5eecf1
https://github.com/WebKit/webkit
Classes | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
TIntermTraverser Class Reference

#include <IntermNode.h>

Inheritance diagram for TIntermTraverser:
angle::NonCopyable BuiltInFunctionEmulator::BuiltInFunctionEmulationMarker CallDAG::CallDAGCreator ConstantFinder< T > ForLoopUnrollMarker sh::NodeSearchTraverser< FindDiscard > sh::NodeSearchTraverser< FindNestedPowWorkaround > sh::NodeSearchTraverser< FindPow > sh::NodeSearchTraverser< FindPowWorkaround > RegenerateStructNames RemoveSwitchFallThrough ScalarizeVecAndMatConstructorArgs sh::CollectVariables sh::FlagStd140Structs sh::NodeSearchTraverser< Parent > sh::OutputHLSL sh::SearchSymbol TExtensionGLSL TLValueTrackingTraverser TMaxDepthTraverser TOutputGLSLBase TVersionGLSL UnfoldShortCircuitAST ValidateLimitations ValidateMaxParameters ValidateOutputs ValidateSwitch

Classes

struct  NodeInsertMultipleEntry
 
struct  NodeReplaceWithMultipleEntry
 

Public Member Functions

 POOL_ALLOCATOR_NEW_DELETE ()
 
 TIntermTraverser (bool preVisit, bool inVisit, bool postVisit)
 
virtual ~TIntermTraverser ()
 
virtual void visitSymbol (TIntermSymbol *node)
 
virtual void visitRaw (TIntermRaw *node)
 
virtual void visitConstantUnion (TIntermConstantUnion *node)
 
virtual bool visitSwizzle (Visit visit, TIntermSwizzle *node)
 
virtual bool visitBinary (Visit visit, TIntermBinary *node)
 
virtual bool visitUnary (Visit visit, TIntermUnary *node)
 
virtual bool visitTernary (Visit visit, TIntermTernary *node)
 
virtual bool visitIfElse (Visit visit, TIntermIfElse *node)
 
virtual bool visitSwitch (Visit visit, TIntermSwitch *node)
 
virtual bool visitCase (Visit visit, TIntermCase *node)
 
virtual bool visitFunctionDefinition (Visit visit, TIntermFunctionDefinition *node)
 
virtual bool visitAggregate (Visit visit, TIntermAggregate *node)
 
virtual bool visitBlock (Visit visit, TIntermBlock *node)
 
virtual bool visitLoop (Visit visit, TIntermLoop *node)
 
virtual bool visitBranch (Visit visit, TIntermBranch *node)
 
virtual void traverseSymbol (TIntermSymbol *node)
 
virtual void traverseRaw (TIntermRaw *node)
 
virtual void traverseConstantUnion (TIntermConstantUnion *node)
 
virtual void traverseSwizzle (TIntermSwizzle *node)
 
virtual void traverseBinary (TIntermBinary *node)
 
virtual void traverseUnary (TIntermUnary *node)
 
virtual void traverseTernary (TIntermTernary *node)
 
virtual void traverseIfElse (TIntermIfElse *node)
 
virtual void traverseSwitch (TIntermSwitch *node)
 
virtual void traverseCase (TIntermCase *node)
 
virtual void traverseFunctionDefinition (TIntermFunctionDefinition *node)
 
virtual void traverseAggregate (TIntermAggregate *node)
 
virtual void traverseBlock (TIntermBlock *node)
 
virtual void traverseLoop (TIntermLoop *node)
 
virtual void traverseBranch (TIntermBranch *node)
 
int getMaxDepth () const
 
void updateTree ()
 
void useTemporaryIndex (unsigned int *temporaryIndex)
 

Static Public Member Functions

static TString hash (const TString &name, ShHashFunction64 hashFunction)
 

Protected Types

enum  OriginalNode { OriginalNode::BECOMES_CHILD, OriginalNode::IS_DROPPED }
 

Protected Member Functions

void incrementDepth (TIntermNode *current)
 
void decrementDepth ()
 
TIntermNodegetParentNode ()
 
TIntermNodegetAncestorNode (unsigned int n)
 
void pushParentBlock (TIntermBlock *node)
 
void incrementParentBlockPos ()
 
void popParentBlock ()
 
bool parentNodeIsBlock ()
 
void insertStatementsInParentBlock (const TIntermSequence &insertions)
 
void insertStatementsInParentBlock (const TIntermSequence &insertionsBefore, const TIntermSequence &insertionsAfter)
 
void insertStatementInParentBlock (TIntermNode *statement)
 
TIntermSymbolcreateTempSymbol (const TType &type, TQualifier qualifier)
 
TIntermSymbolcreateTempSymbol (const TType &type)
 
TIntermAggregatecreateTempDeclaration (const TType &type)
 
TIntermAggregatecreateTempInitDeclaration (TIntermTyped *initializer, TQualifier qualifier)
 
TIntermAggregatecreateTempInitDeclaration (TIntermTyped *initializer)
 
TIntermBinarycreateTempAssignment (TIntermTyped *rightNode)
 
void nextTemporaryIndex ()
 
void clearReplacementQueue ()
 
void queueReplacement (TIntermNode *original, TIntermNode *replacement, OriginalNode originalStatus)
 
void queueReplacementWithParent (TIntermNode *parent, TIntermNode *original, TIntermNode *replacement, OriginalNode originalStatus)
 

Protected Attributes

const bool preVisit
 
const bool inVisit
 
const bool postVisit
 
int mDepth
 
int mMaxDepth
 
TVector< TIntermNode * > mPath
 
bool mInGlobalScope
 
std::vector< NodeReplaceWithMultipleEntrymMultiReplacements
 
std::vector< NodeInsertMultipleEntrymInsertions
 

Member Enumeration Documentation

◆ OriginalNode

Enumerator
BECOMES_CHILD 
IS_DROPPED 

Constructor & Destructor Documentation

◆ TIntermTraverser()

TIntermTraverser::TIntermTraverser ( bool  preVisit,
bool  inVisit,
bool  postVisit 
)

◆ ~TIntermTraverser()

TIntermTraverser::~TIntermTraverser ( )
virtual

Member Function Documentation

◆ clearReplacementQueue()

void TIntermTraverser::clearReplacementQueue ( )
protected

◆ createTempAssignment()

TIntermBinary * TIntermTraverser::createTempAssignment ( TIntermTyped rightNode)
protected

◆ createTempDeclaration()

TIntermAggregate * TIntermTraverser::createTempDeclaration ( const TType type)
protected

◆ createTempInitDeclaration() [1/2]

TIntermAggregate * TIntermTraverser::createTempInitDeclaration ( TIntermTyped initializer,
TQualifier  qualifier 
)
protected

◆ createTempInitDeclaration() [2/2]

TIntermAggregate * TIntermTraverser::createTempInitDeclaration ( TIntermTyped initializer)
protected

◆ createTempSymbol() [1/2]

TIntermSymbol * TIntermTraverser::createTempSymbol ( const TType type,
TQualifier  qualifier 
)
protected

◆ createTempSymbol() [2/2]

TIntermSymbol * TIntermTraverser::createTempSymbol ( const TType type)
protected

◆ decrementDepth()

void TIntermTraverser::decrementDepth ( )
inlineprotected

◆ getAncestorNode()

TIntermNode* TIntermTraverser::getAncestorNode ( unsigned int  n)
inlineprotected

◆ getMaxDepth()

int TIntermTraverser::getMaxDepth ( ) const
inline

◆ getParentNode()

TIntermNode* TIntermTraverser::getParentNode ( )
inlineprotected

◆ hash()

TString TIntermTraverser::hash ( const TString name,
ShHashFunction64  hashFunction 
)
static

◆ incrementDepth()

void TIntermTraverser::incrementDepth ( TIntermNode current)
inlineprotected

◆ incrementParentBlockPos()

void TIntermTraverser::incrementParentBlockPos ( )
protected

◆ insertStatementInParentBlock()

void TIntermTraverser::insertStatementInParentBlock ( TIntermNode statement)
protected

◆ insertStatementsInParentBlock() [1/2]

void TIntermTraverser::insertStatementsInParentBlock ( const TIntermSequence insertions)
protected

◆ insertStatementsInParentBlock() [2/2]

void TIntermTraverser::insertStatementsInParentBlock ( const TIntermSequence insertionsBefore,
const TIntermSequence insertionsAfter 
)
protected

◆ nextTemporaryIndex()

void TIntermTraverser::nextTemporaryIndex ( )
protected

◆ parentNodeIsBlock()

bool TIntermTraverser::parentNodeIsBlock ( )
inlineprotected

◆ POOL_ALLOCATOR_NEW_DELETE()

TIntermTraverser::POOL_ALLOCATOR_NEW_DELETE ( )

◆ popParentBlock()

void TIntermTraverser::popParentBlock ( )
protected

◆ pushParentBlock()

void TIntermTraverser::pushParentBlock ( TIntermBlock node)
protected

◆ queueReplacement()

void TIntermTraverser::queueReplacement ( TIntermNode original,
TIntermNode replacement,
OriginalNode  originalStatus 
)
protected

◆ queueReplacementWithParent()

void TIntermTraverser::queueReplacementWithParent ( TIntermNode parent,
TIntermNode original,
TIntermNode replacement,
OriginalNode  originalStatus 
)
protected

◆ traverseAggregate()

void TIntermTraverser::traverseAggregate ( TIntermAggregate node)
virtual

Reimplemented in TLValueTrackingTraverser.

◆ traverseBinary()

void TIntermTraverser::traverseBinary ( TIntermBinary node)
virtual

Reimplemented in TLValueTrackingTraverser.

◆ traverseBlock()

void TIntermTraverser::traverseBlock ( TIntermBlock node)
virtual

◆ traverseBranch()

void TIntermTraverser::traverseBranch ( TIntermBranch node)
virtual

◆ traverseCase()

void TIntermTraverser::traverseCase ( TIntermCase node)
virtual

◆ traverseConstantUnion()

void TIntermTraverser::traverseConstantUnion ( TIntermConstantUnion node)
virtual

◆ traverseFunctionDefinition()

void TIntermTraverser::traverseFunctionDefinition ( TIntermFunctionDefinition node)
virtual

Reimplemented in TLValueTrackingTraverser.

◆ traverseIfElse()

void TIntermTraverser::traverseIfElse ( TIntermIfElse node)
virtual

◆ traverseLoop()

void TIntermTraverser::traverseLoop ( TIntermLoop node)
virtual

◆ traverseRaw()

void TIntermTraverser::traverseRaw ( TIntermRaw node)
virtual

◆ traverseSwitch()

void TIntermTraverser::traverseSwitch ( TIntermSwitch node)
virtual

◆ traverseSwizzle()

void TIntermTraverser::traverseSwizzle ( TIntermSwizzle node)
virtual

◆ traverseSymbol()

void TIntermTraverser::traverseSymbol ( TIntermSymbol node)
virtual

◆ traverseTernary()

void TIntermTraverser::traverseTernary ( TIntermTernary node)
virtual

◆ traverseUnary()

void TIntermTraverser::traverseUnary ( TIntermUnary node)
virtual

Reimplemented in TLValueTrackingTraverser.

◆ updateTree()

void TIntermTraverser::updateTree ( )

◆ useTemporaryIndex()

void TIntermTraverser::useTemporaryIndex ( unsigned int *  temporaryIndex)

◆ visitAggregate()

virtual bool TIntermTraverser::visitAggregate ( Visit  visit,
TIntermAggregate node 
)
inlinevirtual

◆ visitBinary()

virtual bool TIntermTraverser::visitBinary ( Visit  visit,
TIntermBinary node 
)
inlinevirtual

◆ visitBlock()

virtual bool TIntermTraverser::visitBlock ( Visit  visit,
TIntermBlock node 
)
inlinevirtual

◆ visitBranch()

virtual bool TIntermTraverser::visitBranch ( Visit  visit,
TIntermBranch node 
)
inlinevirtual

◆ visitCase()

virtual bool TIntermTraverser::visitCase ( Visit  visit,
TIntermCase node 
)
inlinevirtual

◆ visitConstantUnion()

virtual void TIntermTraverser::visitConstantUnion ( TIntermConstantUnion node)
inlinevirtual

◆ visitFunctionDefinition()

virtual bool TIntermTraverser::visitFunctionDefinition ( Visit  visit,
TIntermFunctionDefinition node 
)
inlinevirtual

Reimplemented in sh::OutputHLSL, and TOutputGLSLBase.

◆ visitIfElse()

virtual bool TIntermTraverser::visitIfElse ( Visit  visit,
TIntermIfElse node 
)
inlinevirtual

◆ visitLoop()

virtual bool TIntermTraverser::visitLoop ( Visit  visit,
TIntermLoop node 
)
inlinevirtual

◆ visitRaw()

virtual void TIntermTraverser::visitRaw ( TIntermRaw node)
inlinevirtual

Reimplemented in sh::OutputHLSL.

◆ visitSwitch()

virtual bool TIntermTraverser::visitSwitch ( Visit  visit,
TIntermSwitch node 
)
inlinevirtual

◆ visitSwizzle()

virtual bool TIntermTraverser::visitSwizzle ( Visit  visit,
TIntermSwizzle node 
)
inlinevirtual

Reimplemented in sh::OutputHLSL, and TOutputGLSLBase.

◆ visitSymbol()

virtual void TIntermTraverser::visitSymbol ( TIntermSymbol node)
inlinevirtual

◆ visitTernary()

virtual bool TIntermTraverser::visitTernary ( Visit  visit,
TIntermTernary node 
)
inlinevirtual

◆ visitUnary()

virtual bool TIntermTraverser::visitUnary ( Visit  visit,
TIntermUnary node 
)
inlinevirtual

Member Data Documentation

◆ inVisit

const bool TIntermTraverser::inVisit
protected

◆ mDepth

int TIntermTraverser::mDepth
protected

◆ mInGlobalScope

bool TIntermTraverser::mInGlobalScope
protected

◆ mInsertions

std::vector<NodeInsertMultipleEntry> TIntermTraverser::mInsertions
protected

◆ mMaxDepth

int TIntermTraverser::mMaxDepth
protected

◆ mMultiReplacements

std::vector<NodeReplaceWithMultipleEntry> TIntermTraverser::mMultiReplacements
protected

◆ mPath

TVector<TIntermNode *> TIntermTraverser::mPath
protected

◆ postVisit

const bool TIntermTraverser::postVisit
protected

◆ preVisit

const bool TIntermTraverser::preVisit
protected

The documentation for this class was generated from the following files: