// // 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