Untabify compiler code
TRAC #12156
Signed-off-by: Shannon Woods
Signed-off-by: Daniel Koch

Author:    Nicolas Capens

git-svn-id: https://angleproject.googlecode.com/svn/trunk@292 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/compiler/BaseTypes.h b/src/compiler/BaseTypes.h
index 2265b96..93df646 100644
--- a/src/compiler/BaseTypes.h
+++ b/src/compiler/BaseTypes.h
@@ -12,20 +12,20 @@
 //
 enum TPrecision
 {
-	EbpHigh,
-	EbpMedium,
-	EbpLow,
+    EbpHigh,
+    EbpMedium,
+    EbpLow,
 };
 
 __inline const char* getPrecisionString(TPrecision p)
 {
-	switch(p)
-	{
-	case EbpHigh:		return "highp";		break;
-	case EbpMedium:		return "mediump";	break;
-	case EbpLow:		return "lowp";		break;
-	default:			return "unknown precision";
-	}
+    switch(p)
+    {
+    case EbpHigh:		return "highp";		break;
+    case EbpMedium:		return "mediump";	break;
+    case EbpLow:		return "lowp";		break;
+    default:			return "unknown precision";
+    }
 }
 
 //
@@ -33,21 +33,21 @@
 //
 enum TBasicType
 {
-	EbtVoid,
-	EbtFloat,
-	EbtInt,
-	EbtBool,
-	EbtGuardSamplerBegin,  // non type:  see implementation of IsSampler()
-	EbtSampler2D,
-	EbtSamplerCube,
-	EbtGuardSamplerEnd,    // non type:  see implementation of IsSampler()
-	EbtStruct,
-	EbtAddress,            // should be deprecated??
+    EbtVoid,
+    EbtFloat,
+    EbtInt,
+    EbtBool,
+    EbtGuardSamplerBegin,  // non type:  see implementation of IsSampler()
+    EbtSampler2D,
+    EbtSamplerCube,
+    EbtGuardSamplerEnd,    // non type:  see implementation of IsSampler()
+    EbtStruct,
+    EbtAddress,            // should be deprecated??
 };
 
 __inline bool IsSampler(TBasicType type)
 {
-	return type > EbtGuardSamplerBegin && type < EbtGuardSamplerEnd;
+    return type > EbtGuardSamplerBegin && type < EbtGuardSamplerEnd;
 }
 
 //
@@ -58,41 +58,41 @@
 //
 enum TQualifier
 {
-	EvqTemporary,     // For temporaries (within a function), read/write
-	EvqGlobal,        // For globals read/write
-	EvqConst,         // User defined constants and non-output parameters in functions
-	EvqAttribute,     // Readonly
-	EvqVaryingIn,     // readonly, fragment shaders only
-	EvqVaryingOut,    // vertex shaders only  read/write
-	EvqInvariantVaryingIn,     // readonly, fragment shaders only
-	EvqInvariantVaryingOut,    // vertex shaders only  read/write
-	EvqUniform,       // Readonly, vertex and fragment
+    EvqTemporary,     // For temporaries (within a function), read/write
+    EvqGlobal,        // For globals read/write
+    EvqConst,         // User defined constants and non-output parameters in functions
+    EvqAttribute,     // Readonly
+    EvqVaryingIn,     // readonly, fragment shaders only
+    EvqVaryingOut,    // vertex shaders only  read/write
+    EvqInvariantVaryingIn,     // readonly, fragment shaders only
+    EvqInvariantVaryingOut,    // vertex shaders only  read/write
+    EvqUniform,       // Readonly, vertex and fragment
 
-	// pack/unpack input and output
-	EvqInput,
-	EvqOutput,
+    // pack/unpack input and output
+    EvqInput,
+    EvqOutput,
 
-	// parameters
-	EvqIn,
-	EvqOut,
-	EvqInOut,
-	EvqConstReadOnly,
+    // parameters
+    EvqIn,
+    EvqOut,
+    EvqInOut,
+    EvqConstReadOnly,
 
-	// built-ins written by vertex shader
-	EvqPosition,
-	EvqPointSize,
+    // built-ins written by vertex shader
+    EvqPosition,
+    EvqPointSize,
 
-	// built-ins read by fragment shader
-	EvqFragCoord,
-	EvqFrontFacing,
-	EvqPointCoord,
+    // built-ins read by fragment shader
+    EvqFragCoord,
+    EvqFrontFacing,
+    EvqPointCoord,
 
-	// built-ins written by fragment shader
-	EvqFragColor,
-	EvqFragData,
+    // built-ins written by fragment shader
+    EvqFragColor,
+    EvqFragData,
 
-	// end of list
-	EvqLast,
+    // end of list
+    EvqLast,
 };
 
 //
@@ -100,31 +100,31 @@
 //
 __inline const char* getQualifierString(TQualifier q)
 {
-	switch(q)
-	{
-	case EvqTemporary:      return "Temporary";      break;
-	case EvqGlobal:         return "Global";         break;
-	case EvqConst:          return "const";          break;
-	case EvqConstReadOnly:  return "const";          break;
-	case EvqAttribute:      return "attribute";      break;
-	case EvqVaryingIn:      return "varying";        break;
-	case EvqVaryingOut:     return "varying";        break;
-	case EvqInvariantVaryingIn: return "invariant varying";	break;
-	case EvqInvariantVaryingOut:return "invariant varying";	break;
-	case EvqUniform:        return "uniform";        break;
-	case EvqIn:             return "in";             break;
-	case EvqOut:            return "out";            break;
-	case EvqInOut:          return "inout";          break;
-	case EvqInput:          return "input";          break;
-	case EvqOutput:         return "output";         break;
-	case EvqPosition:       return "Position";       break;
-	case EvqPointSize:      return "PointSize";      break;
-	case EvqFragCoord:      return "FragCoord";      break;
-	case EvqFrontFacing:    return "FrontFacing";    break;
-	case EvqFragColor:      return "FragColor";      break;
-	case EvqFragData:       return "FragData";      break;
-	default:                return "unknown qualifier";
-	}
+    switch(q)
+    {
+    case EvqTemporary:      return "Temporary";      break;
+    case EvqGlobal:         return "Global";         break;
+    case EvqConst:          return "const";          break;
+    case EvqConstReadOnly:  return "const";          break;
+    case EvqAttribute:      return "attribute";      break;
+    case EvqVaryingIn:      return "varying";        break;
+    case EvqVaryingOut:     return "varying";        break;
+    case EvqInvariantVaryingIn: return "invariant varying";	break;
+    case EvqInvariantVaryingOut:return "invariant varying";	break;
+    case EvqUniform:        return "uniform";        break;
+    case EvqIn:             return "in";             break;
+    case EvqOut:            return "out";            break;
+    case EvqInOut:          return "inout";          break;
+    case EvqInput:          return "input";          break;
+    case EvqOutput:         return "output";         break;
+    case EvqPosition:       return "Position";       break;
+    case EvqPointSize:      return "PointSize";      break;
+    case EvqFragCoord:      return "FragCoord";      break;
+    case EvqFrontFacing:    return "FrontFacing";    break;
+    case EvqFragColor:      return "FragColor";      break;
+    case EvqFragData:       return "FragData";      break;
+    default:                return "unknown qualifier";
+    }
 }
 
 #endif // _BASICTYPES_INCLUDED_
diff --git a/src/compiler/Initialize.cpp b/src/compiler/Initialize.cpp
index 2d0b556..306ac09 100644
--- a/src/compiler/Initialize.cpp
+++ b/src/compiler/Initialize.cpp
@@ -16,590 +16,590 @@
 
 void TBuiltIns::initialize()
 {
-	//
-	// Initialize all the built-in strings for parsing.
-	//
-	TString BuiltInFunctions;
-	TString BuiltInFunctionsVertex;
-	TString BuiltInFunctionsFragment;
-	TString StandardUniforms;
+    //
+    // Initialize all the built-in strings for parsing.
+    //
+    TString BuiltInFunctions;
+    TString BuiltInFunctionsVertex;
+    TString BuiltInFunctionsFragment;
+    TString StandardUniforms;
 
-	{
-		//============================================================================
-		//
-		// Prototypes for built-in functions seen by both vertex and fragment shaders.
-		//
-		//============================================================================
+    {
+        //============================================================================
+        //
+        // Prototypes for built-in functions seen by both vertex and fragment shaders.
+        //
+        //============================================================================
 
-		TString& s = BuiltInFunctions;
+        TString& s = BuiltInFunctions;
 
-		//
-		// Angle and Trigonometric Functions.
-		//
-		s.append(TString("float radians(float degrees);"));
-		s.append(TString("vec2  radians(vec2  degrees);"));
-		s.append(TString("vec3  radians(vec3  degrees);"));
-		s.append(TString("vec4  radians(vec4  degrees);"));
+        //
+        // Angle and Trigonometric Functions.
+        //
+        s.append(TString("float radians(float degrees);"));
+        s.append(TString("vec2  radians(vec2  degrees);"));
+        s.append(TString("vec3  radians(vec3  degrees);"));
+        s.append(TString("vec4  radians(vec4  degrees);"));
 
-		s.append(TString("float degrees(float radians);"));
-		s.append(TString("vec2  degrees(vec2  radians);"));
-		s.append(TString("vec3  degrees(vec3  radians);"));
-		s.append(TString("vec4  degrees(vec4  radians);"));
+        s.append(TString("float degrees(float radians);"));
+        s.append(TString("vec2  degrees(vec2  radians);"));
+        s.append(TString("vec3  degrees(vec3  radians);"));
+        s.append(TString("vec4  degrees(vec4  radians);"));
 
-		s.append(TString("float sin(float angle);"));
-		s.append(TString("vec2  sin(vec2  angle);"));
-		s.append(TString("vec3  sin(vec3  angle);"));
-		s.append(TString("vec4  sin(vec4  angle);"));
+        s.append(TString("float sin(float angle);"));
+        s.append(TString("vec2  sin(vec2  angle);"));
+        s.append(TString("vec3  sin(vec3  angle);"));
+        s.append(TString("vec4  sin(vec4  angle);"));
 
-		s.append(TString("float cos(float angle);"));
-		s.append(TString("vec2  cos(vec2  angle);"));
-		s.append(TString("vec3  cos(vec3  angle);"));
-		s.append(TString("vec4  cos(vec4  angle);"));
+        s.append(TString("float cos(float angle);"));
+        s.append(TString("vec2  cos(vec2  angle);"));
+        s.append(TString("vec3  cos(vec3  angle);"));
+        s.append(TString("vec4  cos(vec4  angle);"));
 
-		s.append(TString("float tan(float angle);"));
-		s.append(TString("vec2  tan(vec2  angle);"));
-		s.append(TString("vec3  tan(vec3  angle);"));
-		s.append(TString("vec4  tan(vec4  angle);"));
+        s.append(TString("float tan(float angle);"));
+        s.append(TString("vec2  tan(vec2  angle);"));
+        s.append(TString("vec3  tan(vec3  angle);"));
+        s.append(TString("vec4  tan(vec4  angle);"));
 
-		s.append(TString("float asin(float x);"));
-		s.append(TString("vec2  asin(vec2  x);"));
-		s.append(TString("vec3  asin(vec3  x);"));
-		s.append(TString("vec4  asin(vec4  x);"));
+        s.append(TString("float asin(float x);"));
+        s.append(TString("vec2  asin(vec2  x);"));
+        s.append(TString("vec3  asin(vec3  x);"));
+        s.append(TString("vec4  asin(vec4  x);"));
 
-		s.append(TString("float acos(float x);"));
-		s.append(TString("vec2  acos(vec2  x);"));
-		s.append(TString("vec3  acos(vec3  x);"));
-		s.append(TString("vec4  acos(vec4  x);"));
+        s.append(TString("float acos(float x);"));
+        s.append(TString("vec2  acos(vec2  x);"));
+        s.append(TString("vec3  acos(vec3  x);"));
+        s.append(TString("vec4  acos(vec4  x);"));
 
-		s.append(TString("float atan(float y, float x);"));
-		s.append(TString("vec2  atan(vec2  y, vec2  x);"));
-		s.append(TString("vec3  atan(vec3  y, vec3  x);"));
-		s.append(TString("vec4  atan(vec4  y, vec4  x);"));
+        s.append(TString("float atan(float y, float x);"));
+        s.append(TString("vec2  atan(vec2  y, vec2  x);"));
+        s.append(TString("vec3  atan(vec3  y, vec3  x);"));
+        s.append(TString("vec4  atan(vec4  y, vec4  x);"));
 
-		s.append(TString("float atan(float y_over_x);"));
-		s.append(TString("vec2  atan(vec2  y_over_x);"));
-		s.append(TString("vec3  atan(vec3  y_over_x);"));
-		s.append(TString("vec4  atan(vec4  y_over_x);"));
+        s.append(TString("float atan(float y_over_x);"));
+        s.append(TString("vec2  atan(vec2  y_over_x);"));
+        s.append(TString("vec3  atan(vec3  y_over_x);"));
+        s.append(TString("vec4  atan(vec4  y_over_x);"));
 
-		//
-		// Exponential Functions.
-		//
-		s.append(TString("float pow(float x, float y);"));
-		s.append(TString("vec2  pow(vec2  x, vec2  y);"));
-		s.append(TString("vec3  pow(vec3  x, vec3  y);"));
-		s.append(TString("vec4  pow(vec4  x, vec4  y);"));
+        //
+        // Exponential Functions.
+        //
+        s.append(TString("float pow(float x, float y);"));
+        s.append(TString("vec2  pow(vec2  x, vec2  y);"));
+        s.append(TString("vec3  pow(vec3  x, vec3  y);"));
+        s.append(TString("vec4  pow(vec4  x, vec4  y);"));
 
-		s.append(TString("float exp(float x);"));
-		s.append(TString("vec2  exp(vec2  x);"));
-		s.append(TString("vec3  exp(vec3  x);"));
-		s.append(TString("vec4  exp(vec4  x);"));
+        s.append(TString("float exp(float x);"));
+        s.append(TString("vec2  exp(vec2  x);"));
+        s.append(TString("vec3  exp(vec3  x);"));
+        s.append(TString("vec4  exp(vec4  x);"));
 
-		s.append(TString("float log(float x);"));
-		s.append(TString("vec2  log(vec2  x);"));
-		s.append(TString("vec3  log(vec3  x);"));
-		s.append(TString("vec4  log(vec4  x);"));
+        s.append(TString("float log(float x);"));
+        s.append(TString("vec2  log(vec2  x);"));
+        s.append(TString("vec3  log(vec3  x);"));
+        s.append(TString("vec4  log(vec4  x);"));
 
-		s.append(TString("float exp2(float x);"));
-		s.append(TString("vec2  exp2(vec2  x);"));
-		s.append(TString("vec3  exp2(vec3  x);"));
-		s.append(TString("vec4  exp2(vec4  x);"));
+        s.append(TString("float exp2(float x);"));
+        s.append(TString("vec2  exp2(vec2  x);"));
+        s.append(TString("vec3  exp2(vec3  x);"));
+        s.append(TString("vec4  exp2(vec4  x);"));
 
-		s.append(TString("float log2(float x);"));
-		s.append(TString("vec2  log2(vec2  x);"));
-		s.append(TString("vec3  log2(vec3  x);"));
-		s.append(TString("vec4  log2(vec4  x);"));
+        s.append(TString("float log2(float x);"));
+        s.append(TString("vec2  log2(vec2  x);"));
+        s.append(TString("vec3  log2(vec3  x);"));
+        s.append(TString("vec4  log2(vec4  x);"));
 
-		s.append(TString("float sqrt(float x);"));
-		s.append(TString("vec2  sqrt(vec2  x);"));
-		s.append(TString("vec3  sqrt(vec3  x);"));
-		s.append(TString("vec4  sqrt(vec4  x);"));
+        s.append(TString("float sqrt(float x);"));
+        s.append(TString("vec2  sqrt(vec2  x);"));
+        s.append(TString("vec3  sqrt(vec3  x);"));
+        s.append(TString("vec4  sqrt(vec4  x);"));
 
-		s.append(TString("float inversesqrt(float x);"));
-		s.append(TString("vec2  inversesqrt(vec2  x);"));
-		s.append(TString("vec3  inversesqrt(vec3  x);"));
-		s.append(TString("vec4  inversesqrt(vec4  x);"));
+        s.append(TString("float inversesqrt(float x);"));
+        s.append(TString("vec2  inversesqrt(vec2  x);"));
+        s.append(TString("vec3  inversesqrt(vec3  x);"));
+        s.append(TString("vec4  inversesqrt(vec4  x);"));
 
-		//
-		// Common Functions.
-		//
-		s.append(TString("float abs(float x);"));
-		s.append(TString("vec2  abs(vec2  x);"));
-		s.append(TString("vec3  abs(vec3  x);"));
-		s.append(TString("vec4  abs(vec4  x);"));
+        //
+        // Common Functions.
+        //
+        s.append(TString("float abs(float x);"));
+        s.append(TString("vec2  abs(vec2  x);"));
+        s.append(TString("vec3  abs(vec3  x);"));
+        s.append(TString("vec4  abs(vec4  x);"));
 
-		s.append(TString("float sign(float x);"));
-		s.append(TString("vec2  sign(vec2  x);"));
-		s.append(TString("vec3  sign(vec3  x);"));
-		s.append(TString("vec4  sign(vec4  x);"));
+        s.append(TString("float sign(float x);"));
+        s.append(TString("vec2  sign(vec2  x);"));
+        s.append(TString("vec3  sign(vec3  x);"));
+        s.append(TString("vec4  sign(vec4  x);"));
 
-		s.append(TString("float floor(float x);"));
-		s.append(TString("vec2  floor(vec2  x);"));
-		s.append(TString("vec3  floor(vec3  x);"));
-		s.append(TString("vec4  floor(vec4  x);"));
+        s.append(TString("float floor(float x);"));
+        s.append(TString("vec2  floor(vec2  x);"));
+        s.append(TString("vec3  floor(vec3  x);"));
+        s.append(TString("vec4  floor(vec4  x);"));
 
-		s.append(TString("float ceil(float x);"));
-		s.append(TString("vec2  ceil(vec2  x);"));
-		s.append(TString("vec3  ceil(vec3  x);"));
-		s.append(TString("vec4  ceil(vec4  x);"));
+        s.append(TString("float ceil(float x);"));
+        s.append(TString("vec2  ceil(vec2  x);"));
+        s.append(TString("vec3  ceil(vec3  x);"));
+        s.append(TString("vec4  ceil(vec4  x);"));
 
-		s.append(TString("float fract(float x);"));
-		s.append(TString("vec2  fract(vec2  x);"));
-		s.append(TString("vec3  fract(vec3  x);"));
-		s.append(TString("vec4  fract(vec4  x);"));
+        s.append(TString("float fract(float x);"));
+        s.append(TString("vec2  fract(vec2  x);"));
+        s.append(TString("vec3  fract(vec3  x);"));
+        s.append(TString("vec4  fract(vec4  x);"));
 
-		s.append(TString("float mod(float x, float y);"));
-		s.append(TString("vec2  mod(vec2  x, float y);"));
-		s.append(TString("vec3  mod(vec3  x, float y);"));
-		s.append(TString("vec4  mod(vec4  x, float y);"));
-		s.append(TString("vec2  mod(vec2  x, vec2  y);"));
-		s.append(TString("vec3  mod(vec3  x, vec3  y);"));
-		s.append(TString("vec4  mod(vec4  x, vec4  y);"));
+        s.append(TString("float mod(float x, float y);"));
+        s.append(TString("vec2  mod(vec2  x, float y);"));
+        s.append(TString("vec3  mod(vec3  x, float y);"));
+        s.append(TString("vec4  mod(vec4  x, float y);"));
+        s.append(TString("vec2  mod(vec2  x, vec2  y);"));
+        s.append(TString("vec3  mod(vec3  x, vec3  y);"));
+        s.append(TString("vec4  mod(vec4  x, vec4  y);"));
 
-		s.append(TString("float min(float x, float y);"));
-		s.append(TString("vec2  min(vec2  x, float y);"));
-		s.append(TString("vec3  min(vec3  x, float y);"));
-		s.append(TString("vec4  min(vec4  x, float y);"));
-		s.append(TString("vec2  min(vec2  x, vec2  y);"));
-		s.append(TString("vec3  min(vec3  x, vec3  y);"));
-		s.append(TString("vec4  min(vec4  x, vec4  y);"));
+        s.append(TString("float min(float x, float y);"));
+        s.append(TString("vec2  min(vec2  x, float y);"));
+        s.append(TString("vec3  min(vec3  x, float y);"));
+        s.append(TString("vec4  min(vec4  x, float y);"));
+        s.append(TString("vec2  min(vec2  x, vec2  y);"));
+        s.append(TString("vec3  min(vec3  x, vec3  y);"));
+        s.append(TString("vec4  min(vec4  x, vec4  y);"));
 
-		s.append(TString("float max(float x, float y);"));
-		s.append(TString("vec2  max(vec2  x, float y);"));
-		s.append(TString("vec3  max(vec3  x, float y);"));
-		s.append(TString("vec4  max(vec4  x, float y);"));
-		s.append(TString("vec2  max(vec2  x, vec2  y);"));
-		s.append(TString("vec3  max(vec3  x, vec3  y);"));
-		s.append(TString("vec4  max(vec4  x, vec4  y);"));
+        s.append(TString("float max(float x, float y);"));
+        s.append(TString("vec2  max(vec2  x, float y);"));
+        s.append(TString("vec3  max(vec3  x, float y);"));
+        s.append(TString("vec4  max(vec4  x, float y);"));
+        s.append(TString("vec2  max(vec2  x, vec2  y);"));
+        s.append(TString("vec3  max(vec3  x, vec3  y);"));
+        s.append(TString("vec4  max(vec4  x, vec4  y);"));
 
-		s.append(TString("float clamp(float x, float minVal, float maxVal);"));
-		s.append(TString("vec2  clamp(vec2  x, float minVal, float maxVal);"));
-		s.append(TString("vec3  clamp(vec3  x, float minVal, float maxVal);"));
-		s.append(TString("vec4  clamp(vec4  x, float minVal, float maxVal);"));
-		s.append(TString("vec2  clamp(vec2  x, vec2  minVal, vec2  maxVal);"));
-		s.append(TString("vec3  clamp(vec3  x, vec3  minVal, vec3  maxVal);"));
-		s.append(TString("vec4  clamp(vec4  x, vec4  minVal, vec4  maxVal);"));
+        s.append(TString("float clamp(float x, float minVal, float maxVal);"));
+        s.append(TString("vec2  clamp(vec2  x, float minVal, float maxVal);"));
+        s.append(TString("vec3  clamp(vec3  x, float minVal, float maxVal);"));
+        s.append(TString("vec4  clamp(vec4  x, float minVal, float maxVal);"));
+        s.append(TString("vec2  clamp(vec2  x, vec2  minVal, vec2  maxVal);"));
+        s.append(TString("vec3  clamp(vec3  x, vec3  minVal, vec3  maxVal);"));
+        s.append(TString("vec4  clamp(vec4  x, vec4  minVal, vec4  maxVal);"));
 
-		s.append(TString("float mix(float x, float y, float a);"));
-		s.append(TString("vec2  mix(vec2  x, vec2  y, float a);"));
-		s.append(TString("vec3  mix(vec3  x, vec3  y, float a);"));
-		s.append(TString("vec4  mix(vec4  x, vec4  y, float a);"));
-		s.append(TString("vec2  mix(vec2  x, vec2  y, vec2  a);"));
-		s.append(TString("vec3  mix(vec3  x, vec3  y, vec3  a);"));
-		s.append(TString("vec4  mix(vec4  x, vec4  y, vec4  a);"));
+        s.append(TString("float mix(float x, float y, float a);"));
+        s.append(TString("vec2  mix(vec2  x, vec2  y, float a);"));
+        s.append(TString("vec3  mix(vec3  x, vec3  y, float a);"));
+        s.append(TString("vec4  mix(vec4  x, vec4  y, float a);"));
+        s.append(TString("vec2  mix(vec2  x, vec2  y, vec2  a);"));
+        s.append(TString("vec3  mix(vec3  x, vec3  y, vec3  a);"));
+        s.append(TString("vec4  mix(vec4  x, vec4  y, vec4  a);"));
 
-		s.append(TString("float step(float edge, float x);"));
-		s.append(TString("vec2  step(vec2  edge, vec2  x);"));
-		s.append(TString("vec3  step(vec3  edge, vec3  x);"));
-		s.append(TString("vec4  step(vec4  edge, vec4  x);"));
-		s.append(TString("vec2  step(float edge, vec2  x);"));
-		s.append(TString("vec3  step(float edge, vec3  x);"));
-		s.append(TString("vec4  step(float edge, vec4  x);"));
+        s.append(TString("float step(float edge, float x);"));
+        s.append(TString("vec2  step(vec2  edge, vec2  x);"));
+        s.append(TString("vec3  step(vec3  edge, vec3  x);"));
+        s.append(TString("vec4  step(vec4  edge, vec4  x);"));
+        s.append(TString("vec2  step(float edge, vec2  x);"));
+        s.append(TString("vec3  step(float edge, vec3  x);"));
+        s.append(TString("vec4  step(float edge, vec4  x);"));
 
-		s.append(TString("float smoothstep(float edge0, float edge1, float x);"));
-		s.append(TString("vec2  smoothstep(vec2  edge0, vec2  edge1, vec2  x);"));
-		s.append(TString("vec3  smoothstep(vec3  edge0, vec3  edge1, vec3  x);"));
-		s.append(TString("vec4  smoothstep(vec4  edge0, vec4  edge1, vec4  x);"));
-		s.append(TString("vec2  smoothstep(float edge0, float edge1, vec2  x);"));
-		s.append(TString("vec3  smoothstep(float edge0, float edge1, vec3  x);"));
-		s.append(TString("vec4  smoothstep(float edge0, float edge1, vec4  x);"));
+        s.append(TString("float smoothstep(float edge0, float edge1, float x);"));
+        s.append(TString("vec2  smoothstep(vec2  edge0, vec2  edge1, vec2  x);"));
+        s.append(TString("vec3  smoothstep(vec3  edge0, vec3  edge1, vec3  x);"));
+        s.append(TString("vec4  smoothstep(vec4  edge0, vec4  edge1, vec4  x);"));
+        s.append(TString("vec2  smoothstep(float edge0, float edge1, vec2  x);"));
+        s.append(TString("vec3  smoothstep(float edge0, float edge1, vec3  x);"));
+        s.append(TString("vec4  smoothstep(float edge0, float edge1, vec4  x);"));
 
-		//
-		// Geometric Functions.
-		//
-		s.append(TString("float length(float x);"));
-		s.append(TString("float length(vec2  x);"));
-		s.append(TString("float length(vec3  x);"));
-		s.append(TString("float length(vec4  x);"));
+        //
+        // Geometric Functions.
+        //
+        s.append(TString("float length(float x);"));
+        s.append(TString("float length(vec2  x);"));
+        s.append(TString("float length(vec3  x);"));
+        s.append(TString("float length(vec4  x);"));
 
-		s.append(TString("float distance(float p0, float p1);"));
-		s.append(TString("float distance(vec2  p0, vec2  p1);"));
-		s.append(TString("float distance(vec3  p0, vec3  p1);"));
-		s.append(TString("float distance(vec4  p0, vec4  p1);"));
+        s.append(TString("float distance(float p0, float p1);"));
+        s.append(TString("float distance(vec2  p0, vec2  p1);"));
+        s.append(TString("float distance(vec3  p0, vec3  p1);"));
+        s.append(TString("float distance(vec4  p0, vec4  p1);"));
 
-		s.append(TString("float dot(float x, float y);"));
-		s.append(TString("float dot(vec2  x, vec2  y);"));
-		s.append(TString("float dot(vec3  x, vec3  y);"));
-		s.append(TString("float dot(vec4  x, vec4  y);"));
+        s.append(TString("float dot(float x, float y);"));
+        s.append(TString("float dot(vec2  x, vec2  y);"));
+        s.append(TString("float dot(vec3  x, vec3  y);"));
+        s.append(TString("float dot(vec4  x, vec4  y);"));
 
-		s.append(TString("vec3 cross(vec3 x, vec3 y);"));
-		s.append(TString("float normalize(float x);"));
-		s.append(TString("vec2  normalize(vec2  x);"));
-		s.append(TString("vec3  normalize(vec3  x);"));
-		s.append(TString("vec4  normalize(vec4  x);"));
+        s.append(TString("vec3 cross(vec3 x, vec3 y);"));
+        s.append(TString("float normalize(float x);"));
+        s.append(TString("vec2  normalize(vec2  x);"));
+        s.append(TString("vec3  normalize(vec3  x);"));
+        s.append(TString("vec4  normalize(vec4  x);"));
 
-		s.append(TString("float faceforward(float N, float I, float Nref);"));
-		s.append(TString("vec2  faceforward(vec2  N, vec2  I, vec2  Nref);"));
-		s.append(TString("vec3  faceforward(vec3  N, vec3  I, vec3  Nref);"));
-		s.append(TString("vec4  faceforward(vec4  N, vec4  I, vec4  Nref);"));
+        s.append(TString("float faceforward(float N, float I, float Nref);"));
+        s.append(TString("vec2  faceforward(vec2  N, vec2  I, vec2  Nref);"));
+        s.append(TString("vec3  faceforward(vec3  N, vec3  I, vec3  Nref);"));
+        s.append(TString("vec4  faceforward(vec4  N, vec4  I, vec4  Nref);"));
 
-		s.append(TString("float reflect(float I, float N);"));
-		s.append(TString("vec2  reflect(vec2  I, vec2  N);"));
-		s.append(TString("vec3  reflect(vec3  I, vec3  N);"));
-		s.append(TString("vec4  reflect(vec4  I, vec4  N);"));
+        s.append(TString("float reflect(float I, float N);"));
+        s.append(TString("vec2  reflect(vec2  I, vec2  N);"));
+        s.append(TString("vec3  reflect(vec3  I, vec3  N);"));
+        s.append(TString("vec4  reflect(vec4  I, vec4  N);"));
 
-		s.append(TString("float refract(float I, float N, float eta);"));
-		s.append(TString("vec2  refract(vec2  I, vec2  N, float eta);"));
-		s.append(TString("vec3  refract(vec3  I, vec3  N, float eta);"));
-		s.append(TString("vec4  refract(vec4  I, vec4  N, float eta);"));
+        s.append(TString("float refract(float I, float N, float eta);"));
+        s.append(TString("vec2  refract(vec2  I, vec2  N, float eta);"));
+        s.append(TString("vec3  refract(vec3  I, vec3  N, float eta);"));
+        s.append(TString("vec4  refract(vec4  I, vec4  N, float eta);"));
 
-		//
-		// Matrix Functions.
-		//
-		s.append(TString("mat2 matrixCompMult(mat2 x, mat2 y);"));
-		s.append(TString("mat3 matrixCompMult(mat3 x, mat3 y);"));
-		s.append(TString("mat4 matrixCompMult(mat4 x, mat4 y);"));
+        //
+        // Matrix Functions.
+        //
+        s.append(TString("mat2 matrixCompMult(mat2 x, mat2 y);"));
+        s.append(TString("mat3 matrixCompMult(mat3 x, mat3 y);"));
+        s.append(TString("mat4 matrixCompMult(mat4 x, mat4 y);"));
 
-		//
-		// Vector relational functions.
-		//
-		s.append(TString("bvec2 lessThan(vec2 x, vec2 y);"));
-		s.append(TString("bvec3 lessThan(vec3 x, vec3 y);"));
-		s.append(TString("bvec4 lessThan(vec4 x, vec4 y);"));
+        //
+        // Vector relational functions.
+        //
+        s.append(TString("bvec2 lessThan(vec2 x, vec2 y);"));
+        s.append(TString("bvec3 lessThan(vec3 x, vec3 y);"));
+        s.append(TString("bvec4 lessThan(vec4 x, vec4 y);"));
 
-		s.append(TString("bvec2 lessThan(ivec2 x, ivec2 y);"));
-		s.append(TString("bvec3 lessThan(ivec3 x, ivec3 y);"));
-		s.append(TString("bvec4 lessThan(ivec4 x, ivec4 y);"));
+        s.append(TString("bvec2 lessThan(ivec2 x, ivec2 y);"));
+        s.append(TString("bvec3 lessThan(ivec3 x, ivec3 y);"));
+        s.append(TString("bvec4 lessThan(ivec4 x, ivec4 y);"));
 
-		s.append(TString("bvec2 lessThanEqual(vec2 x, vec2 y);"));
-		s.append(TString("bvec3 lessThanEqual(vec3 x, vec3 y);"));
-		s.append(TString("bvec4 lessThanEqual(vec4 x, vec4 y);"));
+        s.append(TString("bvec2 lessThanEqual(vec2 x, vec2 y);"));
+        s.append(TString("bvec3 lessThanEqual(vec3 x, vec3 y);"));
+        s.append(TString("bvec4 lessThanEqual(vec4 x, vec4 y);"));
 
-		s.append(TString("bvec2 lessThanEqual(ivec2 x, ivec2 y);"));
-		s.append(TString("bvec3 lessThanEqual(ivec3 x, ivec3 y);"));
-		s.append(TString("bvec4 lessThanEqual(ivec4 x, ivec4 y);"));
+        s.append(TString("bvec2 lessThanEqual(ivec2 x, ivec2 y);"));
+        s.append(TString("bvec3 lessThanEqual(ivec3 x, ivec3 y);"));
+        s.append(TString("bvec4 lessThanEqual(ivec4 x, ivec4 y);"));
 
-		s.append(TString("bvec2 greaterThan(vec2 x, vec2 y);"));
-		s.append(TString("bvec3 greaterThan(vec3 x, vec3 y);"));
-		s.append(TString("bvec4 greaterThan(vec4 x, vec4 y);"));
+        s.append(TString("bvec2 greaterThan(vec2 x, vec2 y);"));
+        s.append(TString("bvec3 greaterThan(vec3 x, vec3 y);"));
+        s.append(TString("bvec4 greaterThan(vec4 x, vec4 y);"));
 
-		s.append(TString("bvec2 greaterThan(ivec2 x, ivec2 y);"));
-		s.append(TString("bvec3 greaterThan(ivec3 x, ivec3 y);"));
-		s.append(TString("bvec4 greaterThan(ivec4 x, ivec4 y);"));
+        s.append(TString("bvec2 greaterThan(ivec2 x, ivec2 y);"));
+        s.append(TString("bvec3 greaterThan(ivec3 x, ivec3 y);"));
+        s.append(TString("bvec4 greaterThan(ivec4 x, ivec4 y);"));
 
-		s.append(TString("bvec2 greaterThanEqual(vec2 x, vec2 y);"));
-		s.append(TString("bvec3 greaterThanEqual(vec3 x, vec3 y);"));
-		s.append(TString("bvec4 greaterThanEqual(vec4 x, vec4 y);"));
+        s.append(TString("bvec2 greaterThanEqual(vec2 x, vec2 y);"));
+        s.append(TString("bvec3 greaterThanEqual(vec3 x, vec3 y);"));
+        s.append(TString("bvec4 greaterThanEqual(vec4 x, vec4 y);"));
 
-		s.append(TString("bvec2 greaterThanEqual(ivec2 x, ivec2 y);"));
-		s.append(TString("bvec3 greaterThanEqual(ivec3 x, ivec3 y);"));
-		s.append(TString("bvec4 greaterThanEqual(ivec4 x, ivec4 y);"));
+        s.append(TString("bvec2 greaterThanEqual(ivec2 x, ivec2 y);"));
+        s.append(TString("bvec3 greaterThanEqual(ivec3 x, ivec3 y);"));
+        s.append(TString("bvec4 greaterThanEqual(ivec4 x, ivec4 y);"));
 
-		s.append(TString("bvec2 equal(vec2 x, vec2 y);"));
-		s.append(TString("bvec3 equal(vec3 x, vec3 y);"));
-		s.append(TString("bvec4 equal(vec4 x, vec4 y);"));
+        s.append(TString("bvec2 equal(vec2 x, vec2 y);"));
+        s.append(TString("bvec3 equal(vec3 x, vec3 y);"));
+        s.append(TString("bvec4 equal(vec4 x, vec4 y);"));
 
-		s.append(TString("bvec2 equal(ivec2 x, ivec2 y);"));
-		s.append(TString("bvec3 equal(ivec3 x, ivec3 y);"));
-		s.append(TString("bvec4 equal(ivec4 x, ivec4 y);"));
+        s.append(TString("bvec2 equal(ivec2 x, ivec2 y);"));
+        s.append(TString("bvec3 equal(ivec3 x, ivec3 y);"));
+        s.append(TString("bvec4 equal(ivec4 x, ivec4 y);"));
 
-		s.append(TString("bvec2 equal(bvec2 x, bvec2 y);"));
-		s.append(TString("bvec3 equal(bvec3 x, bvec3 y);"));
-		s.append(TString("bvec4 equal(bvec4 x, bvec4 y);"));
+        s.append(TString("bvec2 equal(bvec2 x, bvec2 y);"));
+        s.append(TString("bvec3 equal(bvec3 x, bvec3 y);"));
+        s.append(TString("bvec4 equal(bvec4 x, bvec4 y);"));
 
-		s.append(TString("bvec2 notEqual(vec2 x, vec2 y);"));
-		s.append(TString("bvec3 notEqual(vec3 x, vec3 y);"));
-		s.append(TString("bvec4 notEqual(vec4 x, vec4 y);"));
+        s.append(TString("bvec2 notEqual(vec2 x, vec2 y);"));
+        s.append(TString("bvec3 notEqual(vec3 x, vec3 y);"));
+        s.append(TString("bvec4 notEqual(vec4 x, vec4 y);"));
 
-		s.append(TString("bvec2 notEqual(ivec2 x, ivec2 y);"));
-		s.append(TString("bvec3 notEqual(ivec3 x, ivec3 y);"));
-		s.append(TString("bvec4 notEqual(ivec4 x, ivec4 y);"));
+        s.append(TString("bvec2 notEqual(ivec2 x, ivec2 y);"));
+        s.append(TString("bvec3 notEqual(ivec3 x, ivec3 y);"));
+        s.append(TString("bvec4 notEqual(ivec4 x, ivec4 y);"));
 
-		s.append(TString("bvec2 notEqual(bvec2 x, bvec2 y);"));
-		s.append(TString("bvec3 notEqual(bvec3 x, bvec3 y);"));
-		s.append(TString("bvec4 notEqual(bvec4 x, bvec4 y);"));
+        s.append(TString("bvec2 notEqual(bvec2 x, bvec2 y);"));
+        s.append(TString("bvec3 notEqual(bvec3 x, bvec3 y);"));
+        s.append(TString("bvec4 notEqual(bvec4 x, bvec4 y);"));
 
-		s.append(TString("bool any(bvec2 x);"));
-		s.append(TString("bool any(bvec3 x);"));
-		s.append(TString("bool any(bvec4 x);"));
+        s.append(TString("bool any(bvec2 x);"));
+        s.append(TString("bool any(bvec3 x);"));
+        s.append(TString("bool any(bvec4 x);"));
 
-		s.append(TString("bool all(bvec2 x);"));
-		s.append(TString("bool all(bvec3 x);"));
-		s.append(TString("bool all(bvec4 x);"));
+        s.append(TString("bool all(bvec2 x);"));
+        s.append(TString("bool all(bvec3 x);"));
+        s.append(TString("bool all(bvec4 x);"));
 
-		s.append(TString("bvec2 not(bvec2 x);"));
-		s.append(TString("bvec3 not(bvec3 x);"));
-		s.append(TString("bvec4 not(bvec4 x);"));
+        s.append(TString("bvec2 not(bvec2 x);"));
+        s.append(TString("bvec3 not(bvec3 x);"));
+        s.append(TString("bvec4 not(bvec4 x);"));
 
-		//
-		// Texture Functions.
-		//
-		s.append(TString("vec4 texture2D(sampler2D sampler, vec2 coord);"));
-		s.append(TString("vec4 texture2DProj(sampler2D sampler, vec3 coord);"));
-		s.append(TString("vec4 texture2DProj(sampler2D sampler, vec4 coord);"));
+        //
+        // Texture Functions.
+        //
+        s.append(TString("vec4 texture2D(sampler2D sampler, vec2 coord);"));
+        s.append(TString("vec4 texture2DProj(sampler2D sampler, vec3 coord);"));
+        s.append(TString("vec4 texture2DProj(sampler2D sampler, vec4 coord);"));
 
-		s.append(TString("vec4 textureCube(samplerCube sampler, vec3 coord);"));
+        s.append(TString("vec4 textureCube(samplerCube sampler, vec3 coord);"));
 
-		//
-		// Noise functions.
-		//
-	//	s.append(TString("float noise1(float x);"));
-	//	s.append(TString("float noise1(vec2  x);"));
-	//	s.append(TString("float noise1(vec3  x);"));
-	//	s.append(TString("float noise1(vec4  x);"));
+        //
+        // Noise functions.
+        //
+    //	s.append(TString("float noise1(float x);"));
+    //	s.append(TString("float noise1(vec2  x);"));
+    //	s.append(TString("float noise1(vec3  x);"));
+    //	s.append(TString("float noise1(vec4  x);"));
 
-	//	s.append(TString("vec2 noise2(float x);"));
-	//	s.append(TString("vec2 noise2(vec2  x);"));
-	//	s.append(TString("vec2 noise2(vec3  x);"));
-	//	s.append(TString("vec2 noise2(vec4  x);"));
+    //	s.append(TString("vec2 noise2(float x);"));
+    //	s.append(TString("vec2 noise2(vec2  x);"));
+    //	s.append(TString("vec2 noise2(vec3  x);"));
+    //	s.append(TString("vec2 noise2(vec4  x);"));
 
-	//	s.append(TString("vec3 noise3(float x);"));
-	//	s.append(TString("vec3 noise3(vec2  x);"));
-	//	s.append(TString("vec3 noise3(vec3  x);"));
-	//	s.append(TString("vec3 noise3(vec4  x);"));
+    //	s.append(TString("vec3 noise3(float x);"));
+    //	s.append(TString("vec3 noise3(vec2  x);"));
+    //	s.append(TString("vec3 noise3(vec3  x);"));
+    //	s.append(TString("vec3 noise3(vec4  x);"));
 
-	//	s.append(TString("vec4 noise4(float x);"));
-	//	s.append(TString("vec4 noise4(vec2  x);"));
-	//	s.append(TString("vec4 noise4(vec3  x);"));
-	//	s.append(TString("vec4 noise4(vec4  x);"));
+    //	s.append(TString("vec4 noise4(float x);"));
+    //	s.append(TString("vec4 noise4(vec2  x);"));
+    //	s.append(TString("vec4 noise4(vec3  x);"));
+    //	s.append(TString("vec4 noise4(vec4  x);"));
 
-		s.append(TString("\n"));
-	}
-	{
-		//============================================================================
-		//
-		// Prototypes for built-in functions seen by vertex shaders only.
-		//
-		//============================================================================
+        s.append(TString("\n"));
+    }
+    {
+        //============================================================================
+        //
+        // Prototypes for built-in functions seen by vertex shaders only.
+        //
+        //============================================================================
 
-		TString& s = BuiltInFunctionsVertex;
+        TString& s = BuiltInFunctionsVertex;
 
-		//
-		// Geometric Functions.
-		//
-		s.append(TString("vec4 ftransform();"));
+        //
+        // Geometric Functions.
+        //
+        s.append(TString("vec4 ftransform();"));
 
-		//
-		// Texture Functions.
-		//
-		s.append(TString("vec4 texture2DLod(sampler2D sampler, vec2 coord, float lod);"));
-		s.append(TString("vec4 texture2DProjLod(sampler2D sampler, vec3 coord, float lod);"));
-		s.append(TString("vec4 texture2DProjLod(sampler2D sampler, vec4 coord, float lod);"));
+        //
+        // Texture Functions.
+        //
+        s.append(TString("vec4 texture2DLod(sampler2D sampler, vec2 coord, float lod);"));
+        s.append(TString("vec4 texture2DProjLod(sampler2D sampler, vec3 coord, float lod);"));
+        s.append(TString("vec4 texture2DProjLod(sampler2D sampler, vec4 coord, float lod);"));
 
-		s.append(TString("vec4 textureCubeLod(samplerCube sampler, vec3 coord, float lod);"));
+        s.append(TString("vec4 textureCubeLod(samplerCube sampler, vec3 coord, float lod);"));
 
-		s.append(TString("\n"));
-	}
-	{
-		//============================================================================
-		//
-		// Prototypes for built-in functions seen by fragment shaders only.
-		//
-		//============================================================================
+        s.append(TString("\n"));
+    }
+    {
+        //============================================================================
+        //
+        // Prototypes for built-in functions seen by fragment shaders only.
+        //
+        //============================================================================
 
-		TString& s = BuiltInFunctionsFragment;
+        TString& s = BuiltInFunctionsFragment;
 
-		//
-		// Texture Functions.
-		//
-		s.append(TString("vec4 texture2D(sampler2D sampler, vec2 coord, float bias);"));
-		s.append(TString("vec4 texture2DProj(sampler2D sampler, vec3 coord, float bias);"));
-		s.append(TString("vec4 texture2DProj(sampler2D sampler, vec4 coord, float bias);"));
+        //
+        // Texture Functions.
+        //
+        s.append(TString("vec4 texture2D(sampler2D sampler, vec2 coord, float bias);"));
+        s.append(TString("vec4 texture2DProj(sampler2D sampler, vec3 coord, float bias);"));
+        s.append(TString("vec4 texture2DProj(sampler2D sampler, vec4 coord, float bias);"));
 
-		s.append(TString("vec4 textureCube(samplerCube sampler, vec3 coord, float bias);"));
+        s.append(TString("vec4 textureCube(samplerCube sampler, vec3 coord, float bias);"));
 
-	//	s.append(TString("float dFdx(float p);"));
-	//	s.append(TString("vec2  dFdx(vec2  p);"));
-	//	s.append(TString("vec3  dFdx(vec3  p);"));
-	//	s.append(TString("vec4  dFdx(vec4  p);"));
+    //	s.append(TString("float dFdx(float p);"));
+    //	s.append(TString("vec2  dFdx(vec2  p);"));
+    //	s.append(TString("vec3  dFdx(vec3  p);"));
+    //	s.append(TString("vec4  dFdx(vec4  p);"));
 
-	//	s.append(TString("float dFdy(float p);"));
-	//	s.append(TString("vec2  dFdy(vec2  p);"));
-	//	s.append(TString("vec3  dFdy(vec3  p);"));
-	//	s.append(TString("vec4  dFdy(vec4  p);"));
+    //	s.append(TString("float dFdy(float p);"));
+    //	s.append(TString("vec2  dFdy(vec2  p);"));
+    //	s.append(TString("vec3  dFdy(vec3  p);"));
+    //	s.append(TString("vec4  dFdy(vec4  p);"));
 
-		s.append(TString("float fwidth(float p);"));
-		s.append(TString("vec2  fwidth(vec2  p);"));
-		s.append(TString("vec3  fwidth(vec3  p);"));
-		s.append(TString("vec4  fwidth(vec4  p);"));
+        s.append(TString("float fwidth(float p);"));
+        s.append(TString("vec2  fwidth(vec2  p);"));
+        s.append(TString("vec3  fwidth(vec3  p);"));
+        s.append(TString("vec4  fwidth(vec4  p);"));
 
-		s.append(TString("\n"));
-	}
-	{
-		//============================================================================
-		//
-		// Standard Uniforms
-		//
-		//============================================================================
+        s.append(TString("\n"));
+    }
+    {
+        //============================================================================
+        //
+        // Standard Uniforms
+        //
+        //============================================================================
 
-		TString& s = StandardUniforms;
+        TString& s = StandardUniforms;
 
-		//
-		// Depth range in window coordinates
-		//
-		s.append(TString("struct gl_DepthRangeParameters {"));
-		s.append(TString("    float near;"));        // n       // FIXME: highp
-		s.append(TString("    float far;"));         // f       // FIXME: highp
-		s.append(TString("    float diff;"));        // f - n   // FIXME: highp
-		s.append(TString("};"));
-		s.append(TString("uniform gl_DepthRangeParameters gl_DepthRange;"));
+        //
+        // Depth range in window coordinates
+        //
+        s.append(TString("struct gl_DepthRangeParameters {"));
+        s.append(TString("    float near;"));        // n       // FIXME: highp
+        s.append(TString("    float far;"));         // f       // FIXME: highp
+        s.append(TString("    float diff;"));        // f - n   // FIXME: highp
+        s.append(TString("};"));
+        s.append(TString("uniform gl_DepthRangeParameters gl_DepthRange;"));
 
-		s.append(TString("\n"));
-	}
+        s.append(TString("\n"));
+    }
 
-	builtInStrings[EShLangFragment].push_back(BuiltInFunctions.c_str());
-	builtInStrings[EShLangFragment].push_back(BuiltInFunctionsFragment);
-	builtInStrings[EShLangFragment].push_back(StandardUniforms);
+    builtInStrings[EShLangFragment].push_back(BuiltInFunctions.c_str());
+    builtInStrings[EShLangFragment].push_back(BuiltInFunctionsFragment);
+    builtInStrings[EShLangFragment].push_back(StandardUniforms);
 
-	builtInStrings[EShLangVertex].push_back(BuiltInFunctions);
-	builtInStrings[EShLangVertex].push_back(BuiltInFunctionsVertex);
-	builtInStrings[EShLangVertex].push_back(StandardUniforms);
+    builtInStrings[EShLangVertex].push_back(BuiltInFunctions);
+    builtInStrings[EShLangVertex].push_back(BuiltInFunctionsVertex);
+    builtInStrings[EShLangVertex].push_back(StandardUniforms);
 }
 
 void TBuiltIns::initialize(const TBuiltInResource &resources)
 {
-	TString builtIns;
+    TString builtIns;
 
-	// Implementation dependent constants
-	char builtInConstant[80];
+    // Implementation dependent constants
+    char builtInConstant[80];
 
-	sprintf(builtInConstant, "const int  gl_MaxVertexAttribs = %d;", resources.maxVertexAttribs);
-	builtIns.append(TString(builtInConstant));
+    sprintf(builtInConstant, "const int  gl_MaxVertexAttribs = %d;", resources.maxVertexAttribs);
+    builtIns.append(TString(builtInConstant));
 
-	sprintf(builtInConstant, "const int  gl_MaxVertexUniformVectors = %d;", resources.maxVertexUniformVectors);
-	builtIns.append(TString(builtInConstant));       
+    sprintf(builtInConstant, "const int  gl_MaxVertexUniformVectors = %d;", resources.maxVertexUniformVectors);
+    builtIns.append(TString(builtInConstant));       
 
-	sprintf(builtInConstant, "const int  gl_MaxVaryingVectors = %d;", resources.maxVaryingVectors);
-	builtIns.append(TString(builtInConstant));        
+    sprintf(builtInConstant, "const int  gl_MaxVaryingVectors = %d;", resources.maxVaryingVectors);
+    builtIns.append(TString(builtInConstant));        
 
-	sprintf(builtInConstant, "const int  gl_MaxVertexTextureImageUnits = %d;", resources.maxVertexTextureImageUnits);
-	builtIns.append(TString(builtInConstant));        
+    sprintf(builtInConstant, "const int  gl_MaxVertexTextureImageUnits = %d;", resources.maxVertexTextureImageUnits);
+    builtIns.append(TString(builtInConstant));        
 
-	sprintf(builtInConstant, "const int  gl_MaxCombinedTextureImageUnits = %d;", resources.maxCombinedTextureImageUnits);
-	builtIns.append(TString(builtInConstant));        
+    sprintf(builtInConstant, "const int  gl_MaxCombinedTextureImageUnits = %d;", resources.maxCombinedTextureImageUnits);
+    builtIns.append(TString(builtInConstant));        
 
-	sprintf(builtInConstant, "const int  gl_MaxTextureImageUnits = %d;", resources.maxTextureImageUnits);
-	builtIns.append(TString(builtInConstant));
+    sprintf(builtInConstant, "const int  gl_MaxTextureImageUnits = %d;", resources.maxTextureImageUnits);
+    builtIns.append(TString(builtInConstant));
 
-	sprintf(builtInConstant, "const int  gl_MaxFragmentUniformVectors = %d;", resources.maxFragmentUniformVectors);
-	builtIns.append(TString(builtInConstant));
+    sprintf(builtInConstant, "const int  gl_MaxFragmentUniformVectors = %d;", resources.maxFragmentUniformVectors);
+    builtIns.append(TString(builtInConstant));
 
-	sprintf(builtInConstant, "const int  gl_MaxDrawBuffers = %d;", resources.maxDrawBuffers);
-	builtIns.append(TString(builtInConstant));
+    sprintf(builtInConstant, "const int  gl_MaxDrawBuffers = %d;", resources.maxDrawBuffers);
+    builtIns.append(TString(builtInConstant));
 
-	builtInStrings[EShLangFragment].push_back(builtIns);
-	builtInStrings[EShLangVertex].push_back(builtIns);
+    builtInStrings[EShLangFragment].push_back(builtIns);
+    builtInStrings[EShLangVertex].push_back(builtIns);
 }
 
 void IdentifyBuiltIns(EShLanguage language, TSymbolTable& symbolTable)
 {
-	//
-	// First, insert some special built-in variables that are not in 
-	// the built-in header files.
-	//
-	switch(language) {
+    //
+    // First, insert some special built-in variables that are not in 
+    // the built-in header files.
+    //
+    switch(language) {
 
-	case EShLangFragment: {
-			symbolTable.insert(*new TVariable(NewPoolTString("gl_FragCoord"),                   TType(EbtFloat, EvqFragCoord,   4)));   // FIXME: mediump
-			symbolTable.insert(*new TVariable(NewPoolTString("gl_FrontFacing"),                 TType(EbtBool,  EvqFrontFacing, 1)));
-			symbolTable.insert(*new TVariable(NewPoolTString("gl_FragColor"),                   TType(EbtFloat, EvqFragColor,   4)));   // FIXME: mediump
-			symbolTable.insert(*new TVariable(NewPoolTString("gl_FragData[gl_MaxDrawBuffers]"), TType(EbtFloat, EvqFragData,    4)));   // FIXME: mediump
-			symbolTable.insert(*new TVariable(NewPoolTString("gl_PointCoord"),                  TType(EbtFloat, EvqPointCoord,  2)));   // FIXME: mediump
+    case EShLangFragment: {
+            symbolTable.insert(*new TVariable(NewPoolTString("gl_FragCoord"),                   TType(EbtFloat, EvqFragCoord,   4)));   // FIXME: mediump
+            symbolTable.insert(*new TVariable(NewPoolTString("gl_FrontFacing"),                 TType(EbtBool,  EvqFrontFacing, 1)));
+            symbolTable.insert(*new TVariable(NewPoolTString("gl_FragColor"),                   TType(EbtFloat, EvqFragColor,   4)));   // FIXME: mediump
+            symbolTable.insert(*new TVariable(NewPoolTString("gl_FragData[gl_MaxDrawBuffers]"), TType(EbtFloat, EvqFragData,    4)));   // FIXME: mediump
+            symbolTable.insert(*new TVariable(NewPoolTString("gl_PointCoord"),                  TType(EbtFloat, EvqPointCoord,  2)));   // FIXME: mediump
 
-		}
-		break;
+        }
+        break;
 
-	case EShLangVertex:
-		symbolTable.insert(*new TVariable(NewPoolTString("gl_Position"),    TType(EbtFloat, EvqPosition,    4)));   // FIXME: highp
-		symbolTable.insert(*new TVariable(NewPoolTString("gl_PointSize"),   TType(EbtFloat, EvqPointSize,   1)));   // FIXME: mediump
-		break;
-	default: break;
-	}
+    case EShLangVertex:
+        symbolTable.insert(*new TVariable(NewPoolTString("gl_Position"),    TType(EbtFloat, EvqPosition,    4)));   // FIXME: highp
+        symbolTable.insert(*new TVariable(NewPoolTString("gl_PointSize"),   TType(EbtFloat, EvqPointSize,   1)));   // FIXME: mediump
+        break;
+    default: break;
+    }
 
-	//
-	// Next, identify which built-ins from the already loaded headers have
-	// a mapping to an operator.  Those that are not identified as such are
-	// expected to be resolved through a library of functions, versus as
-	// operations.
-	//
-	symbolTable.relateToOperator("not",              EOpVectorLogicalNot);
+    //
+    // Next, identify which built-ins from the already loaded headers have
+    // a mapping to an operator.  Those that are not identified as such are
+    // expected to be resolved through a library of functions, versus as
+    // operations.
+    //
+    symbolTable.relateToOperator("not",              EOpVectorLogicalNot);
 
-	symbolTable.relateToOperator("matrixCompMult",   EOpMul);
+    symbolTable.relateToOperator("matrixCompMult",   EOpMul);
 
-	symbolTable.relateToOperator("equal",            EOpVectorEqual);
-	symbolTable.relateToOperator("notEqual",         EOpVectorNotEqual);
-	symbolTable.relateToOperator("lessThan",         EOpLessThan);
-	symbolTable.relateToOperator("greaterThan",      EOpGreaterThan);
-	symbolTable.relateToOperator("lessThanEqual",    EOpLessThanEqual);
-	symbolTable.relateToOperator("greaterThanEqual", EOpGreaterThanEqual);
-	
-	symbolTable.relateToOperator("radians",      EOpRadians);
-	symbolTable.relateToOperator("degrees",      EOpDegrees);
-	symbolTable.relateToOperator("sin",          EOpSin);
-	symbolTable.relateToOperator("cos",          EOpCos);
-	symbolTable.relateToOperator("tan",          EOpTan);
-	symbolTable.relateToOperator("asin",         EOpAsin);
-	symbolTable.relateToOperator("acos",         EOpAcos);
-	symbolTable.relateToOperator("atan",         EOpAtan);
+    symbolTable.relateToOperator("equal",            EOpVectorEqual);
+    symbolTable.relateToOperator("notEqual",         EOpVectorNotEqual);
+    symbolTable.relateToOperator("lessThan",         EOpLessThan);
+    symbolTable.relateToOperator("greaterThan",      EOpGreaterThan);
+    symbolTable.relateToOperator("lessThanEqual",    EOpLessThanEqual);
+    symbolTable.relateToOperator("greaterThanEqual", EOpGreaterThanEqual);
+    
+    symbolTable.relateToOperator("radians",      EOpRadians);
+    symbolTable.relateToOperator("degrees",      EOpDegrees);
+    symbolTable.relateToOperator("sin",          EOpSin);
+    symbolTable.relateToOperator("cos",          EOpCos);
+    symbolTable.relateToOperator("tan",          EOpTan);
+    symbolTable.relateToOperator("asin",         EOpAsin);
+    symbolTable.relateToOperator("acos",         EOpAcos);
+    symbolTable.relateToOperator("atan",         EOpAtan);
 
-	symbolTable.relateToOperator("pow",          EOpPow);
-	symbolTable.relateToOperator("exp2",         EOpExp2);
-	symbolTable.relateToOperator("log",          EOpLog);
-	symbolTable.relateToOperator("exp",          EOpExp);
-	symbolTable.relateToOperator("log2",         EOpLog2);
-	symbolTable.relateToOperator("sqrt",         EOpSqrt);
-	symbolTable.relateToOperator("inversesqrt",  EOpInverseSqrt);
+    symbolTable.relateToOperator("pow",          EOpPow);
+    symbolTable.relateToOperator("exp2",         EOpExp2);
+    symbolTable.relateToOperator("log",          EOpLog);
+    symbolTable.relateToOperator("exp",          EOpExp);
+    symbolTable.relateToOperator("log2",         EOpLog2);
+    symbolTable.relateToOperator("sqrt",         EOpSqrt);
+    symbolTable.relateToOperator("inversesqrt",  EOpInverseSqrt);
 
-	symbolTable.relateToOperator("abs",          EOpAbs);
-	symbolTable.relateToOperator("sign",         EOpSign);
-	symbolTable.relateToOperator("floor",        EOpFloor);
-	symbolTable.relateToOperator("ceil",         EOpCeil);
-	symbolTable.relateToOperator("fract",        EOpFract);
-	symbolTable.relateToOperator("mod",          EOpMod);
-	symbolTable.relateToOperator("min",          EOpMin);
-	symbolTable.relateToOperator("max",          EOpMax);
-	symbolTable.relateToOperator("clamp",        EOpClamp);
-	symbolTable.relateToOperator("mix",          EOpMix);
-	symbolTable.relateToOperator("step",         EOpStep);
-	symbolTable.relateToOperator("smoothstep",   EOpSmoothStep);
+    symbolTable.relateToOperator("abs",          EOpAbs);
+    symbolTable.relateToOperator("sign",         EOpSign);
+    symbolTable.relateToOperator("floor",        EOpFloor);
+    symbolTable.relateToOperator("ceil",         EOpCeil);
+    symbolTable.relateToOperator("fract",        EOpFract);
+    symbolTable.relateToOperator("mod",          EOpMod);
+    symbolTable.relateToOperator("min",          EOpMin);
+    symbolTable.relateToOperator("max",          EOpMax);
+    symbolTable.relateToOperator("clamp",        EOpClamp);
+    symbolTable.relateToOperator("mix",          EOpMix);
+    symbolTable.relateToOperator("step",         EOpStep);
+    symbolTable.relateToOperator("smoothstep",   EOpSmoothStep);
 
-	symbolTable.relateToOperator("length",       EOpLength);
-	symbolTable.relateToOperator("distance",     EOpDistance);
-	symbolTable.relateToOperator("dot",          EOpDot);
-	symbolTable.relateToOperator("cross",        EOpCross);
-	symbolTable.relateToOperator("normalize",    EOpNormalize);
-	symbolTable.relateToOperator("faceforward",  EOpFaceForward);
-	symbolTable.relateToOperator("reflect",      EOpReflect);
-	symbolTable.relateToOperator("refract",      EOpRefract);
-	
-	symbolTable.relateToOperator("any",          EOpAny);
-	symbolTable.relateToOperator("all",          EOpAll);
+    symbolTable.relateToOperator("length",       EOpLength);
+    symbolTable.relateToOperator("distance",     EOpDistance);
+    symbolTable.relateToOperator("dot",          EOpDot);
+    symbolTable.relateToOperator("cross",        EOpCross);
+    symbolTable.relateToOperator("normalize",    EOpNormalize);
+    symbolTable.relateToOperator("faceforward",  EOpFaceForward);
+    symbolTable.relateToOperator("reflect",      EOpReflect);
+    symbolTable.relateToOperator("refract",      EOpRefract);
+    
+    symbolTable.relateToOperator("any",          EOpAny);
+    symbolTable.relateToOperator("all",          EOpAll);
 
-	switch(language)
-	{
-	case EShLangVertex:
-		break;
-	case EShLangFragment:
-	//	symbolTable.relateToOperator("dFdx",         EOpDPdx);     // OES_standard_derivatives extension
-	//	symbolTable.relateToOperator("dFdy",         EOpDPdy);     // OES_standard_derivatives extension
-	//	symbolTable.relateToOperator("fwidth",       EOpFwidth);   // OES_standard_derivatives extension
-		break;
-	default: assert(false && "Language not supported");
-	}
+    switch(language)
+    {
+    case EShLangVertex:
+        break;
+    case EShLangFragment:
+    //	symbolTable.relateToOperator("dFdx",         EOpDPdx);     // OES_standard_derivatives extension
+    //	symbolTable.relateToOperator("dFdy",         EOpDPdy);     // OES_standard_derivatives extension
+    //	symbolTable.relateToOperator("fwidth",       EOpFwidth);   // OES_standard_derivatives extension
+        break;
+    default: assert(false && "Language not supported");
+    }
 }
 
 void IdentifyBuiltIns(EShLanguage language, TSymbolTable& symbolTable, const TBuiltInResource &resources)
 {
-	//
-	// First, insert some special built-in variables that are not in 
-	// the built-in header files.
-	//
-	switch(language) {
+    //
+    // First, insert some special built-in variables that are not in 
+    // the built-in header files.
+    //
+    switch(language) {
 
-	case EShLangFragment: {
-			// Set up gl_FragData.  The array size.
-			TType fragData(EbtFloat, EvqFragColor,   4, false, true);
-			fragData.setArraySize(resources.maxDrawBuffers);
-			symbolTable.insert(*new TVariable(NewPoolTString("gl_FragData"),    fragData));
-		}
-		break;
+    case EShLangFragment: {
+            // Set up gl_FragData.  The array size.
+            TType fragData(EbtFloat, EvqFragColor,   4, false, true);
+            fragData.setArraySize(resources.maxDrawBuffers);
+            symbolTable.insert(*new TVariable(NewPoolTString("gl_FragData"),    fragData));
+        }
+        break;
 
-	default: break;
-	}
+    default: break;
+    }
 }
 
 const char* GetPreprocessorBuiltinString()
 {
-	static const char *PreprocessorBuiltinString = "";
+    static const char *PreprocessorBuiltinString = "";
 
-	return PreprocessorBuiltinString;
+    return PreprocessorBuiltinString;
 }
diff --git a/src/compiler/ParseHelper.h b/src/compiler/ParseHelper.h
index e1af790..995f918 100644
--- a/src/compiler/ParseHelper.h
+++ b/src/compiler/ParseHelper.h
@@ -11,24 +11,24 @@
 #include "compiler/localintermediate.h"
 
 struct TMatrixFields {
-	bool wholeRow;
-	bool wholeCol;
-	int row;
-	int col;
+    bool wholeRow;
+    bool wholeCol;
+    int row;
+    int col;
 };
 
 typedef enum {
-	EBhRequire,
-	EBhEnable,
-	EBhWarn,
-	EBhDisable
+    EBhRequire,
+    EBhEnable,
+    EBhWarn,
+    EBhDisable
 } TBehavior;
 
 struct TPragma {
-	TPragma(bool o, bool d) : optimize(o), debug(d) { }
-	bool optimize;
-	bool debug;
-	TPragmaTable pragmaTable;
+    TPragma(bool o, bool d) : optimize(o), debug(d) { }
+    bool optimize;
+    bool debug;
+    TPragmaTable pragmaTable;
 };
 
 //
@@ -36,71 +36,71 @@
 // they can be passed to the parser without needing a global.
 //
 struct TParseContext {
-	TParseContext(TSymbolTable& symt, TIntermediate& interm, EShLanguage L, TInfoSink& is) :
-			intermediate(interm), symbolTable(symt), infoSink(is), language(L), treeRoot(0),
-			recoveredFromError(false), numErrors(0), lexAfterType(false), loopNestingLevel(0),
-			inTypeParen(false), contextPragma(true, false) {  }
-	TIntermediate& intermediate; // to hold and build a parse tree
-	TSymbolTable& symbolTable;   // symbol table that goes with the language currently being parsed
-	TInfoSink& infoSink;
-	EShLanguage language;        // vertex or fragment language (future: pack or unpack)
-	TIntermNode* treeRoot;       // root of parse tree being created
-	bool recoveredFromError;     // true if a parse error has occurred, but we continue to parse
-	int numErrors;
-	bool lexAfterType;           // true if we've recognized a type, so can only be looking for an identifier
-	int loopNestingLevel;        // 0 if outside all loops
-	bool inTypeParen;            // true if in parentheses, looking only for an identifier
-	const TType* currentFunctionType;  // the return type of the function that's currently being parsed
-	bool functionReturnsValue;   // true if a non-void function has a return
-	TMap<TString, TBehavior> extensionBehavior;
-	void initializeExtensionBehavior();
+    TParseContext(TSymbolTable& symt, TIntermediate& interm, EShLanguage L, TInfoSink& is) :
+            intermediate(interm), symbolTable(symt), infoSink(is), language(L), treeRoot(0),
+            recoveredFromError(false), numErrors(0), lexAfterType(false), loopNestingLevel(0),
+            inTypeParen(false), contextPragma(true, false) {  }
+    TIntermediate& intermediate; // to hold and build a parse tree
+    TSymbolTable& symbolTable;   // symbol table that goes with the language currently being parsed
+    TInfoSink& infoSink;
+    EShLanguage language;        // vertex or fragment language (future: pack or unpack)
+    TIntermNode* treeRoot;       // root of parse tree being created
+    bool recoveredFromError;     // true if a parse error has occurred, but we continue to parse
+    int numErrors;
+    bool lexAfterType;           // true if we've recognized a type, so can only be looking for an identifier
+    int loopNestingLevel;        // 0 if outside all loops
+    bool inTypeParen;            // true if in parentheses, looking only for an identifier
+    const TType* currentFunctionType;  // the return type of the function that's currently being parsed
+    bool functionReturnsValue;   // true if a non-void function has a return
+    TMap<TString, TBehavior> extensionBehavior;
+    void initializeExtensionBehavior();
 
-	void C_DECL error(TSourceLoc, const char *szReason, const char *szToken,
-					  const char *szExtraInfoFormat, ...);
-	bool reservedErrorCheck(int line, const TString& identifier);
-	void recover();
+    void C_DECL error(TSourceLoc, const char *szReason, const char *szToken,
+                      const char *szExtraInfoFormat, ...);
+    bool reservedErrorCheck(int line, const TString& identifier);
+    void recover();
 
-	bool parseVectorFields(const TString&, int vecSize, TVectorFields&, int line);
-	bool parseMatrixFields(const TString&, int matSize, TMatrixFields&, int line);
-	void assignError(int line, const char* op, TString left, TString right);
-	void unaryOpError(int line, const char* op, TString operand);
-	void binaryOpError(int line, const char* op, TString left, TString right);
-	bool lValueErrorCheck(int line, const char* op, TIntermTyped*);
-	bool constErrorCheck(TIntermTyped* node);
-	bool integerErrorCheck(TIntermTyped* node, const char* token);
-	bool globalErrorCheck(int line, bool global, const char* token);
-	bool constructorErrorCheck(int line, TIntermNode*, TFunction&, TOperator, TType*);
-	bool arraySizeErrorCheck(int line, TIntermTyped* expr, int& size);
-	bool arrayQualifierErrorCheck(int line, TPublicType type);
-	bool arrayTypeErrorCheck(int line, TPublicType type);
-	bool arrayErrorCheck(int line, TString& identifier, TPublicType type, TVariable*& variable);
-	bool voidErrorCheck(int, const TString&, const TPublicType&);
-	bool boolErrorCheck(int, const TIntermTyped*);
-	bool boolErrorCheck(int, const TPublicType&);
-	bool samplerErrorCheck(int line, const TPublicType& pType, const char* reason);
-	bool structQualifierErrorCheck(int line, const TPublicType& pType);
-	bool parameterSamplerErrorCheck(int line, TQualifier qualifier, const TType& type);
-	bool containsSampler(TType& type);
-	bool nonInitConstErrorCheck(int line, TString& identifier, TPublicType& type);
-	bool nonInitErrorCheck(int line, TString& identifier, TPublicType& type);
-	bool paramErrorCheck(int line, TQualifier qualifier, TQualifier paramQualifier, TType* type);
-	bool extensionErrorCheck(int line, const char*);
-	const TFunction* findFunction(int line, TFunction* pfnCall, bool *builtIn = 0);
-	bool executeInitializer(TSourceLoc line, TString& identifier, TPublicType& pType,
-							TIntermTyped* initializer, TIntermNode*& intermNode, TVariable* variable = 0);
-	bool areAllChildConst(TIntermAggregate* aggrNode);
-	TIntermTyped* addConstructor(TIntermNode*, const TType*, TOperator, TFunction*, TSourceLoc);
-	TIntermTyped* foldConstConstructor(TIntermAggregate* aggrNode, const TType& type);
-	TIntermTyped* constructStruct(TIntermNode*, TType*, int, TSourceLoc, bool subset);
-	TIntermTyped* constructBuiltIn(const TType*, TOperator, TIntermNode*, TSourceLoc, bool subset);
-	TIntermTyped* addConstVectorNode(TVectorFields&, TIntermTyped*, TSourceLoc);
-	TIntermTyped* addConstMatrixNode(int , TIntermTyped*, TSourceLoc);
-	TIntermTyped* addConstArrayNode(int index, TIntermTyped* node, TSourceLoc line);
-	TIntermTyped* addConstStruct(TString& , TIntermTyped*, TSourceLoc);
-	bool arraySetMaxSize(TIntermSymbol*, TType*, int, bool, TSourceLoc);
-	struct TPragma contextPragma;
-	TString HashErrMsg;
-	bool AfterEOF;
+    bool parseVectorFields(const TString&, int vecSize, TVectorFields&, int line);
+    bool parseMatrixFields(const TString&, int matSize, TMatrixFields&, int line);
+    void assignError(int line, const char* op, TString left, TString right);
+    void unaryOpError(int line, const char* op, TString operand);
+    void binaryOpError(int line, const char* op, TString left, TString right);
+    bool lValueErrorCheck(int line, const char* op, TIntermTyped*);
+    bool constErrorCheck(TIntermTyped* node);
+    bool integerErrorCheck(TIntermTyped* node, const char* token);
+    bool globalErrorCheck(int line, bool global, const char* token);
+    bool constructorErrorCheck(int line, TIntermNode*, TFunction&, TOperator, TType*);
+    bool arraySizeErrorCheck(int line, TIntermTyped* expr, int& size);
+    bool arrayQualifierErrorCheck(int line, TPublicType type);
+    bool arrayTypeErrorCheck(int line, TPublicType type);
+    bool arrayErrorCheck(int line, TString& identifier, TPublicType type, TVariable*& variable);
+    bool voidErrorCheck(int, const TString&, const TPublicType&);
+    bool boolErrorCheck(int, const TIntermTyped*);
+    bool boolErrorCheck(int, const TPublicType&);
+    bool samplerErrorCheck(int line, const TPublicType& pType, const char* reason);
+    bool structQualifierErrorCheck(int line, const TPublicType& pType);
+    bool parameterSamplerErrorCheck(int line, TQualifier qualifier, const TType& type);
+    bool containsSampler(TType& type);
+    bool nonInitConstErrorCheck(int line, TString& identifier, TPublicType& type);
+    bool nonInitErrorCheck(int line, TString& identifier, TPublicType& type);
+    bool paramErrorCheck(int line, TQualifier qualifier, TQualifier paramQualifier, TType* type);
+    bool extensionErrorCheck(int line, const char*);
+    const TFunction* findFunction(int line, TFunction* pfnCall, bool *builtIn = 0);
+    bool executeInitializer(TSourceLoc line, TString& identifier, TPublicType& pType,
+                            TIntermTyped* initializer, TIntermNode*& intermNode, TVariable* variable = 0);
+    bool areAllChildConst(TIntermAggregate* aggrNode);
+    TIntermTyped* addConstructor(TIntermNode*, const TType*, TOperator, TFunction*, TSourceLoc);
+    TIntermTyped* foldConstConstructor(TIntermAggregate* aggrNode, const TType& type);
+    TIntermTyped* constructStruct(TIntermNode*, TType*, int, TSourceLoc, bool subset);
+    TIntermTyped* constructBuiltIn(const TType*, TOperator, TIntermNode*, TSourceLoc, bool subset);
+    TIntermTyped* addConstVectorNode(TVectorFields&, TIntermTyped*, TSourceLoc);
+    TIntermTyped* addConstMatrixNode(int , TIntermTyped*, TSourceLoc);
+    TIntermTyped* addConstArrayNode(int index, TIntermTyped* node, TSourceLoc line);
+    TIntermTyped* addConstStruct(TString& , TIntermTyped*, TSourceLoc);
+    bool arraySetMaxSize(TIntermSymbol*, TType*, int, bool, TSourceLoc);
+    struct TPragma contextPragma;
+    TString HashErrMsg;
+    bool AfterEOF;
 };
 
 int PaParseStrings(char* argv[], int strLen[], int argc, TParseContext&);
@@ -115,7 +115,7 @@
 
 typedef struct TThreadParseContextRec
 {
-	TParseContext *lpGlobalParseContext;
+    TParseContext *lpGlobalParseContext;
 } TThreadParseContext;
 
 #endif // _PARSER_HELPER_INCLUDED_
diff --git a/src/compiler/SymbolTable.cpp b/src/compiler/SymbolTable.cpp
index 5ac6e66..483204c 100644
--- a/src/compiler/SymbolTable.cpp
+++ b/src/compiler/SymbolTable.cpp
@@ -20,53 +20,53 @@
 //
 void TType::buildMangledName(TString& mangledName)
 {
-	if (isMatrix())
-		mangledName += 'm';
-	else if (isVector())
-		mangledName += 'v';
+    if (isMatrix())
+        mangledName += 'm';
+    else if (isVector())
+        mangledName += 'v';
 
-	switch (type) {
-	case EbtFloat:              mangledName += 'f';      break;
-	case EbtInt:                mangledName += 'i';      break;
-	case EbtBool:               mangledName += 'b';      break;
-	case EbtSampler2D:          mangledName += "s2";     break;
-	case EbtSamplerCube:        mangledName += "sC";     break;
-	case EbtStruct:
-		mangledName += "struct-";
-		if (typeName)
-			mangledName += *typeName;
-		{// support MSVC++6.0
-			for (unsigned int i = 0; i < structure->size(); ++i) {
-				mangledName += '-';
-				(*structure)[i].type->buildMangledName(mangledName);
-			}
-		}
-	default:
-		break;
-	}
+    switch (type) {
+    case EbtFloat:              mangledName += 'f';      break;
+    case EbtInt:                mangledName += 'i';      break;
+    case EbtBool:               mangledName += 'b';      break;
+    case EbtSampler2D:          mangledName += "s2";     break;
+    case EbtSamplerCube:        mangledName += "sC";     break;
+    case EbtStruct:
+        mangledName += "struct-";
+        if (typeName)
+            mangledName += *typeName;
+        {// support MSVC++6.0
+            for (unsigned int i = 0; i < structure->size(); ++i) {
+                mangledName += '-';
+                (*structure)[i].type->buildMangledName(mangledName);
+            }
+        }
+    default:
+        break;
+    }
 
-	mangledName += static_cast<char>('0' + getNominalSize());
-	if (isArray()) {
-		char buf[20];
-		sprintf(buf, "%d", arraySize);
-		mangledName += '[';
-		mangledName += buf;
-		mangledName += ']';
-	}
+    mangledName += static_cast<char>('0' + getNominalSize());
+    if (isArray()) {
+        char buf[20];
+        sprintf(buf, "%d", arraySize);
+        mangledName += '[';
+        mangledName += buf;
+        mangledName += ']';
+    }
 }
 
 int TType::getStructSize() const
 {
-	if (!getStruct()) {
-		assert(false && "Not a struct");
-		return 0;
-	}
+    if (!getStruct()) {
+        assert(false && "Not a struct");
+        return 0;
+    }
 
-	if (structureSize == 0)
-		for (TTypeList::iterator tl = getStruct()->begin(); tl != getStruct()->end(); tl++)
-			structureSize += ((*tl).type)->getObjectSize();
+    if (structureSize == 0)
+        for (TTypeList::iterator tl = getStruct()->begin(); tl != getStruct()->end(); tl++)
+            structureSize += ((*tl).type)->getObjectSize();
 
-	return structureSize;
+    return structureSize;
 }
 
 //
@@ -75,31 +75,31 @@
 
 void TVariable::dump(TInfoSink& infoSink) const
 {
-	infoSink.debug << getName().c_str() << ": " << type.getQualifierString() << " " << type.getBasicString();
-	if (type.isArray()) {
-		infoSink.debug << "[0]";
-	}
-	infoSink.debug << "\n";
+    infoSink.debug << getName().c_str() << ": " << type.getQualifierString() << " " << type.getBasicString();
+    if (type.isArray()) {
+        infoSink.debug << "[0]";
+    }
+    infoSink.debug << "\n";
 }
 
 void TFunction::dump(TInfoSink &infoSink) const
 {
-	infoSink.debug << getName().c_str() << ": " <<  returnType.getBasicString() << " " << getMangledName().c_str() << "\n";
+    infoSink.debug << getName().c_str() << ": " <<  returnType.getBasicString() << " " << getMangledName().c_str() << "\n";
 }
 
 void TSymbolTableLevel::dump(TInfoSink &infoSink) const
 {
-	tLevel::const_iterator it;
-	for (it = level.begin(); it != level.end(); ++it)
-		(*it).second->dump(infoSink);
+    tLevel::const_iterator it;
+    for (it = level.begin(); it != level.end(); ++it)
+        (*it).second->dump(infoSink);
 }
 
 void TSymbolTable::dump(TInfoSink &infoSink) const
 {
-	for (int level = currentLevel(); level >= 0; --level) {
-		infoSink.debug << "LEVEL " << level << "\n";
-		table[level]->dump(infoSink);
-	}
+    for (int level = currentLevel(); level >= 0; --level) {
+        infoSink.debug << "LEVEL " << level << "\n";
+        table[level]->dump(infoSink);
+    }
 }
 
 //
@@ -107,8 +107,8 @@
 //
 TFunction::~TFunction()
 {
-	for (TParamList::iterator i = parameters.begin(); i != parameters.end(); ++i)
-		delete (*i).type;
+    for (TParamList::iterator i = parameters.begin(); i != parameters.end(); ++i)
+        delete (*i).type;
 }
 
 //
@@ -116,8 +116,8 @@
 //
 TSymbolTableLevel::~TSymbolTableLevel()
 {
-	for (tLevel::iterator it = level.begin(); it != level.end(); ++it)
-		delete (*it).second;
+    for (tLevel::iterator it = level.begin(); it != level.end(); ++it)
+        delete (*it).second;
 }
 
 //
@@ -128,84 +128,84 @@
 //
 void TSymbolTableLevel::relateToOperator(const char* name, TOperator op)
 {
-	tLevel::iterator it;
-	for (it = level.begin(); it != level.end(); ++it) {
-		if ((*it).second->isFunction()) {
-			TFunction* function = static_cast<TFunction*>((*it).second);
-			if (function->getName() == name)
-				function->relateToOperator(op);
-		}
-	}
+    tLevel::iterator it;
+    for (it = level.begin(); it != level.end(); ++it) {
+        if ((*it).second->isFunction()) {
+            TFunction* function = static_cast<TFunction*>((*it).second);
+            if (function->getName() == name)
+                function->relateToOperator(op);
+        }
+    }
 }
 
 
 TSymbol::TSymbol(const TSymbol& copyOf)
 {
-	name = NewPoolTString(copyOf.name->c_str());
-	uniqueId = copyOf.uniqueId;
+    name = NewPoolTString(copyOf.name->c_str());
+    uniqueId = copyOf.uniqueId;
 }
 
 TVariable::TVariable(const TVariable& copyOf, TStructureMap& remapper) : TSymbol(copyOf)
 {
-	type.copyType(copyOf.type, remapper);
-	userType = copyOf.userType;
-	// for builtIn symbol table level, unionArray and arrayInformation pointers should be NULL
-	assert(copyOf.arrayInformationType == 0);
-	arrayInformationType = 0;
+    type.copyType(copyOf.type, remapper);
+    userType = copyOf.userType;
+    // for builtIn symbol table level, unionArray and arrayInformation pointers should be NULL
+    assert(copyOf.arrayInformationType == 0);
+    arrayInformationType = 0;
 
-	if (copyOf.unionArray) {
-		assert(!copyOf.type.getStruct());
-		assert(copyOf.type.getObjectSize() == 1);
-		unionArray = new ConstantUnion[1];
-		unionArray[0] = copyOf.unionArray[0];
-	} else
-		unionArray = 0;
+    if (copyOf.unionArray) {
+        assert(!copyOf.type.getStruct());
+        assert(copyOf.type.getObjectSize() == 1);
+        unionArray = new ConstantUnion[1];
+        unionArray[0] = copyOf.unionArray[0];
+    } else
+        unionArray = 0;
 }
 
 TVariable* TVariable::clone(TStructureMap& remapper)
 {
-	TVariable *variable = new TVariable(*this, remapper);
+    TVariable *variable = new TVariable(*this, remapper);
 
-	return variable;
+    return variable;
 }
 
 TFunction::TFunction(const TFunction& copyOf, TStructureMap& remapper) : TSymbol(copyOf)
 {
-	for (unsigned int i = 0; i < copyOf.parameters.size(); ++i) {
-		TParameter param;
-		parameters.push_back(param);
-		parameters.back().copyParam(copyOf.parameters[i], remapper);
-	}
+    for (unsigned int i = 0; i < copyOf.parameters.size(); ++i) {
+        TParameter param;
+        parameters.push_back(param);
+        parameters.back().copyParam(copyOf.parameters[i], remapper);
+    }
 
-	returnType.copyType(copyOf.returnType, remapper);
-	mangledName = copyOf.mangledName;
-	op = copyOf.op;
-	defined = copyOf.defined;
+    returnType.copyType(copyOf.returnType, remapper);
+    mangledName = copyOf.mangledName;
+    op = copyOf.op;
+    defined = copyOf.defined;
 }
 
 TFunction* TFunction::clone(TStructureMap& remapper)
 {
-	TFunction *function = new TFunction(*this, remapper);
+    TFunction *function = new TFunction(*this, remapper);
 
-	return function;
+    return function;
 }
 
 TSymbolTableLevel* TSymbolTableLevel::clone(TStructureMap& remapper)
 {
-	TSymbolTableLevel *symTableLevel = new TSymbolTableLevel();
-	tLevel::iterator iter;
-	for (iter = level.begin(); iter != level.end(); ++iter) {
-		symTableLevel->insert(*iter->second->clone(remapper));
-	}
+    TSymbolTableLevel *symTableLevel = new TSymbolTableLevel();
+    tLevel::iterator iter;
+    for (iter = level.begin(); iter != level.end(); ++iter) {
+        symTableLevel->insert(*iter->second->clone(remapper));
+    }
 
-	return symTableLevel;
+    return symTableLevel;
 }
 
 void TSymbolTable::copyTable(const TSymbolTable& copyOf)
 {
-	TStructureMap remapper;
-	uniqueId = copyOf.uniqueId;
-	for (unsigned int i = 0; i < copyOf.table.size(); ++i) {
-		table.push_back(copyOf.table[i]->clone(remapper));
-	}
+    TStructureMap remapper;
+    uniqueId = copyOf.uniqueId;
+    for (unsigned int i = 0; i < copyOf.table.size(); ++i) {
+        table.push_back(copyOf.table[i]->clone(remapper));
+    }
 }
diff --git a/src/compiler/Types.h b/src/compiler/Types.h
index 1412840..0ad9d63 100644
--- a/src/compiler/Types.h
+++ b/src/compiler/Types.h
@@ -15,15 +15,15 @@
 //
 class TType;
 struct TTypeLine {
-	TType* type;
-	int line;
+    TType* type;
+    int line;
 };
 typedef TVector<TTypeLine> TTypeList;
 
 inline TTypeList* NewPoolTTypeList()
 {
-	void* memory = GlobalPoolAllocator.allocate(sizeof(TTypeList));
-	return new(memory) TTypeList;
+    void* memory = GlobalPoolAllocator.allocate(sizeof(TTypeList));
+    return new(memory) TTypeList;
 }
 
 //
@@ -37,45 +37,45 @@
 //
 class TPublicType {
 public:
-	TBasicType type;
-	TQualifier qualifier;
-	TPrecision precision;
-	int size;          // size of vector or matrix, not size of array
-	bool matrix;
-	bool array;
-	int arraySize;
-	TType* userDef;
-	int line;
+    TBasicType type;
+    TQualifier qualifier;
+    TPrecision precision;
+    int size;          // size of vector or matrix, not size of array
+    bool matrix;
+    bool array;
+    int arraySize;
+    TType* userDef;
+    int line;
 
-	void setBasic(TBasicType bt, TQualifier q, int ln = 0)
-	{
-		type = bt;
-		qualifier = q;
-		precision = EbpHigh;
-		size = 1;
-		matrix = false;
-		array = false;
-		arraySize = 0;
-		userDef = 0;
-		line = ln;
-	}
+    void setBasic(TBasicType bt, TQualifier q, int ln = 0)
+    {
+        type = bt;
+        qualifier = q;
+        precision = EbpHigh;
+        size = 1;
+        matrix = false;
+        array = false;
+        arraySize = 0;
+        userDef = 0;
+        line = ln;
+    }
 
-	void setPrecision(TPrecision pcs)
-	{
-		precision = pcs;
-	}
+    void setPrecision(TPrecision pcs)
+    {
+        precision = pcs;
+    }
 
-	void setAggregate(int s, bool m = false)
-	{
-		size = s;
-		matrix = m;
-	}
+    void setAggregate(int s, bool m = false)
+    {
+        size = s;
+        matrix = m;
+    }
 
-	void setArray(bool a, int s = 0)
-	{
-		array = a;
-		arraySize = s;
-	}
+    void setArray(bool a, int s = 0)
+    {
+        array = a;
+        arraySize = s;
+    }
 };
 
 typedef TMap<TTypeList*, TTypeList*> TStructureMap;
@@ -85,197 +85,197 @@
 //
 class TType {
 public:
-	POOL_ALLOCATOR_NEW_DELETE(GlobalPoolAllocator)
-	explicit TType(TBasicType t, TQualifier q = EvqTemporary, int s = 1, bool m = false, bool a = false, TPrecision p = EbpHigh) :
-							type(t), precision(p), qualifier(q), size(s), matrix(m), array(a), arraySize(0),
-							structure(0), structureSize(0), maxArraySize(0), arrayInformationType(0), fieldName(0), mangled(0), typeName(0)
-							{ }
-	explicit TType(const TPublicType &p) :
-							type(p.type), precision(p.precision), qualifier(p.qualifier), size(p.size), matrix(p.matrix), array(p.array), arraySize(p.arraySize),
-							structure(0), structureSize(0), maxArraySize(0), arrayInformationType(0), fieldName(0), mangled(0), typeName(0)
-							{
-							  if (p.userDef) {
-								  structure = p.userDef->getStruct();
-								  typeName = NewPoolTString(p.userDef->getTypeName().c_str());
-							  }
-							}
-	explicit TType(TTypeList* userDef, const TString& n, TPrecision p = EbpHigh) :
-							type(EbtStruct), precision(p), qualifier(EvqTemporary), size(1), matrix(false), array(false), arraySize(0),
-							structure(userDef), structureSize(0), maxArraySize(0), arrayInformationType(0), fieldName(0), mangled(0) {
-								typeName = NewPoolTString(n.c_str());
-							}
-	explicit TType() {}
-	virtual ~TType() {}
+    POOL_ALLOCATOR_NEW_DELETE(GlobalPoolAllocator)
+    explicit TType(TBasicType t, TQualifier q = EvqTemporary, int s = 1, bool m = false, bool a = false, TPrecision p = EbpHigh) :
+                            type(t), precision(p), qualifier(q), size(s), matrix(m), array(a), arraySize(0),
+                            structure(0), structureSize(0), maxArraySize(0), arrayInformationType(0), fieldName(0), mangled(0), typeName(0)
+                            { }
+    explicit TType(const TPublicType &p) :
+                            type(p.type), precision(p.precision), qualifier(p.qualifier), size(p.size), matrix(p.matrix), array(p.array), arraySize(p.arraySize),
+                            structure(0), structureSize(0), maxArraySize(0), arrayInformationType(0), fieldName(0), mangled(0), typeName(0)
+                            {
+                              if (p.userDef) {
+                                  structure = p.userDef->getStruct();
+                                  typeName = NewPoolTString(p.userDef->getTypeName().c_str());
+                              }
+                            }
+    explicit TType(TTypeList* userDef, const TString& n, TPrecision p = EbpHigh) :
+                            type(EbtStruct), precision(p), qualifier(EvqTemporary), size(1), matrix(false), array(false), arraySize(0),
+                            structure(userDef), structureSize(0), maxArraySize(0), arrayInformationType(0), fieldName(0), mangled(0) {
+                                typeName = NewPoolTString(n.c_str());
+                            }
+    explicit TType() {}
+    virtual ~TType() {}
 
-	TType(const TType& type) { *this = type; }
+    TType(const TType& type) { *this = type; }
 
-	void copyType(const TType& copyOf, TStructureMap& remapper)
-	{
-		type = copyOf.type;
-		precision = copyOf.precision;
-		qualifier = copyOf.qualifier;
-		size = copyOf.size;
-		matrix = copyOf.matrix;
-		array = copyOf.array;
-		arraySize = copyOf.arraySize;
+    void copyType(const TType& copyOf, TStructureMap& remapper)
+    {
+        type = copyOf.type;
+        precision = copyOf.precision;
+        qualifier = copyOf.qualifier;
+        size = copyOf.size;
+        matrix = copyOf.matrix;
+        array = copyOf.array;
+        arraySize = copyOf.arraySize;
 
-		TStructureMapIterator iter;
-		if (copyOf.structure) {
-			if ((iter = remapper.find(structure)) == remapper.end()) {
-				// create the new structure here
-				structure = NewPoolTTypeList();
-				for (unsigned int i = 0; i < copyOf.structure->size(); ++i) {
-					TTypeLine typeLine;
-					typeLine.line = (*copyOf.structure)[i].line;
-					typeLine.type = (*copyOf.structure)[i].type->clone(remapper);
-					structure->push_back(typeLine);
-				}
-			} else {
-				structure = iter->second;
-			}
-		} else
-			structure = 0;
+        TStructureMapIterator iter;
+        if (copyOf.structure) {
+            if ((iter = remapper.find(structure)) == remapper.end()) {
+                // create the new structure here
+                structure = NewPoolTTypeList();
+                for (unsigned int i = 0; i < copyOf.structure->size(); ++i) {
+                    TTypeLine typeLine;
+                    typeLine.line = (*copyOf.structure)[i].line;
+                    typeLine.type = (*copyOf.structure)[i].type->clone(remapper);
+                    structure->push_back(typeLine);
+                }
+            } else {
+                structure = iter->second;
+            }
+        } else
+            structure = 0;
 
-		fieldName = 0;
-		if (copyOf.fieldName)
-			fieldName = NewPoolTString(copyOf.fieldName->c_str());
-		typeName = 0;
-		if (copyOf.typeName)
-			typeName = NewPoolTString(copyOf.typeName->c_str());
+        fieldName = 0;
+        if (copyOf.fieldName)
+            fieldName = NewPoolTString(copyOf.fieldName->c_str());
+        typeName = 0;
+        if (copyOf.typeName)
+            typeName = NewPoolTString(copyOf.typeName->c_str());
 
-		mangled = 0;
-		if (copyOf.mangled)
-			mangled = NewPoolTString(copyOf.mangled->c_str());
+        mangled = 0;
+        if (copyOf.mangled)
+            mangled = NewPoolTString(copyOf.mangled->c_str());
 
-		structureSize = copyOf.structureSize;
-		maxArraySize = copyOf.maxArraySize;
-		assert(copyOf.arrayInformationType == 0);
-		arrayInformationType = 0; // arrayInformationType should not be set for builtIn symbol table level
-	}
+        structureSize = copyOf.structureSize;
+        maxArraySize = copyOf.maxArraySize;
+        assert(copyOf.arrayInformationType == 0);
+        arrayInformationType = 0; // arrayInformationType should not be set for builtIn symbol table level
+    }
 
-	TType* clone(TStructureMap& remapper)
-	{
-		TType *newType = new TType();
-		newType->copyType(*this, remapper);
+    TType* clone(TStructureMap& remapper)
+    {
+        TType *newType = new TType();
+        newType->copyType(*this, remapper);
 
-		return newType;
-	}
+        return newType;
+    }
 
-	virtual void setType(TBasicType t, int s, bool m, bool a, int aS = 0)
-							{ type = t; size = s; matrix = m; array = a; arraySize = aS; }
-	virtual void setType(TBasicType t, int s, bool m, TType* userDef = 0)
-							{ type = t;
-							  size = s;
-							  matrix = m;
-							  if (userDef)
-								  structure = userDef->getStruct();
-							  // leave array information intact.
-							}
-	virtual void setTypeName(const TString& n) { typeName = NewPoolTString(n.c_str()); }
-	virtual void setFieldName(const TString& n) { fieldName = NewPoolTString(n.c_str()); }
-	virtual const TString& getTypeName() const
-	{
-		assert(typeName);
-		return *typeName;
-	}
+    virtual void setType(TBasicType t, int s, bool m, bool a, int aS = 0)
+                            { type = t; size = s; matrix = m; array = a; arraySize = aS; }
+    virtual void setType(TBasicType t, int s, bool m, TType* userDef = 0)
+                            { type = t;
+                              size = s;
+                              matrix = m;
+                              if (userDef)
+                                  structure = userDef->getStruct();
+                              // leave array information intact.
+                            }
+    virtual void setTypeName(const TString& n) { typeName = NewPoolTString(n.c_str()); }
+    virtual void setFieldName(const TString& n) { fieldName = NewPoolTString(n.c_str()); }
+    virtual const TString& getTypeName() const
+    {
+        assert(typeName);
+        return *typeName;
+    }
 
-	virtual const TString& getFieldName() const
-	{
-		assert(fieldName);
-		return *fieldName;
-	}
+    virtual const TString& getFieldName() const
+    {
+        assert(fieldName);
+        return *fieldName;
+    }
 
-	virtual TBasicType getBasicType() const { return type; }
-	virtual TPrecision getPrecision() const { return precision; }
-	virtual TQualifier getQualifier() const { return qualifier; }
-	virtual void changePrecision(TPrecision p) { precision = p; }
-	virtual void changeQualifier(TQualifier q) { qualifier = q; }
+    virtual TBasicType getBasicType() const { return type; }
+    virtual TPrecision getPrecision() const { return precision; }
+    virtual TQualifier getQualifier() const { return qualifier; }
+    virtual void changePrecision(TPrecision p) { precision = p; }
+    virtual void changeQualifier(TQualifier q) { qualifier = q; }
 
-	// One-dimensional size of single instance type
-	virtual int getNominalSize() const { return size; }
+    // One-dimensional size of single instance type
+    virtual int getNominalSize() const { return size; }
 
-	// Full-dimensional size of single instance of type
-	virtual int getInstanceSize() const
-	{
-		if (matrix)
-			return size * size;
-		else
-			return size;
-	}
+    // Full-dimensional size of single instance of type
+    virtual int getInstanceSize() const
+    {
+        if (matrix)
+            return size * size;
+        else
+            return size;
+    }
 
-	virtual bool isMatrix() const { return matrix ? true : false; }
-	virtual bool isArray() const  { return array ? true : false; }
-	bool isField() const { return fieldName != 0; }
-	int getArraySize() const { return arraySize; }
-	void setArraySize(int s) { array = true; arraySize = s; }
-	void setMaxArraySize (int s) { maxArraySize = s; }
-	int getMaxArraySize () const { return maxArraySize; }
-	void clearArrayness() { array = false; arraySize = 0; maxArraySize = 0; }
-	void setArrayInformationType(TType* t) { arrayInformationType = t; }
-	TType* getArrayInformationType() const { return arrayInformationType; }
-	virtual bool isVector() const { return size > 1 && !matrix; }
+    virtual bool isMatrix() const { return matrix ? true : false; }
+    virtual bool isArray() const  { return array ? true : false; }
+    bool isField() const { return fieldName != 0; }
+    int getArraySize() const { return arraySize; }
+    void setArraySize(int s) { array = true; arraySize = s; }
+    void setMaxArraySize (int s) { maxArraySize = s; }
+    int getMaxArraySize () const { return maxArraySize; }
+    void clearArrayness() { array = false; arraySize = 0; maxArraySize = 0; }
+    void setArrayInformationType(TType* t) { arrayInformationType = t; }
+    TType* getArrayInformationType() const { return arrayInformationType; }
+    virtual bool isVector() const { return size > 1 && !matrix; }
     virtual bool isScalar() const { return size == 1 && !matrix && !structure; }
-	static const char* getBasicString(TBasicType t) {
-		switch (t) {
-		case EbtVoid:              return "void";              break;
-		case EbtFloat:             return "float";             break;
-		case EbtInt:               return "int";               break;
-		case EbtBool:              return "bool";              break;
-		case EbtSampler2D:         return "sampler2D";         break;
-		case EbtSamplerCube:       return "samplerCube";       break;
-		case EbtStruct:            return "structure";         break;
-		default:                   return "unknown type";
-		}
-	}
-	const char* getBasicString() const { return TType::getBasicString(type); }
-	const char* getPrecisionString() const { return ::getPrecisionString(precision); }
-	const char* getQualifierString() const { return ::getQualifierString(qualifier); }
-	TTypeList* getStruct() { return structure; }
+    static const char* getBasicString(TBasicType t) {
+        switch (t) {
+        case EbtVoid:              return "void";              break;
+        case EbtFloat:             return "float";             break;
+        case EbtInt:               return "int";               break;
+        case EbtBool:              return "bool";              break;
+        case EbtSampler2D:         return "sampler2D";         break;
+        case EbtSamplerCube:       return "samplerCube";       break;
+        case EbtStruct:            return "structure";         break;
+        default:                   return "unknown type";
+        }
+    }
+    const char* getBasicString() const { return TType::getBasicString(type); }
+    const char* getPrecisionString() const { return ::getPrecisionString(precision); }
+    const char* getQualifierString() const { return ::getQualifierString(qualifier); }
+    TTypeList* getStruct() { return structure; }
 
-	int getObjectSize() const
-	{
-		int totalSize;
+    int getObjectSize() const
+    {
+        int totalSize;
 
-		if (getBasicType() == EbtStruct)
-			totalSize = getStructSize();
-		else if (matrix)
-			totalSize = size * size;
-		else
-			totalSize = size;
+        if (getBasicType() == EbtStruct)
+            totalSize = getStructSize();
+        else if (matrix)
+            totalSize = size * size;
+        else
+            totalSize = size;
 
-		if (isArray())
+        if (isArray())
             totalSize *= std::max(getArraySize(), getMaxArraySize());
 
-		return totalSize;
-	}
+        return totalSize;
+    }
 
-	TTypeList* getStruct() const { return structure; }
-	TString& getMangledName() {
-		if (!mangled) {
-			mangled = NewPoolTString("");
-			buildMangledName(*mangled);
-			*mangled += ';' ;
-		}
+    TTypeList* getStruct() const { return structure; }
+    TString& getMangledName() {
+        if (!mangled) {
+            mangled = NewPoolTString("");
+            buildMangledName(*mangled);
+            *mangled += ';' ;
+        }
 
-		return *mangled;
-	}
-	bool sameElementType(const TType& right) const {
-		return      type == right.type   &&
-					size == right.size   &&
-				  matrix == right.matrix &&
-			   structure == right.structure;
-	}
-	bool operator==(const TType& right) const {
-		return      type == right.type   &&
-					size == right.size   &&
-				  matrix == right.matrix &&
-				   array == right.array  && (!array || arraySize == right.arraySize) &&
-			   structure == right.structure;
-		// don't check the qualifier, it's not ever what's being sought after
-	}
-	bool operator!=(const TType& right) const {
-		return !operator==(right);
-	}
+        return *mangled;
+    }
+    bool sameElementType(const TType& right) const {
+        return      type == right.type   &&
+                    size == right.size   &&
+                  matrix == right.matrix &&
+               structure == right.structure;
+    }
+    bool operator==(const TType& right) const {
+        return      type == right.type   &&
+                    size == right.size   &&
+                  matrix == right.matrix &&
+                   array == right.array  && (!array || arraySize == right.arraySize) &&
+               structure == right.structure;
+        // don't check the qualifier, it's not ever what's being sought after
+    }
+    bool operator!=(const TType& right) const {
+        return !operator==(right);
+    }
     bool operator<(const TType& right) const {
         if (type != right.type) return type < right.type;
         if (size != right.size) return size < right.size;
@@ -285,28 +285,28 @@
         if (structure != right.structure) return structure < right.structure;
 
         return false;
-	}
-	TString getCompleteString() const;
+    }
+    TString getCompleteString() const;
 
 protected:
-	void buildMangledName(TString&);
-	int getStructSize() const;
+    void buildMangledName(TString&);
+    int getStructSize() const;
 
-	TBasicType type      : 6;
-	TPrecision precision;
-	TQualifier qualifier : 7;
-	int size             : 8; // size of vector or matrix, not size of array
-	unsigned int matrix  : 1;
-	unsigned int array   : 1;
-	int arraySize;
+    TBasicType type      : 6;
+    TPrecision precision;
+    TQualifier qualifier : 7;
+    int size             : 8; // size of vector or matrix, not size of array
+    unsigned int matrix  : 1;
+    unsigned int array   : 1;
+    int arraySize;
 
-	TTypeList* structure;      // 0 unless this is a struct
-	mutable int structureSize;
-	int maxArraySize;
-	TType* arrayInformationType;
-	TString *fieldName;         // for structure field names
-	TString *mangled;
-	TString *typeName;          // for structure field type name
+    TTypeList* structure;      // 0 unless this is a struct
+    mutable int structureSize;
+    int maxArraySize;
+    TType* arrayInformationType;
+    TString *fieldName;         // for structure field names
+    TString *mangled;
+    TString *typeName;          // for structure field type name
 };
 
 #endif // _TYPES_INCLUDED_
diff --git a/src/compiler/glslang.y b/src/compiler/glslang.y
index c115876..700bd00 100644
--- a/src/compiler/glslang.y
+++ b/src/compiler/glslang.y
@@ -732,7 +732,7 @@
                 switch($1.op) {
                 case EOpNegative:   errorOp = "-"; break;
                 case EOpLogicalNot: errorOp = "!"; break;
-				default: break;
+                default: break;
                 }
                 parseContext->unaryOpError($1.line, errorOp, $2->getCompleteString());
                 parseContext->recover();
@@ -1011,12 +1011,12 @@
         $$ = prototype;
     }
     | init_declarator_list SEMICOLON {
-		if ($1.intermAggregate)
+        if ($1.intermAggregate)
             $1.intermAggregate->setOperator(EOpDeclaration);
         $$ = $1.intermAggregate;
     }
     | PRECISION precision_qualifier type_specifier_no_prec SEMICOLON {
-    	$$ = 0;
+        $$ = 0;
     }
     ;
 
@@ -1274,7 +1274,7 @@
         if (parseContext->arrayTypeErrorCheck($4.line, $1.type) || parseContext->arrayQualifierErrorCheck($4.line, $1.type))
             parseContext->recover();
         else {
-			$1.type.setArray(true, $7->getType().getArraySize());
+            $1.type.setArray(true, $7->getType().getArraySize());
             if (parseContext->arrayErrorCheck($4.line, *$3.string, $1.type, variable))
                 parseContext->recover();
         }
@@ -1345,7 +1345,7 @@
             // build the intermediate representation
             //
             if (intermNode)
-		$$.intermAggregate = parseContext->intermediate.growAggregate($1.intermNode, intermNode, $4.line);
+        $$.intermAggregate = parseContext->intermediate.growAggregate($1.intermNode, intermNode, $4.line);
             else
                 $$.intermAggregate = $1.intermAggregate;
         } else {
@@ -1361,7 +1361,7 @@
         $$.intermAggregate = parseContext->intermediate.makeAggregate(parseContext->intermediate.addSymbol(0, "", TType($1), $1.line), $1.line);
     }
     | fully_specified_type IDENTIFIER {
-		$$.intermAggregate = parseContext->intermediate.makeAggregate(parseContext->intermediate.addSymbol(0, *$2.string, TType($1), $2.line), $2.line);
+        $$.intermAggregate = parseContext->intermediate.makeAggregate(parseContext->intermediate.addSymbol(0, *$2.string, TType($1), $2.line), $2.line);
         
         if (parseContext->structQualifierErrorCheck($2.line, $$.type))
             parseContext->recover();
@@ -1395,11 +1395,11 @@
         }
     }
     | fully_specified_type IDENTIFIER LEFT_BRACKET constant_expression RIGHT_BRACKET {
-		TType type = TType($1);
-		int size;
+        TType type = TType($1);
+        int size;
         if (parseContext->arraySizeErrorCheck($2.line, $4, size))
             parseContext->recover();
-		type.setArraySize(size);
+        type.setArraySize(size);
         $$.intermAggregate = parseContext->intermediate.makeAggregate(parseContext->intermediate.addSymbol(0, *$2.string, type, $2.line), $2.line);
         
         if (parseContext->structQualifierErrorCheck($2.line, $1))
@@ -1429,24 +1429,24 @@
 
         $$.type = $1;
 
-	    TIntermNode* intermNode;
+        TIntermNode* intermNode;
         if (!parseContext->executeInitializer($2.line, *$2.string, $1, $4, intermNode)) {
-		//
-		// Build intermediate representation
-		//
+        //
+        // Build intermediate representation
+        //
             if(intermNode)
-				$$.intermAggregate = parseContext->intermediate.makeAggregate(intermNode, $3.line);
+                $$.intermAggregate = parseContext->intermediate.makeAggregate(intermNode, $3.line);
             else
-				$$.intermAggregate = 0;
+                $$.intermAggregate = 0;
         } else {
-			parseContext->recover();
-			$$.intermAggregate = 0;
-		}
-	}
+            parseContext->recover();
+            $$.intermAggregate = 0;
+        }
+    }
     | INVARIANT IDENTIFIER {
-		VERTEX_ONLY("invariant declaration", $1.line);
-		$$.qualifier = EvqInvariantVaryingOut;
-	    $$.intermAggregate = 0;
+        VERTEX_ONLY("invariant declaration", $1.line);
+        $$.qualifier = EvqInvariantVaryingOut;
+        $$.intermAggregate = 0;
     }
 
 //
@@ -1589,23 +1589,23 @@
 
 type_specifier
     : type_specifier_no_prec {
-    	$$ = $1;
+        $$ = $1;
     }
     | precision_qualifier type_specifier_no_prec {
-    	$$ = $2;
-	$$.setPrecision($1);
+        $$ = $2;
+    $$.setPrecision($1);
     }
     ;
 
 precision_qualifier
     : HIGH_PRECISION {
-    	$$ = EbpHigh;
+        $$ = EbpHigh;
     }
     | MEDIUM_PRECISION {
-    	$$ = EbpMedium;
+        $$ = EbpMedium;
     }
     | LOW_PRECISION  {
-    	$$ = EbpLow;
+        $$ = EbpLow;
     }
     ;