Adding Struct related types

Added TField, TFieldListCollection, TStructure
and TInterfaceBlock for structures and uniform
blocks.

In the TType class, changed structure's type
from TTypeList to TStructure and made related
changes in other files to reflect this change.

Change-Id: Ided4c535651a566952c3314c8c4f31c2d0ccdcca
Reviewed-on: https://swiftshader-review.googlesource.com/3451
Tested-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/OpenGL/compiler/Initialize.cpp b/src/OpenGL/compiler/Initialize.cpp
index 8bb7c82..7bad154 100644
--- a/src/OpenGL/compiler/Initialize.cpp
+++ b/src/OpenGL/compiler/Initialize.cpp
@@ -399,19 +399,17 @@
     //
     // Depth range in window coordinates
     //
-	TTypeList *members = NewPoolTTypeList();
-	TTypeLine near = {new TType(EbtFloat, EbpHigh, EvqGlobal, 1), 0};
-	TTypeLine far = {new TType(EbtFloat, EbpHigh, EvqGlobal, 1), 0};
-	TTypeLine diff = {new TType(EbtFloat, EbpHigh, EvqGlobal, 1), 0};
-	near.type->setFieldName("near");
-	far.type->setFieldName("far");
-	diff.type->setFieldName("diff");
-	members->push_back(near);
-	members->push_back(far);
-	members->push_back(diff);
-	TVariable *depthRangeParameters = new TVariable(NewPoolTString("gl_DepthRangeParameters"), TType(members, "gl_DepthRangeParameters"), true);
+	TFieldList *fields = NewPoolTFieldList();
+	TField *near = new TField(new TType(EbtFloat, EbpHigh, EvqGlobal, 1), NewPoolTString("near"), 0);
+	TField *far = new TField(new TType(EbtFloat, EbpHigh, EvqGlobal, 1), NewPoolTString("far"), 0);
+	TField *diff = new TField(new TType(EbtFloat, EbpHigh, EvqGlobal, 1), NewPoolTString("diff"), 0);
+	fields->push_back(near);
+	fields->push_back(far);
+	fields->push_back(diff);
+	TStructure *depthRangeStruct = new TStructure(NewPoolTString("gl_DepthRangeParameters"), fields);
+	TVariable *depthRangeParameters = new TVariable(&depthRangeStruct->name(), depthRangeStruct, true);
 	symbolTable.insert(COMMON_BUILTINS, *depthRangeParameters);
-	TVariable *depthRange = new TVariable(NewPoolTString("gl_DepthRange"), TType(members, "gl_DepthRangeParameters"));
+	TVariable *depthRange = new TVariable(NewPoolTString("gl_DepthRange"), TType(depthRangeStruct));
 	depthRange->setQualifier(EvqUniform);
 	symbolTable.insert(COMMON_BUILTINS, *depthRange);