diff options
Diffstat (limited to 'src/3rdparty/angle/src/compiler/translator/RemoveTree.cpp')
-rw-r--r-- | src/3rdparty/angle/src/compiler/translator/RemoveTree.cpp | 70 |
1 files changed, 11 insertions, 59 deletions
diff --git a/src/3rdparty/angle/src/compiler/translator/RemoveTree.cpp b/src/3rdparty/angle/src/compiler/translator/RemoveTree.cpp index 92e5dbbfe1..e381c32690 100644 --- a/src/3rdparty/angle/src/compiler/translator/RemoveTree.cpp +++ b/src/3rdparty/angle/src/compiler/translator/RemoveTree.cpp @@ -8,70 +8,22 @@ #include "compiler/translator/RemoveTree.h" // -// Code to recursively delete the intermediate tree. +// Code to delete the intermediate tree. // - -class RemoveTree : public TIntermTraverser -{ -public: - RemoveTree() : TIntermTraverser(false, false, true) - { - } - -protected: - void visitSymbol(TIntermSymbol*); - void visitConstantUnion(TIntermConstantUnion*); - bool visitBinary(Visit visit, TIntermBinary*); - bool visitUnary(Visit visit, TIntermUnary*); - bool visitSelection(Visit visit, TIntermSelection*); - bool visitAggregate(Visit visit, TIntermAggregate*); -}; - -void RemoveTree::visitSymbol(TIntermSymbol* node) -{ - delete node; -} - -bool RemoveTree::visitBinary(Visit visit, TIntermBinary* node) -{ - delete node; - - return true; -} - -bool RemoveTree::visitUnary(Visit visit, TIntermUnary* node) -{ - delete node; - - return true; -} - -bool RemoveTree::visitAggregate(Visit visit, TIntermAggregate* node) +void RemoveAllTreeNodes(TIntermNode* root) { - delete node; + std::queue<TIntermNode*> nodeQueue; - return true; -} + nodeQueue.push(root); -bool RemoveTree::visitSelection(Visit visit, TIntermSelection* node) -{ - delete node; + while (!nodeQueue.empty()) + { + TIntermNode *node = nodeQueue.front(); + nodeQueue.pop(); - return true; -} - -void RemoveTree::visitConstantUnion(TIntermConstantUnion* node) -{ - delete node; -} - -// -// Entry point. -// -void RemoveAllTreeNodes(TIntermNode* root) -{ - RemoveTree it; + node->enqueueChildren(&nodeQueue); - root->traverse(&it); + delete node; + } } |