summaryrefslogtreecommitdiff
path: root/Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.h')
-rw-r--r--Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.h b/Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.h
new file mode 100644
index 000000000..540909ea9
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/src/compiler/MapLongVariableNames.h
@@ -0,0 +1,39 @@
+//
+// Copyright (c) 2002-2011 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_MAP_LONG_VARIABLE_NAMES_H_
+#define COMPILER_MAP_LONG_VARIABLE_NAMES_H_
+
+#include "GLSLANG/ShaderLang.h"
+
+#include "compiler/intermediate.h"
+#include "compiler/VariableInfo.h"
+
+// This size does not include '\0' in the end.
+#define MAX_IDENTIFIER_NAME_SIZE 32
+
+// Traverses intermediate tree to map attributes and uniforms names that are
+// longer than MAX_IDENTIFIER_NAME_SIZE to MAX_IDENTIFIER_NAME_SIZE.
+class MapLongVariableNames : public TIntermTraverser {
+public:
+ MapLongVariableNames(TMap<TString, TString>& varyingLongNameMap);
+
+ virtual void visitSymbol(TIntermSymbol*);
+ virtual void visitConstantUnion(TIntermConstantUnion*);
+ virtual bool visitBinary(Visit, TIntermBinary*);
+ virtual bool visitUnary(Visit, TIntermUnary*);
+ virtual bool visitSelection(Visit, TIntermSelection*);
+ virtual bool visitAggregate(Visit, TIntermAggregate*);
+ virtual bool visitLoop(Visit, TIntermLoop*);
+ virtual bool visitBranch(Visit, TIntermBranch*);
+
+private:
+ TString mapVaryingLongName(const TString& name);
+
+ TMap<TString, TString>& mVaryingLongNameMap;
+};
+
+#endif // COMPILER_MAP_LONG_VARIABLE_NAMES_H_