| // | |
| // Copyright (c) 2012 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. | |
| // | |
| #ifndef COMPILER_RENAME_FUNCTION | |
| #define COMPILER_RENAME_FUNCTION | |
| #include "compiler/intermediate.h" | |
| // | |
| // Renames a function, including its declaration and any calls to it. | |
| // | |
| class RenameFunction : public TIntermTraverser | |
| { | |
| public: | |
| RenameFunction(const TString& oldFunctionName, const TString& newFunctionName) | |
| : TIntermTraverser(true, false, false) | |
| , mOldFunctionName(oldFunctionName) | |
| , mNewFunctionName(newFunctionName) {} | |
| virtual bool visitAggregate(Visit visit, TIntermAggregate* node) | |
| { | |
| TOperator op = node->getOp(); | |
| if ((op == EOpFunction || op == EOpFunctionCall) && node->getName() == mOldFunctionName) | |
| node->setName(mNewFunctionName); | |
| return true; | |
| } | |
| private: | |
| const TString mOldFunctionName; | |
| const TString mNewFunctionName; | |
| }; | |
| #endif // COMPILER_RENAME_FUNCTION |