diff options
Diffstat (limited to 'src/3rdparty/angle/src/compiler/translator/SeparateDeclarations.cpp')
-rw-r--r-- | src/3rdparty/angle/src/compiler/translator/SeparateDeclarations.cpp | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/src/3rdparty/angle/src/compiler/translator/SeparateDeclarations.cpp b/src/3rdparty/angle/src/compiler/translator/SeparateDeclarations.cpp deleted file mode 100644 index 9a066075c0..0000000000 --- a/src/3rdparty/angle/src/compiler/translator/SeparateDeclarations.cpp +++ /dev/null @@ -1,79 +0,0 @@ -// -// Copyright (c) 2002-2015 The ANGLE Project Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. -// -// The SeparateDeclarations function processes declarations, so that in the end each declaration -// contains only one declarator. -// This is useful as an intermediate step when initialization needs to be separated from -// declaration, or when things need to be unfolded out of the initializer. -// Example: -// int a[1] = int[1](1), b[1] = int[1](2); -// gets transformed when run through this class into the AST equivalent of: -// int a[1] = int[1](1); -// int b[1] = int[1](2); - -#include "compiler/translator/SeparateDeclarations.h" - -#include "compiler/translator/IntermTraverse.h" - -namespace sh -{ - -namespace -{ - -class SeparateDeclarationsTraverser : private TIntermTraverser -{ - public: - static void apply(TIntermNode *root); - - private: - SeparateDeclarationsTraverser(); - bool visitDeclaration(Visit, TIntermDeclaration *node) override; -}; - -void SeparateDeclarationsTraverser::apply(TIntermNode *root) -{ - SeparateDeclarationsTraverser separateDecl; - root->traverse(&separateDecl); - separateDecl.updateTree(); -} - -SeparateDeclarationsTraverser::SeparateDeclarationsTraverser() - : TIntermTraverser(true, false, false) -{ -} - -bool SeparateDeclarationsTraverser::visitDeclaration(Visit, TIntermDeclaration *node) -{ - TIntermSequence *sequence = node->getSequence(); - if (sequence->size() > 1) - { - TIntermBlock *parentBlock = getParentNode()->getAsBlock(); - ASSERT(parentBlock != nullptr); - - TIntermSequence replacementDeclarations; - for (size_t ii = 0; ii < sequence->size(); ++ii) - { - TIntermDeclaration *replacementDeclaration = new TIntermDeclaration(); - - replacementDeclaration->appendDeclarator(sequence->at(ii)->getAsTyped()); - replacementDeclaration->setLine(sequence->at(ii)->getLine()); - replacementDeclarations.push_back(replacementDeclaration); - } - - mMultiReplacements.push_back( - NodeReplaceWithMultipleEntry(parentBlock, node, replacementDeclarations)); - } - return false; -} - -} // namespace - -void SeparateDeclarations(TIntermNode *root) -{ - SeparateDeclarationsTraverser::apply(root); -} - -} // namespace sh |