• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6 
7 #ifndef COMPILER_RENAME_FUNCTION
8 #define COMPILER_RENAME_FUNCTION
9 
10 #include "compiler/intermediate.h"
11 
12 //
13 // Renames a function, including its declaration and any calls to it.
14 //
15 class RenameFunction : public TIntermTraverser
16 {
17 public:
RenameFunction(const TString & oldFunctionName,const TString & newFunctionName)18     RenameFunction(const TString& oldFunctionName, const TString& newFunctionName)
19     : TIntermTraverser(true, false, false)
20     , mOldFunctionName(oldFunctionName)
21     , mNewFunctionName(newFunctionName) {}
22 
visitAggregate(Visit visit,TIntermAggregate * node)23     virtual bool visitAggregate(Visit visit, TIntermAggregate* node)
24     {
25         TOperator op = node->getOp();
26         if ((op == EOpFunction || op == EOpFunctionCall) && node->getName() == mOldFunctionName)
27             node->setName(mNewFunctionName);
28         return true;
29     }
30 
31 private:
32     const TString mOldFunctionName;
33     const TString mNewFunctionName;
34 };
35 
36 #endif  // COMPILER_RENAME_FUNCTION
37