// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: gltrace.proto

#ifndef PROTOBUF_gltrace_2eproto__INCLUDED
#define PROTOBUF_gltrace_2eproto__INCLUDED

#include <string>

#include <google/protobuf/stubs/common.h>

#if GOOGLE_PROTOBUF_VERSION < 2003000
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers.  Please update
#error your headers.
#endif
#if 2003000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers.  Please
#error regenerate this file with a newer version of protoc.
#endif

#include <google/protobuf/generated_message_util.h>
#include <google/protobuf/repeated_field.h>
#include <google/protobuf/extension_set.h>
// @@protoc_insertion_point(includes)

namespace android {
namespace gltrace {

// Internal implementation detail -- do not call these.
void  protobuf_AddDesc_gltrace_2eproto();
void protobuf_AssignDesc_gltrace_2eproto();
void protobuf_ShutdownFile_gltrace_2eproto();

class GLMessage;
class GLMessage_DataType;
class GLMessage_FrameBuffer;

enum GLMessage_DataType_Type {
  GLMessage_DataType_Type_VOID = 1,
  GLMessage_DataType_Type_CHAR = 2,
  GLMessage_DataType_Type_BYTE = 3,
  GLMessage_DataType_Type_INT = 4,
  GLMessage_DataType_Type_FLOAT = 5,
  GLMessage_DataType_Type_BOOL = 6,
  GLMessage_DataType_Type_ENUM = 7
};
bool GLMessage_DataType_Type_IsValid(int value);
const GLMessage_DataType_Type GLMessage_DataType_Type_Type_MIN = GLMessage_DataType_Type_VOID;
const GLMessage_DataType_Type GLMessage_DataType_Type_Type_MAX = GLMessage_DataType_Type_ENUM;
const int GLMessage_DataType_Type_Type_ARRAYSIZE = GLMessage_DataType_Type_Type_MAX + 1;

enum GLMessage_Function {
  GLMessage_Function_glActiveTexture = 0,
  GLMessage_Function_glAlphaFunc = 1,
  GLMessage_Function_glAlphaFuncx = 2,
  GLMessage_Function_glAlphaFuncxOES = 3,
  GLMessage_Function_glAttachShader = 4,
  GLMessage_Function_glBeginPerfMonitorAMD = 5,
  GLMessage_Function_glBindAttribLocation = 6,
  GLMessage_Function_glBindBuffer = 7,
  GLMessage_Function_glBindFramebuffer = 8,
  GLMessage_Function_glBindFramebufferOES = 9,
  GLMessage_Function_glBindRenderbuffer = 10,
  GLMessage_Function_glBindRenderbufferOES = 11,
  GLMessage_Function_glBindTexture = 12,
  GLMessage_Function_glBindVertexArrayOES = 13,
  GLMessage_Function_glBlendColor = 14,
  GLMessage_Function_glBlendEquation = 15,
  GLMessage_Function_glBlendEquationOES = 16,
  GLMessage_Function_glBlendEquationSeparate = 17,
  GLMessage_Function_glBlendEquationSeparateOES = 18,
  GLMessage_Function_glBlendFunc = 19,
  GLMessage_Function_glBlendFuncSeparate = 20,
  GLMessage_Function_glBlendFuncSeparateOES = 21,
  GLMessage_Function_glBufferData = 22,
  GLMessage_Function_glBufferSubData = 23,
  GLMessage_Function_glCheckFramebufferStatus = 24,
  GLMessage_Function_glCheckFramebufferStatusOES = 25,
  GLMessage_Function_glClearColor = 26,
  GLMessage_Function_glClearColorx = 27,
  GLMessage_Function_glClearColorxOES = 28,
  GLMessage_Function_glClearDepthf = 29,
  GLMessage_Function_glClearDepthfOES = 30,
  GLMessage_Function_glClearDepthx = 31,
  GLMessage_Function_glClearDepthxOES = 32,
  GLMessage_Function_glClear = 33,
  GLMessage_Function_glClearStencil = 34,
  GLMessage_Function_glClientActiveTexture = 35,
  GLMessage_Function_glClipPlanef = 36,
  GLMessage_Function_glClipPlanefIMG = 37,
  GLMessage_Function_glClipPlanefOES = 38,
  GLMessage_Function_glClipPlanex = 39,
  GLMessage_Function_glClipPlanexIMG = 40,
  GLMessage_Function_glClipPlanexOES = 41,
  GLMessage_Function_glColor4f = 42,
  GLMessage_Function_glColor4ub = 43,
  GLMessage_Function_glColor4x = 44,
  GLMessage_Function_glColor4xOES = 45,
  GLMessage_Function_glColorMask = 46,
  GLMessage_Function_glColorPointer = 47,
  GLMessage_Function_glCompileShader = 48,
  GLMessage_Function_glCompressedTexImage2D = 49,
  GLMessage_Function_glCompressedTexImage3DOES = 50,
  GLMessage_Function_glCompressedTexSubImage2D = 51,
  GLMessage_Function_glCompressedTexSubImage3DOES = 52,
  GLMessage_Function_glCopyTexImage2D = 53,
  GLMessage_Function_glCopyTexSubImage2D = 54,
  GLMessage_Function_glCopyTexSubImage3DOES = 55,
  GLMessage_Function_glCoverageMaskNV = 56,
  GLMessage_Function_glCoverageOperationNV = 57,
  GLMessage_Function_glCreateProgram = 58,
  GLMessage_Function_glCreateShader = 59,
  GLMessage_Function_glCullFace = 60,
  GLMessage_Function_glCurrentPaletteMatrixOES = 61,
  GLMessage_Function_glDeleteBuffers = 62,
  GLMessage_Function_glDeleteFencesNV = 63,
  GLMessage_Function_glDeleteFramebuffers = 64,
  GLMessage_Function_glDeleteFramebuffersOES = 65,
  GLMessage_Function_glDeletePerfMonitorsAMD = 66,
  GLMessage_Function_glDeleteProgram = 67,
  GLMessage_Function_glDeleteRenderbuffers = 68,
  GLMessage_Function_glDeleteRenderbuffersOES = 69,
  GLMessage_Function_glDeleteShader = 70,
  GLMessage_Function_glDeleteTextures = 71,
  GLMessage_Function_glDeleteVertexArraysOES = 72,
  GLMessage_Function_glDepthFunc = 73,
  GLMessage_Function_glDepthMask = 74,
  GLMessage_Function_glDepthRangef = 75,
  GLMessage_Function_glDepthRangefOES = 76,
  GLMessage_Function_glDepthRangex = 77,
  GLMessage_Function_glDepthRangexOES = 78,
  GLMessage_Function_glDetachShader = 79,
  GLMessage_Function_glDisableClientState = 80,
  GLMessage_Function_glDisableDriverControlQCOM = 81,
  GLMessage_Function_glDisable = 82,
  GLMessage_Function_glDisableVertexAttribArray = 83,
  GLMessage_Function_glDiscardFramebufferEXT = 84,
  GLMessage_Function_glDrawArrays = 85,
  GLMessage_Function_glDrawElements = 86,
  GLMessage_Function_glDrawTexfOES = 87,
  GLMessage_Function_glDrawTexfvOES = 88,
  GLMessage_Function_glDrawTexiOES = 89,
  GLMessage_Function_glDrawTexivOES = 90,
  GLMessage_Function_glDrawTexsOES = 91,
  GLMessage_Function_glDrawTexsvOES = 92,
  GLMessage_Function_glDrawTexxOES = 93,
  GLMessage_Function_glDrawTexxvOES = 94,
  GLMessage_Function_glEGLImageTargetRenderbufferStorageOES = 95,
  GLMessage_Function_glEGLImageTargetTexture2DOES = 96,
  GLMessage_Function_glEnableClientState = 97,
  GLMessage_Function_glEnableDriverControlQCOM = 98,
  GLMessage_Function_glEnable = 99,
  GLMessage_Function_glEnableVertexAttribArray = 100,
  GLMessage_Function_glEndPerfMonitorAMD = 101,
  GLMessage_Function_glEndTilingQCOM = 102,
  GLMessage_Function_glExtGetBufferPointervQCOM = 103,
  GLMessage_Function_glExtGetBuffersQCOM = 104,
  GLMessage_Function_glExtGetFramebuffersQCOM = 105,
  GLMessage_Function_glExtGetProgramBinarySourceQCOM = 106,
  GLMessage_Function_glExtGetProgramsQCOM = 107,
  GLMessage_Function_glExtGetRenderbuffersQCOM = 108,
  GLMessage_Function_glExtGetShadersQCOM = 109,
  GLMessage_Function_glExtGetTexLevelParameterivQCOM = 110,
  GLMessage_Function_glExtGetTexSubImageQCOM = 111,
  GLMessage_Function_glExtGetTexturesQCOM = 112,
  GLMessage_Function_glExtIsProgramBinaryQCOM = 113,
  GLMessage_Function_glExtTexObjectStateOverrideiQCOM = 114,
  GLMessage_Function_glFinishFenceNV = 115,
  GLMessage_Function_glFinish = 116,
  GLMessage_Function_glFlush = 117,
  GLMessage_Function_glFogf = 118,
  GLMessage_Function_glFogfv = 119,
  GLMessage_Function_glFogx = 120,
  GLMessage_Function_glFogxOES = 121,
  GLMessage_Function_glFogxv = 122,
  GLMessage_Function_glFogxvOES = 123,
  GLMessage_Function_glFramebufferRenderbuffer = 124,
  GLMessage_Function_glFramebufferRenderbufferOES = 125,
  GLMessage_Function_glFramebufferTexture2D = 126,
  GLMessage_Function_glFramebufferTexture2DMultisampleIMG = 127,
  GLMessage_Function_glFramebufferTexture2DOES = 128,
  GLMessage_Function_glFramebufferTexture3DOES = 129,
  GLMessage_Function_glFrontFace = 130,
  GLMessage_Function_glFrustumf = 131,
  GLMessage_Function_glFrustumfOES = 132,
  GLMessage_Function_glFrustumx = 133,
  GLMessage_Function_glFrustumxOES = 134,
  GLMessage_Function_glGenBuffers = 135,
  GLMessage_Function_glGenerateMipmap = 136,
  GLMessage_Function_glGenerateMipmapOES = 137,
  GLMessage_Function_glGenFencesNV = 138,
  GLMessage_Function_glGenFramebuffers = 139,
  GLMessage_Function_glGenFramebuffersOES = 140,
  GLMessage_Function_glGenPerfMonitorsAMD = 141,
  GLMessage_Function_glGenRenderbuffers = 142,
  GLMessage_Function_glGenRenderbuffersOES = 143,
  GLMessage_Function_glGenTextures = 144,
  GLMessage_Function_glGenVertexArraysOES = 145,
  GLMessage_Function_glGetActiveAttrib = 146,
  GLMessage_Function_glGetActiveUniform = 147,
  GLMessage_Function_glGetAttachedShaders = 148,
  GLMessage_Function_glGetAttribLocation = 149,
  GLMessage_Function_glGetBooleanv = 150,
  GLMessage_Function_glGetBufferParameteriv = 151,
  GLMessage_Function_glGetBufferPointervOES = 152,
  GLMessage_Function_glGetClipPlanef = 153,
  GLMessage_Function_glGetClipPlanefOES = 154,
  GLMessage_Function_glGetClipPlanex = 155,
  GLMessage_Function_glGetClipPlanexOES = 156,
  GLMessage_Function_glGetDriverControlsQCOM = 157,
  GLMessage_Function_glGetDriverControlStringQCOM = 158,
  GLMessage_Function_glGetError = 159,
  GLMessage_Function_glGetFenceivNV = 160,
  GLMessage_Function_glGetFixedv = 161,
  GLMessage_Function_glGetFixedvOES = 162,
  GLMessage_Function_glGetFloatv = 163,
  GLMessage_Function_glGetFramebufferAttachmentParameteriv = 164,
  GLMessage_Function_glGetFramebufferAttachmentParameterivOES = 165,
  GLMessage_Function_glGetIntegerv = 166,
  GLMessage_Function_glGetLightfv = 167,
  GLMessage_Function_glGetLightxv = 168,
  GLMessage_Function_glGetLightxvOES = 169,
  GLMessage_Function_glGetMaterialfv = 170,
  GLMessage_Function_glGetMaterialxv = 171,
  GLMessage_Function_glGetMaterialxvOES = 172,
  GLMessage_Function_glGetPerfMonitorCounterDataAMD = 173,
  GLMessage_Function_glGetPerfMonitorCounterInfoAMD = 174,
  GLMessage_Function_glGetPerfMonitorCountersAMD = 175,
  GLMessage_Function_glGetPerfMonitorCounterStringAMD = 176,
  GLMessage_Function_glGetPerfMonitorGroupsAMD = 177,
  GLMessage_Function_glGetPerfMonitorGroupStringAMD = 178,
  GLMessage_Function_glGetPointerv = 179,
  GLMessage_Function_glGetProgramBinaryOES = 180,
  GLMessage_Function_glGetProgramInfoLog = 181,
  GLMessage_Function_glGetProgramiv = 182,
  GLMessage_Function_glGetRenderbufferParameteriv = 183,
  GLMessage_Function_glGetRenderbufferParameterivOES = 184,
  GLMessage_Function_glGetShaderInfoLog = 185,
  GLMessage_Function_glGetShaderiv = 186,
  GLMessage_Function_glGetShaderPrecisionFormat = 187,
  GLMessage_Function_glGetShaderSource = 188,
  GLMessage_Function_glGetString = 189,
  GLMessage_Function_glGetTexEnvfv = 190,
  GLMessage_Function_glGetTexEnviv = 191,
  GLMessage_Function_glGetTexEnvxv = 192,
  GLMessage_Function_glGetTexEnvxvOES = 193,
  GLMessage_Function_glGetTexGenfvOES = 194,
  GLMessage_Function_glGetTexGenivOES = 195,
  GLMessage_Function_glGetTexGenxvOES = 196,
  GLMessage_Function_glGetTexParameterfv = 197,
  GLMessage_Function_glGetTexParameteriv = 198,
  GLMessage_Function_glGetTexParameterxv = 199,
  GLMessage_Function_glGetTexParameterxvOES = 200,
  GLMessage_Function_glGetUniformfv = 201,
  GLMessage_Function_glGetUniformiv = 202,
  GLMessage_Function_glGetUniformLocation = 203,
  GLMessage_Function_glGetVertexAttribfv = 204,
  GLMessage_Function_glGetVertexAttribiv = 205,
  GLMessage_Function_glGetVertexAttribPointerv = 206,
  GLMessage_Function_glHint = 207,
  GLMessage_Function_glIsBuffer = 208,
  GLMessage_Function_glIsEnabled = 209,
  GLMessage_Function_glIsFenceNV = 210,
  GLMessage_Function_glIsFramebuffer = 211,
  GLMessage_Function_glIsFramebufferOES = 212,
  GLMessage_Function_glIsProgram = 213,
  GLMessage_Function_glIsRenderbuffer = 214,
  GLMessage_Function_glIsRenderbufferOES = 215,
  GLMessage_Function_glIsShader = 216,
  GLMessage_Function_glIsTexture = 217,
  GLMessage_Function_glIsVertexArrayOES = 218,
  GLMessage_Function_glLightf = 219,
  GLMessage_Function_glLightfv = 220,
  GLMessage_Function_glLightModelf = 221,
  GLMessage_Function_glLightModelfv = 222,
  GLMessage_Function_glLightModelx = 223,
  GLMessage_Function_glLightModelxOES = 224,
  GLMessage_Function_glLightModelxv = 225,
  GLMessage_Function_glLightModelxvOES = 226,
  GLMessage_Function_glLightx = 227,
  GLMessage_Function_glLightxOES = 228,
  GLMessage_Function_glLightxv = 229,
  GLMessage_Function_glLightxvOES = 230,
  GLMessage_Function_glLineWidth = 231,
  GLMessage_Function_glLineWidthx = 232,
  GLMessage_Function_glLineWidthxOES = 233,
  GLMessage_Function_glLinkProgram = 234,
  GLMessage_Function_glLoadIdentity = 235,
  GLMessage_Function_glLoadMatrixf = 236,
  GLMessage_Function_glLoadMatrixx = 237,
  GLMessage_Function_glLoadMatrixxOES = 238,
  GLMessage_Function_glLoadPaletteFromModelViewMatrixOES = 239,
  GLMessage_Function_glLogicOp = 240,
  GLMessage_Function_glMapBufferOES = 241,
  GLMessage_Function_glMaterialf = 242,
  GLMessage_Function_glMaterialfv = 243,
  GLMessage_Function_glMaterialx = 244,
  GLMessage_Function_glMaterialxOES = 245,
  GLMessage_Function_glMaterialxv = 246,
  GLMessage_Function_glMaterialxvOES = 247,
  GLMessage_Function_glMatrixIndexPointerOES = 248,
  GLMessage_Function_glMatrixMode = 249,
  GLMessage_Function_glMultiDrawArraysEXT = 250,
  GLMessage_Function_glMultiDrawElementsEXT = 251,
  GLMessage_Function_glMultiTexCoord4f = 252,
  GLMessage_Function_glMultiTexCoord4x = 253,
  GLMessage_Function_glMultiTexCoord4xOES = 254,
  GLMessage_Function_glMultMatrixf = 255,
  GLMessage_Function_glMultMatrixx = 256,
  GLMessage_Function_glMultMatrixxOES = 257,
  GLMessage_Function_glNormal3f = 258,
  GLMessage_Function_glNormal3x = 259,
  GLMessage_Function_glNormal3xOES = 260,
  GLMessage_Function_glNormalPointer = 261,
  GLMessage_Function_glOrthof = 262,
  GLMessage_Function_glOrthofOES = 263,
  GLMessage_Function_glOrthox = 264,
  GLMessage_Function_glOrthoxOES = 265,
  GLMessage_Function_glPixelStorei = 266,
  GLMessage_Function_glPointParameterf = 267,
  GLMessage_Function_glPointParameterfv = 268,
  GLMessage_Function_glPointParameterx = 269,
  GLMessage_Function_glPointParameterxOES = 270,
  GLMessage_Function_glPointParameterxv = 271,
  GLMessage_Function_glPointParameterxvOES = 272,
  GLMessage_Function_glPointSize = 273,
  GLMessage_Function_glPointSizePointerOES = 274,
  GLMessage_Function_glPointSizex = 275,
  GLMessage_Function_glPointSizexOES = 276,
  GLMessage_Function_glPolygonOffset = 277,
  GLMessage_Function_glPolygonOffsetx = 278,
  GLMessage_Function_glPolygonOffsetxOES = 279,
  GLMessage_Function_glPopMatrix = 280,
  GLMessage_Function_glProgramBinaryOES = 281,
  GLMessage_Function_glPushMatrix = 282,
  GLMessage_Function_glQueryMatrixxOES = 283,
  GLMessage_Function_glReadPixels = 284,
  GLMessage_Function_glReleaseShaderCompiler = 285,
  GLMessage_Function_glRenderbufferStorage = 286,
  GLMessage_Function_glRenderbufferStorageMultisampleIMG = 287,
  GLMessage_Function_glRenderbufferStorageOES = 288,
  GLMessage_Function_glRotatef = 289,
  GLMessage_Function_glRotatex = 290,
  GLMessage_Function_glRotatexOES = 291,
  GLMessage_Function_glSampleCoverage = 292,
  GLMessage_Function_glSampleCoveragex = 293,
  GLMessage_Function_glSampleCoveragexOES = 294,
  GLMessage_Function_glScalef = 295,
  GLMessage_Function_glScalex = 296,
  GLMessage_Function_glScalexOES = 297,
  GLMessage_Function_glScissor = 298,
  GLMessage_Function_glSelectPerfMonitorCountersAMD = 299,
  GLMessage_Function_glSetFenceNV = 300,
  GLMessage_Function_glShadeModel = 301,
  GLMessage_Function_glShaderBinary = 302,
  GLMessage_Function_glShaderSource = 303,
  GLMessage_Function_glStartTilingQCOM = 304,
  GLMessage_Function_glStencilFunc = 305,
  GLMessage_Function_glStencilFuncSeparate = 306,
  GLMessage_Function_glStencilMask = 307,
  GLMessage_Function_glStencilMaskSeparate = 308,
  GLMessage_Function_glStencilOp = 309,
  GLMessage_Function_glStencilOpSeparate = 310,
  GLMessage_Function_glTestFenceNV = 311,
  GLMessage_Function_glTexCoordPointer = 312,
  GLMessage_Function_glTexEnvf = 313,
  GLMessage_Function_glTexEnvfv = 314,
  GLMessage_Function_glTexEnvi = 315,
  GLMessage_Function_glTexEnviv = 316,
  GLMessage_Function_glTexEnvx = 317,
  GLMessage_Function_glTexEnvxOES = 318,
  GLMessage_Function_glTexEnvxv = 319,
  GLMessage_Function_glTexEnvxvOES = 320,
  GLMessage_Function_glTexGenfOES = 321,
  GLMessage_Function_glTexGenfvOES = 322,
  GLMessage_Function_glTexGeniOES = 323,
  GLMessage_Function_glTexGenivOES = 324,
  GLMessage_Function_glTexGenxOES = 325,
  GLMessage_Function_glTexGenxvOES = 326,
  GLMessage_Function_glTexImage2D = 327,
  GLMessage_Function_glTexImage3DOES = 328,
  GLMessage_Function_glTexParameterf = 329,
  GLMessage_Function_glTexParameterfv = 330,
  GLMessage_Function_glTexParameteri = 331,
  GLMessage_Function_glTexParameteriv = 332,
  GLMessage_Function_glTexParameterx = 333,
  GLMessage_Function_glTexParameterxOES = 334,
  GLMessage_Function_glTexParameterxv = 335,
  GLMessage_Function_glTexParameterxvOES = 336,
  GLMessage_Function_glTexSubImage2D = 337,
  GLMessage_Function_glTexSubImage3DOES = 338,
  GLMessage_Function_glTranslatef = 339,
  GLMessage_Function_glTranslatex = 340,
  GLMessage_Function_glTranslatexOES = 341,
  GLMessage_Function_glUniform1f = 342,
  GLMessage_Function_glUniform1fv = 343,
  GLMessage_Function_glUniform1i = 344,
  GLMessage_Function_glUniform1iv = 345,
  GLMessage_Function_glUniform2f = 346,
  GLMessage_Function_glUniform2fv = 347,
  GLMessage_Function_glUniform2i = 348,
  GLMessage_Function_glUniform2iv = 349,
  GLMessage_Function_glUniform3f = 350,
  GLMessage_Function_glUniform3fv = 351,
  GLMessage_Function_glUniform3i = 352,
  GLMessage_Function_glUniform3iv = 353,
  GLMessage_Function_glUniform4f = 354,
  GLMessage_Function_glUniform4fv = 355,
  GLMessage_Function_glUniform4i = 356,
  GLMessage_Function_glUniform4iv = 357,
  GLMessage_Function_glUniformMatrix2fv = 358,
  GLMessage_Function_glUniformMatrix3fv = 359,
  GLMessage_Function_glUniformMatrix4fv = 360,
  GLMessage_Function_glUnmapBufferOES = 361,
  GLMessage_Function_glUseProgram = 362,
  GLMessage_Function_glValidateProgram = 363,
  GLMessage_Function_glVertexAttrib1f = 364,
  GLMessage_Function_glVertexAttrib1fv = 365,
  GLMessage_Function_glVertexAttrib2f = 366,
  GLMessage_Function_glVertexAttrib2fv = 367,
  GLMessage_Function_glVertexAttrib3f = 368,
  GLMessage_Function_glVertexAttrib3fv = 369,
  GLMessage_Function_glVertexAttrib4f = 370,
  GLMessage_Function_glVertexAttrib4fv = 371,
  GLMessage_Function_glVertexAttribPointer = 372,
  GLMessage_Function_glVertexPointer = 373,
  GLMessage_Function_glViewport = 374,
  GLMessage_Function_glWeightPointerOES = 375,
  GLMessage_Function_glActiveShaderProgramEXT = 502,
  GLMessage_Function_glAlphaFuncQCOM = 503,
  GLMessage_Function_glBeginQueryEXT = 504,
  GLMessage_Function_glBindProgramPipelineEXT = 505,
  GLMessage_Function_glBlitFramebufferANGLE = 506,
  GLMessage_Function_glCreateShaderProgramvEXT = 507,
  GLMessage_Function_glDeleteProgramPipelinesEXT = 508,
  GLMessage_Function_glDeleteQueriesEXT = 509,
  GLMessage_Function_glDrawBuffersNV = 510,
  GLMessage_Function_glEndQueryEXT = 511,
  GLMessage_Function_glFramebufferTexture2DMultisampleEXT = 512,
  GLMessage_Function_glGenProgramPipelinesEXT = 513,
  GLMessage_Function_glGenQueriesEXT = 514,
  GLMessage_Function_glGetGraphicsResetStatusEXT = 515,
  GLMessage_Function_glGetObjectLabelEXT = 516,
  GLMessage_Function_glGetProgramPipelineInfoLogEXT = 517,
  GLMessage_Function_glGetProgramPipelineivEXT = 518,
  GLMessage_Function_glGetQueryObjectuivEXT = 519,
  GLMessage_Function_glGetQueryivEXT = 520,
  GLMessage_Function_glGetnUniformfvEXT = 521,
  GLMessage_Function_glGetnUniformivEXT = 521,
  GLMessage_Function_glInsertEventMarkerEXT = 522,
  GLMessage_Function_glIsProgramPipelineEXT = 523,
  GLMessage_Function_glIsQueryEXT = 524,
  GLMessage_Function_glLabelObjectEXT = 525,
  GLMessage_Function_glPopGroupMarkerEXT = 526,
  GLMessage_Function_glProgramParameteriEXT = 527,
  GLMessage_Function_glProgramUniform1fEXT = 528,
  GLMessage_Function_glProgramUniform1fvEXT = 529,
  GLMessage_Function_glProgramUniform1iEXT = 530,
  GLMessage_Function_glProgramUniform1ivEXT = 531,
  GLMessage_Function_glProgramUniform2fEXT = 532,
  GLMessage_Function_glProgramUniform2fvEXT = 533,
  GLMessage_Function_glProgramUniform2iEXT = 534,
  GLMessage_Function_glProgramUniform2ivEXT = 535,
  GLMessage_Function_glProgramUniform3fEXT = 536,
  GLMessage_Function_glProgramUniform3fvEXT = 537,
  GLMessage_Function_glProgramUniform3iEXT = 538,
  GLMessage_Function_glProgramUniform3ivEXT = 539,
  GLMessage_Function_glProgramUniform4fEXT = 540,
  GLMessage_Function_glProgramUniform4fvEXT = 541,
  GLMessage_Function_glProgramUniform4iEXT = 542,
  GLMessage_Function_glProgramUniform4ivEXT = 543,
  GLMessage_Function_glProgramUniformMatrix2fvEXT = 544,
  GLMessage_Function_glProgramUniformMatrix3fvEXT = 545,
  GLMessage_Function_glProgramUniformMatrix4fvEXT = 546,
  GLMessage_Function_glPushGroupMarkerEXT = 547,
  GLMessage_Function_glReadBufferNV = 548,
  GLMessage_Function_glReadnPixelsEXT = 549,
  GLMessage_Function_glRenderbufferStorageMultisampleANGLE = 550,
  GLMessage_Function_glRenderbufferStorageMultisampleAPPLE = 551,
  GLMessage_Function_glRenderbufferStorageMultisampleEXT = 552,
  GLMessage_Function_glResolveMultisampleFramebufferAPPLE = 553,
  GLMessage_Function_glTexStorage1DEXT = 554,
  GLMessage_Function_glTexStorage2DEXT = 555,
  GLMessage_Function_glTexStorage3DEXT = 556,
  GLMessage_Function_glTextureStorage1DEXT = 557,
  GLMessage_Function_glTextureStorage2DEXT = 558,
  GLMessage_Function_glTextureStorage3DEXT = 559,
  GLMessage_Function_glUseProgramStagesEXT = 560,
  GLMessage_Function_glValidateProgramPipelineEXT = 561,
  GLMessage_Function_eglGetDisplay = 2000,
  GLMessage_Function_eglInitialize = 2001,
  GLMessage_Function_eglTerminate = 2002,
  GLMessage_Function_eglGetConfigs = 2003,
  GLMessage_Function_eglChooseConfig = 2004,
  GLMessage_Function_eglGetConfigAttrib = 2005,
  GLMessage_Function_eglCreateWindowSurface = 2006,
  GLMessage_Function_eglCreatePixmapSurface = 2007,
  GLMessage_Function_eglCreatePbufferSurface = 2008,
  GLMessage_Function_eglDestroySurface = 2009,
  GLMessage_Function_eglQuerySurface = 2010,
  GLMessage_Function_eglCreateContext = 2011,
  GLMessage_Function_eglDestroyContext = 2012,
  GLMessage_Function_eglMakeCurrent = 2013,
  GLMessage_Function_eglGetCurrentContext = 2014,
  GLMessage_Function_eglGetCurrentSurface = 2015,
  GLMessage_Function_eglGetCurrentDisplay = 2016,
  GLMessage_Function_eglQueryContext = 2017,
  GLMessage_Function_eglWaitGL = 2018,
  GLMessage_Function_eglWaitNative = 2019,
  GLMessage_Function_eglSwapBuffers = 2020,
  GLMessage_Function_eglCopyBuffers = 2021,
  GLMessage_Function_eglGetError = 2022,
  GLMessage_Function_eglQueryString = 2023,
  GLMessage_Function_eglGetProcAddress = 2024,
  GLMessage_Function_eglSurfaceAttrib = 2025,
  GLMessage_Function_eglBindTexImage = 2026,
  GLMessage_Function_eglReleaseTexImage = 2027,
  GLMessage_Function_eglSwapInterval = 2028,
  GLMessage_Function_eglBindAPI = 2029,
  GLMessage_Function_eglQueryAPI = 2030,
  GLMessage_Function_eglWaitClient = 2031,
  GLMessage_Function_eglReleaseThread = 2032,
  GLMessage_Function_eglCreatePbufferFromClientBuffer = 2033,
  GLMessage_Function_eglLockSurfaceKHR = 2034,
  GLMessage_Function_eglUnlockSurfaceKHR = 2035,
  GLMessage_Function_eglCreateImageKHR = 2036,
  GLMessage_Function_eglDestroyImageKHR = 2037,
  GLMessage_Function_eglCreateSyncKHR = 2038,
  GLMessage_Function_eglDestroySyncKHR = 2039,
  GLMessage_Function_eglClientWaitSyncKHR = 2040,
  GLMessage_Function_eglGetSyncAttribKHR = 2041,
  GLMessage_Function_eglSetSwapRectangleANDROID = 2042,
  GLMessage_Function_eglGetRenderBufferANDROID = 2043,
  GLMessage_Function_eglGetSystemTimeFrequencyNV = 2044,
  GLMessage_Function_eglGetSystemTimeNV = 2045,
  GLMessage_Function_invalid = 3000,
  GLMessage_Function_glVertexAttribPointerData = 3001
};
bool GLMessage_Function_IsValid(int value);
const GLMessage_Function GLMessage_Function_Function_MIN = GLMessage_Function_glActiveTexture;
const GLMessage_Function GLMessage_Function_Function_MAX = GLMessage_Function_glVertexAttribPointerData;
const int GLMessage_Function_Function_ARRAYSIZE = GLMessage_Function_Function_MAX + 1;

// ===================================================================

class GLMessage_DataType : public ::google::protobuf::MessageLite {
 public:
  GLMessage_DataType();
  virtual ~GLMessage_DataType();
  
  GLMessage_DataType(const GLMessage_DataType& from);
  
  inline GLMessage_DataType& operator=(const GLMessage_DataType& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const GLMessage_DataType& default_instance();
  
  void Swap(GLMessage_DataType* other);
  
  // implements Message ----------------------------------------------
  
  GLMessage_DataType* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const GLMessage_DataType& from);
  void MergeFrom(const GLMessage_DataType& from);
  void Clear();
  bool IsInitialized() const;
  
  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  
  ::std::string GetTypeName() const;
  
  // nested types ----------------------------------------------------
  
  typedef GLMessage_DataType_Type Type;
  static const Type VOID = GLMessage_DataType_Type_VOID;
  static const Type CHAR = GLMessage_DataType_Type_CHAR;
  static const Type BYTE = GLMessage_DataType_Type_BYTE;
  static const Type INT = GLMessage_DataType_Type_INT;
  static const Type FLOAT = GLMessage_DataType_Type_FLOAT;
  static const Type BOOL = GLMessage_DataType_Type_BOOL;
  static const Type ENUM = GLMessage_DataType_Type_ENUM;
  static inline bool Type_IsValid(int value) {
    return GLMessage_DataType_Type_IsValid(value);
  }
  static const Type Type_MIN =
    GLMessage_DataType_Type_Type_MIN;
  static const Type Type_MAX =
    GLMessage_DataType_Type_Type_MAX;
  static const int Type_ARRAYSIZE =
    GLMessage_DataType_Type_Type_ARRAYSIZE;
  
  // accessors -------------------------------------------------------
  
  // required .android.gltrace.GLMessage.DataType.Type type = 1 [default = VOID];
  inline bool has_type() const;
  inline void clear_type();
  static const int kTypeFieldNumber = 1;
  inline ::android::gltrace::GLMessage_DataType_Type type() const;
  inline void set_type(::android::gltrace::GLMessage_DataType_Type value);
  
  // required bool isArray = 2 [default = false];
  inline bool has_isarray() const;
  inline void clear_isarray();
  static const int kIsArrayFieldNumber = 2;
  inline bool isarray() const;
  inline void set_isarray(bool value);
  
  // repeated int32 intValue = 3;
  inline int intvalue_size() const;
  inline void clear_intvalue();
  static const int kIntValueFieldNumber = 3;
  inline ::google::protobuf::int32 intvalue(int index) const;
  inline void set_intvalue(int index, ::google::protobuf::int32 value);
  inline void add_intvalue(::google::protobuf::int32 value);
  inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
      intvalue() const;
  inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
      mutable_intvalue();
  
  // repeated float floatValue = 4;
  inline int floatvalue_size() const;
  inline void clear_floatvalue();
  static const int kFloatValueFieldNumber = 4;
  inline float floatvalue(int index) const;
  inline void set_floatvalue(int index, float value);
  inline void add_floatvalue(float value);
  inline const ::google::protobuf::RepeatedField< float >&
      floatvalue() const;
  inline ::google::protobuf::RepeatedField< float >*
      mutable_floatvalue();
  
  // repeated bytes charValue = 5;
  inline int charvalue_size() const;
  inline void clear_charvalue();
  static const int kCharValueFieldNumber = 5;
  inline const ::std::string& charvalue(int index) const;
  inline ::std::string* mutable_charvalue(int index);
  inline void set_charvalue(int index, const ::std::string& value);
  inline void set_charvalue(int index, const char* value);
  inline void set_charvalue(int index, const void* value, size_t size);
  inline ::std::string* add_charvalue();
  inline void add_charvalue(const ::std::string& value);
  inline void add_charvalue(const char* value);
  inline void add_charvalue(const void* value, size_t size);
  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& charvalue() const;
  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_charvalue();
  
  // repeated bytes rawBytes = 6;
  inline int rawbytes_size() const;
  inline void clear_rawbytes();
  static const int kRawBytesFieldNumber = 6;
  inline const ::std::string& rawbytes(int index) const;
  inline ::std::string* mutable_rawbytes(int index);
  inline void set_rawbytes(int index, const ::std::string& value);
  inline void set_rawbytes(int index, const char* value);
  inline void set_rawbytes(int index, const void* value, size_t size);
  inline ::std::string* add_rawbytes();
  inline void add_rawbytes(const ::std::string& value);
  inline void add_rawbytes(const char* value);
  inline void add_rawbytes(const void* value, size_t size);
  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& rawbytes() const;
  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_rawbytes();
  
  // repeated bool boolValue = 7;
  inline int boolvalue_size() const;
  inline void clear_boolvalue();
  static const int kBoolValueFieldNumber = 7;
  inline bool boolvalue(int index) const;
  inline void set_boolvalue(int index, bool value);
  inline void add_boolvalue(bool value);
  inline const ::google::protobuf::RepeatedField< bool >&
      boolvalue() const;
  inline ::google::protobuf::RepeatedField< bool >*
      mutable_boolvalue();
  
  // @@protoc_insertion_point(class_scope:android.gltrace.GLMessage.DataType)
 private:
  mutable int _cached_size_;
  
  int type_;
  bool isarray_;
  ::google::protobuf::RepeatedField< ::google::protobuf::int32 > intvalue_;
  ::google::protobuf::RepeatedField< float > floatvalue_;
  ::google::protobuf::RepeatedPtrField< ::std::string> charvalue_;
  ::google::protobuf::RepeatedPtrField< ::std::string> rawbytes_;
  ::google::protobuf::RepeatedField< bool > boolvalue_;
  friend void  protobuf_AddDesc_gltrace_2eproto();
  friend void protobuf_AssignDesc_gltrace_2eproto();
  friend void protobuf_ShutdownFile_gltrace_2eproto();
  
  ::google::protobuf::uint32 _has_bits_[(7 + 31) / 32];
  
  // WHY DOES & HAVE LOWER PRECEDENCE THAN != !?
  inline bool _has_bit(int index) const {
    return (_has_bits_[index / 32] & (1u << (index % 32))) != 0;
  }
  inline void _set_bit(int index) {
    _has_bits_[index / 32] |= (1u << (index % 32));
  }
  inline void _clear_bit(int index) {
    _has_bits_[index / 32] &= ~(1u << (index % 32));
  }
  
  void InitAsDefaultInstance();
  static GLMessage_DataType* default_instance_;
};
// -------------------------------------------------------------------

class GLMessage_FrameBuffer : public ::google::protobuf::MessageLite {
 public:
  GLMessage_FrameBuffer();
  virtual ~GLMessage_FrameBuffer();
  
  GLMessage_FrameBuffer(const GLMessage_FrameBuffer& from);
  
  inline GLMessage_FrameBuffer& operator=(const GLMessage_FrameBuffer& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const GLMessage_FrameBuffer& default_instance();
  
  void Swap(GLMessage_FrameBuffer* other);
  
  // implements Message ----------------------------------------------
  
  GLMessage_FrameBuffer* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const GLMessage_FrameBuffer& from);
  void MergeFrom(const GLMessage_FrameBuffer& from);
  void Clear();
  bool IsInitialized() const;
  
  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  
  ::std::string GetTypeName() const;
  
  // nested types ----------------------------------------------------
  
  // accessors -------------------------------------------------------
  
  // required int32 width = 1;
  inline bool has_width() const;
  inline void clear_width();
  static const int kWidthFieldNumber = 1;
  inline ::google::protobuf::int32 width() const;
  inline void set_width(::google::protobuf::int32 value);
  
  // required int32 height = 2;
  inline bool has_height() const;
  inline void clear_height();
  static const int kHeightFieldNumber = 2;
  inline ::google::protobuf::int32 height() const;
  inline void set_height(::google::protobuf::int32 value);
  
  // repeated bytes contents = 3;
  inline int contents_size() const;
  inline void clear_contents();
  static const int kContentsFieldNumber = 3;
  inline const ::std::string& contents(int index) const;
  inline ::std::string* mutable_contents(int index);
  inline void set_contents(int index, const ::std::string& value);
  inline void set_contents(int index, const char* value);
  inline void set_contents(int index, const void* value, size_t size);
  inline ::std::string* add_contents();
  inline void add_contents(const ::std::string& value);
  inline void add_contents(const char* value);
  inline void add_contents(const void* value, size_t size);
  inline const ::google::protobuf::RepeatedPtrField< ::std::string>& contents() const;
  inline ::google::protobuf::RepeatedPtrField< ::std::string>* mutable_contents();
  
  // @@protoc_insertion_point(class_scope:android.gltrace.GLMessage.FrameBuffer)
 private:
  mutable int _cached_size_;
  
  ::google::protobuf::int32 width_;
  ::google::protobuf::int32 height_;
  ::google::protobuf::RepeatedPtrField< ::std::string> contents_;
  friend void  protobuf_AddDesc_gltrace_2eproto();
  friend void protobuf_AssignDesc_gltrace_2eproto();
  friend void protobuf_ShutdownFile_gltrace_2eproto();
  
  ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32];
  
  // WHY DOES & HAVE LOWER PRECEDENCE THAN != !?
  inline bool _has_bit(int index) const {
    return (_has_bits_[index / 32] & (1u << (index % 32))) != 0;
  }
  inline void _set_bit(int index) {
    _has_bits_[index / 32] |= (1u << (index % 32));
  }
  inline void _clear_bit(int index) {
    _has_bits_[index / 32] &= ~(1u << (index % 32));
  }
  
  void InitAsDefaultInstance();
  static GLMessage_FrameBuffer* default_instance_;
};
// -------------------------------------------------------------------

class GLMessage : public ::google::protobuf::MessageLite {
 public:
  GLMessage();
  virtual ~GLMessage();
  
  GLMessage(const GLMessage& from);
  
  inline GLMessage& operator=(const GLMessage& from) {
    CopyFrom(from);
    return *this;
  }
  
  static const GLMessage& default_instance();
  
  void Swap(GLMessage* other);
  
  // implements Message ----------------------------------------------
  
  GLMessage* New() const;
  void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from);
  void CopyFrom(const GLMessage& from);
  void MergeFrom(const GLMessage& from);
  void Clear();
  bool IsInitialized() const;
  
  int ByteSize() const;
  bool MergePartialFromCodedStream(
      ::google::protobuf::io::CodedInputStream* input);
  void SerializeWithCachedSizes(
      ::google::protobuf::io::CodedOutputStream* output) const;
  int GetCachedSize() const { return _cached_size_; }
  private:
  void SharedCtor();
  void SharedDtor();
  void SetCachedSize(int size) const;
  public:
  
  ::std::string GetTypeName() const;
  
  // nested types ----------------------------------------------------
  
  typedef GLMessage_DataType DataType;
  typedef GLMessage_FrameBuffer FrameBuffer;
  
  typedef GLMessage_Function Function;
  static const Function glActiveTexture = GLMessage_Function_glActiveTexture;
  static const Function glAlphaFunc = GLMessage_Function_glAlphaFunc;
  static const Function glAlphaFuncx = GLMessage_Function_glAlphaFuncx;
  static const Function glAlphaFuncxOES = GLMessage_Function_glAlphaFuncxOES;
  static const Function glAttachShader = GLMessage_Function_glAttachShader;
  static const Function glBeginPerfMonitorAMD = GLMessage_Function_glBeginPerfMonitorAMD;
  static const Function glBindAttribLocation = GLMessage_Function_glBindAttribLocation;
  static const Function glBindBuffer = GLMessage_Function_glBindBuffer;
  static const Function glBindFramebuffer = GLMessage_Function_glBindFramebuffer;
  static const Function glBindFramebufferOES = GLMessage_Function_glBindFramebufferOES;
  static const Function glBindRenderbuffer = GLMessage_Function_glBindRenderbuffer;
  static const Function glBindRenderbufferOES = GLMessage_Function_glBindRenderbufferOES;
  static const Function glBindTexture = GLMessage_Function_glBindTexture;
  static const Function glBindVertexArrayOES = GLMessage_Function_glBindVertexArrayOES;
  static const Function glBlendColor = GLMessage_Function_glBlendColor;
  static const Function glBlendEquation = GLMessage_Function_glBlendEquation;
  static const Function glBlendEquationOES = GLMessage_Function_glBlendEquationOES;
  static const Function glBlendEquationSeparate = GLMessage_Function_glBlendEquationSeparate;
  static const Function glBlendEquationSeparateOES = GLMessage_Function_glBlendEquationSeparateOES;
  static const Function glBlendFunc = GLMessage_Function_glBlendFunc;
  static const Function glBlendFuncSeparate = GLMessage_Function_glBlendFuncSeparate;
  static const Function glBlendFuncSeparateOES = GLMessage_Function_glBlendFuncSeparateOES;
  static const Function glBufferData = GLMessage_Function_glBufferData;
  static const Function glBufferSubData = GLMessage_Function_glBufferSubData;
  static const Function glCheckFramebufferStatus = GLMessage_Function_glCheckFramebufferStatus;
  static const Function glCheckFramebufferStatusOES = GLMessage_Function_glCheckFramebufferStatusOES;
  static const Function glClearColor = GLMessage_Function_glClearColor;
  static const Function glClearColorx = GLMessage_Function_glClearColorx;
  static const Function glClearColorxOES = GLMessage_Function_glClearColorxOES;
  static const Function glClearDepthf = GLMessage_Function_glClearDepthf;
  static const Function glClearDepthfOES = GLMessage_Function_glClearDepthfOES;
  static const Function glClearDepthx = GLMessage_Function_glClearDepthx;
  static const Function glClearDepthxOES = GLMessage_Function_glClearDepthxOES;
  static const Function glClear = GLMessage_Function_glClear;
  static const Function glClearStencil = GLMessage_Function_glClearStencil;
  static const Function glClientActiveTexture = GLMessage_Function_glClientActiveTexture;
  static const Function glClipPlanef = GLMessage_Function_glClipPlanef;
  static const Function glClipPlanefIMG = GLMessage_Function_glClipPlanefIMG;
  static const Function glClipPlanefOES = GLMessage_Function_glClipPlanefOES;
  static const Function glClipPlanex = GLMessage_Function_glClipPlanex;
  static const Function glClipPlanexIMG = GLMessage_Function_glClipPlanexIMG;
  static const Function glClipPlanexOES = GLMessage_Function_glClipPlanexOES;
  static const Function glColor4f = GLMessage_Function_glColor4f;
  static const Function glColor4ub = GLMessage_Function_glColor4ub;
  static const Function glColor4x = GLMessage_Function_glColor4x;
  static const Function glColor4xOES = GLMessage_Function_glColor4xOES;
  static const Function glColorMask = GLMessage_Function_glColorMask;
  static const Function glColorPointer = GLMessage_Function_glColorPointer;
  static const Function glCompileShader = GLMessage_Function_glCompileShader;
  static const Function glCompressedTexImage2D = GLMessage_Function_glCompressedTexImage2D;
  static const Function glCompressedTexImage3DOES = GLMessage_Function_glCompressedTexImage3DOES;
  static const Function glCompressedTexSubImage2D = GLMessage_Function_glCompressedTexSubImage2D;
  static const Function glCompressedTexSubImage3DOES = GLMessage_Function_glCompressedTexSubImage3DOES;
  static const Function glCopyTexImage2D = GLMessage_Function_glCopyTexImage2D;
  static const Function glCopyTexSubImage2D = GLMessage_Function_glCopyTexSubImage2D;
  static const Function glCopyTexSubImage3DOES = GLMessage_Function_glCopyTexSubImage3DOES;
  static const Function glCoverageMaskNV = GLMessage_Function_glCoverageMaskNV;
  static const Function glCoverageOperationNV = GLMessage_Function_glCoverageOperationNV;
  static const Function glCreateProgram = GLMessage_Function_glCreateProgram;
  static const Function glCreateShader = GLMessage_Function_glCreateShader;
  static const Function glCullFace = GLMessage_Function_glCullFace;
  static const Function glCurrentPaletteMatrixOES = GLMessage_Function_glCurrentPaletteMatrixOES;
  static const Function glDeleteBuffers = GLMessage_Function_glDeleteBuffers;
  static const Function glDeleteFencesNV = GLMessage_Function_glDeleteFencesNV;
  static const Function glDeleteFramebuffers = GLMessage_Function_glDeleteFramebuffers;
  static const Function glDeleteFramebuffersOES = GLMessage_Function_glDeleteFramebuffersOES;
  static const Function glDeletePerfMonitorsAMD = GLMessage_Function_glDeletePerfMonitorsAMD;
  static const Function glDeleteProgram = GLMessage_Function_glDeleteProgram;
  static const Function glDeleteRenderbuffers = GLMessage_Function_glDeleteRenderbuffers;
  static const Function glDeleteRenderbuffersOES = GLMessage_Function_glDeleteRenderbuffersOES;
  static const Function glDeleteShader = GLMessage_Function_glDeleteShader;
  static const Function glDeleteTextures = GLMessage_Function_glDeleteTextures;
  static const Function glDeleteVertexArraysOES = GLMessage_Function_glDeleteVertexArraysOES;
  static const Function glDepthFunc = GLMessage_Function_glDepthFunc;
  static const Function glDepthMask = GLMessage_Function_glDepthMask;
  static const Function glDepthRangef = GLMessage_Function_glDepthRangef;
  static const Function glDepthRangefOES = GLMessage_Function_glDepthRangefOES;
  static const Function glDepthRangex = GLMessage_Function_glDepthRangex;
  static const Function glDepthRangexOES = GLMessage_Function_glDepthRangexOES;
  static const Function glDetachShader = GLMessage_Function_glDetachShader;
  static const Function glDisableClientState = GLMessage_Function_glDisableClientState;
  static const Function glDisableDriverControlQCOM = GLMessage_Function_glDisableDriverControlQCOM;
  static const Function glDisable = GLMessage_Function_glDisable;
  static const Function glDisableVertexAttribArray = GLMessage_Function_glDisableVertexAttribArray;
  static const Function glDiscardFramebufferEXT = GLMessage_Function_glDiscardFramebufferEXT;
  static const Function glDrawArrays = GLMessage_Function_glDrawArrays;
  static const Function glDrawElements = GLMessage_Function_glDrawElements;
  static const Function glDrawTexfOES = GLMessage_Function_glDrawTexfOES;
  static const Function glDrawTexfvOES = GLMessage_Function_glDrawTexfvOES;
  static const Function glDrawTexiOES = GLMessage_Function_glDrawTexiOES;
  static const Function glDrawTexivOES = GLMessage_Function_glDrawTexivOES;
  static const Function glDrawTexsOES = GLMessage_Function_glDrawTexsOES;
  static const Function glDrawTexsvOES = GLMessage_Function_glDrawTexsvOES;
  static const Function glDrawTexxOES = GLMessage_Function_glDrawTexxOES;
  static const Function glDrawTexxvOES = GLMessage_Function_glDrawTexxvOES;
  static const Function glEGLImageTargetRenderbufferStorageOES = GLMessage_Function_glEGLImageTargetRenderbufferStorageOES;
  static const Function glEGLImageTargetTexture2DOES = GLMessage_Function_glEGLImageTargetTexture2DOES;
  static const Function glEnableClientState = GLMessage_Function_glEnableClientState;
  static const Function glEnableDriverControlQCOM = GLMessage_Function_glEnableDriverControlQCOM;
  static const Function glEnable = GLMessage_Function_glEnable;
  static const Function glEnableVertexAttribArray = GLMessage_Function_glEnableVertexAttribArray;
  static const Function glEndPerfMonitorAMD = GLMessage_Function_glEndPerfMonitorAMD;
  static const Function glEndTilingQCOM = GLMessage_Function_glEndTilingQCOM;
  static const Function glExtGetBufferPointervQCOM = GLMessage_Function_glExtGetBufferPointervQCOM;
  static const Function glExtGetBuffersQCOM = GLMessage_Function_glExtGetBuffersQCOM;
  static const Function glExtGetFramebuffersQCOM = GLMessage_Function_glExtGetFramebuffersQCOM;
  static const Function glExtGetProgramBinarySourceQCOM = GLMessage_Function_glExtGetProgramBinarySourceQCOM;
  static const Function glExtGetProgramsQCOM = GLMessage_Function_glExtGetProgramsQCOM;
  static const Function glExtGetRenderbuffersQCOM = GLMessage_Function_glExtGetRenderbuffersQCOM;
  static const Function glExtGetShadersQCOM = GLMessage_Function_glExtGetShadersQCOM;
  static const Function glExtGetTexLevelParameterivQCOM = GLMessage_Function_glExtGetTexLevelParameterivQCOM;
  static const Function glExtGetTexSubImageQCOM = GLMessage_Function_glExtGetTexSubImageQCOM;
  static const Function glExtGetTexturesQCOM = GLMessage_Function_glExtGetTexturesQCOM;
  static const Function glExtIsProgramBinaryQCOM = GLMessage_Function_glExtIsProgramBinaryQCOM;
  static const Function glExtTexObjectStateOverrideiQCOM = GLMessage_Function_glExtTexObjectStateOverrideiQCOM;
  static const Function glFinishFenceNV = GLMessage_Function_glFinishFenceNV;
  static const Function glFinish = GLMessage_Function_glFinish;
  static const Function glFlush = GLMessage_Function_glFlush;
  static const Function glFogf = GLMessage_Function_glFogf;
  static const Function glFogfv = GLMessage_Function_glFogfv;
  static const Function glFogx = GLMessage_Function_glFogx;
  static const Function glFogxOES = GLMessage_Function_glFogxOES;
  static const Function glFogxv = GLMessage_Function_glFogxv;
  static const Function glFogxvOES = GLMessage_Function_glFogxvOES;
  static const Function glFramebufferRenderbuffer = GLMessage_Function_glFramebufferRenderbuffer;
  static const Function glFramebufferRenderbufferOES = GLMessage_Function_glFramebufferRenderbufferOES;
  static const Function glFramebufferTexture2D = GLMessage_Function_glFramebufferTexture2D;
  static const Function glFramebufferTexture2DMultisampleIMG = GLMessage_Function_glFramebufferTexture2DMultisampleIMG;
  static const Function glFramebufferTexture2DOES = GLMessage_Function_glFramebufferTexture2DOES;
  static const Function glFramebufferTexture3DOES = GLMessage_Function_glFramebufferTexture3DOES;
  static const Function glFrontFace = GLMessage_Function_glFrontFace;
  static const Function glFrustumf = GLMessage_Function_glFrustumf;
  static const Function glFrustumfOES = GLMessage_Function_glFrustumfOES;
  static const Function glFrustumx = GLMessage_Function_glFrustumx;
  static const Function glFrustumxOES = GLMessage_Function_glFrustumxOES;
  static const Function glGenBuffers = GLMessage_Function_glGenBuffers;
  static const Function glGenerateMipmap = GLMessage_Function_glGenerateMipmap;
  static const Function glGenerateMipmapOES = GLMessage_Function_glGenerateMipmapOES;
  static const Function glGenFencesNV = GLMessage_Function_glGenFencesNV;
  static const Function glGenFramebuffers = GLMessage_Function_glGenFramebuffers;
  static const Function glGenFramebuffersOES = GLMessage_Function_glGenFramebuffersOES;
  static const Function glGenPerfMonitorsAMD = GLMessage_Function_glGenPerfMonitorsAMD;
  static const Function glGenRenderbuffers = GLMessage_Function_glGenRenderbuffers;
  static const Function glGenRenderbuffersOES = GLMessage_Function_glGenRenderbuffersOES;
  static const Function glGenTextures = GLMessage_Function_glGenTextures;
  static const Function glGenVertexArraysOES = GLMessage_Function_glGenVertexArraysOES;
  static const Function glGetActiveAttrib = GLMessage_Function_glGetActiveAttrib;
  static const Function glGetActiveUniform = GLMessage_Function_glGetActiveUniform;
  static const Function glGetAttachedShaders = GLMessage_Function_glGetAttachedShaders;
  static const Function glGetAttribLocation = GLMessage_Function_glGetAttribLocation;
  static const Function glGetBooleanv = GLMessage_Function_glGetBooleanv;
  static const Function glGetBufferParameteriv = GLMessage_Function_glGetBufferParameteriv;
  static const Function glGetBufferPointervOES = GLMessage_Function_glGetBufferPointervOES;
  static const Function glGetClipPlanef = GLMessage_Function_glGetClipPlanef;
  static const Function glGetClipPlanefOES = GLMessage_Function_glGetClipPlanefOES;
  static const Function glGetClipPlanex = GLMessage_Function_glGetClipPlanex;
  static const Function glGetClipPlanexOES = GLMessage_Function_glGetClipPlanexOES;
  static const Function glGetDriverControlsQCOM = GLMessage_Function_glGetDriverControlsQCOM;
  static const Function glGetDriverControlStringQCOM = GLMessage_Function_glGetDriverControlStringQCOM;
  static const Function glGetError = GLMessage_Function_glGetError;
  static const Function glGetFenceivNV = GLMessage_Function_glGetFenceivNV;
  static const Function glGetFixedv = GLMessage_Function_glGetFixedv;
  static const Function glGetFixedvOES = GLMessage_Function_glGetFixedvOES;
  static const Function glGetFloatv = GLMessage_Function_glGetFloatv;
  static const Function glGetFramebufferAttachmentParameteriv = GLMessage_Function_glGetFramebufferAttachmentParameteriv;
  static const Function glGetFramebufferAttachmentParameterivOES = GLMessage_Function_glGetFramebufferAttachmentParameterivOES;
  static const Function glGetIntegerv = GLMessage_Function_glGetIntegerv;
  static const Function glGetLightfv = GLMessage_Function_glGetLightfv;
  static const Function glGetLightxv = GLMessage_Function_glGetLightxv;
  static const Function glGetLightxvOES = GLMessage_Function_glGetLightxvOES;
  static const Function glGetMaterialfv = GLMessage_Function_glGetMaterialfv;
  static const Function glGetMaterialxv = GLMessage_Function_glGetMaterialxv;
  static const Function glGetMaterialxvOES = GLMessage_Function_glGetMaterialxvOES;
  static const Function glGetPerfMonitorCounterDataAMD = GLMessage_Function_glGetPerfMonitorCounterDataAMD;
  static const Function glGetPerfMonitorCounterInfoAMD = GLMessage_Function_glGetPerfMonitorCounterInfoAMD;
  static const Function glGetPerfMonitorCountersAMD = GLMessage_Function_glGetPerfMonitorCountersAMD;
  static const Function glGetPerfMonitorCounterStringAMD = GLMessage_Function_glGetPerfMonitorCounterStringAMD;
  static const Function glGetPerfMonitorGroupsAMD = GLMessage_Function_glGetPerfMonitorGroupsAMD;
  static const Function glGetPerfMonitorGroupStringAMD = GLMessage_Function_glGetPerfMonitorGroupStringAMD;
  static const Function glGetPointerv = GLMessage_Function_glGetPointerv;
  static const Function glGetProgramBinaryOES = GLMessage_Function_glGetProgramBinaryOES;
  static const Function glGetProgramInfoLog = GLMessage_Function_glGetProgramInfoLog;
  static const Function glGetProgramiv = GLMessage_Function_glGetProgramiv;
  static const Function glGetRenderbufferParameteriv = GLMessage_Function_glGetRenderbufferParameteriv;
  static const Function glGetRenderbufferParameterivOES = GLMessage_Function_glGetRenderbufferParameterivOES;
  static const Function glGetShaderInfoLog = GLMessage_Function_glGetShaderInfoLog;
  static const Function glGetShaderiv = GLMessage_Function_glGetShaderiv;
  static const Function glGetShaderPrecisionFormat = GLMessage_Function_glGetShaderPrecisionFormat;
  static const Function glGetShaderSource = GLMessage_Function_glGetShaderSource;
  static const Function glGetString = GLMessage_Function_glGetString;
  static const Function glGetTexEnvfv = GLMessage_Function_glGetTexEnvfv;
  static const Function glGetTexEnviv = GLMessage_Function_glGetTexEnviv;
  static const Function glGetTexEnvxv = GLMessage_Function_glGetTexEnvxv;
  static const Function glGetTexEnvxvOES = GLMessage_Function_glGetTexEnvxvOES;
  static const Function glGetTexGenfvOES = GLMessage_Function_glGetTexGenfvOES;
  static const Function glGetTexGenivOES = GLMessage_Function_glGetTexGenivOES;
  static const Function glGetTexGenxvOES = GLMessage_Function_glGetTexGenxvOES;
  static const Function glGetTexParameterfv = GLMessage_Function_glGetTexParameterfv;
  static const Function glGetTexParameteriv = GLMessage_Function_glGetTexParameteriv;
  static const Function glGetTexParameterxv = GLMessage_Function_glGetTexParameterxv;
  static const Function glGetTexParameterxvOES = GLMessage_Function_glGetTexParameterxvOES;
  static const Function glGetUniformfv = GLMessage_Function_glGetUniformfv;
  static const Function glGetUniformiv = GLMessage_Function_glGetUniformiv;
  static const Function glGetUniformLocation = GLMessage_Function_glGetUniformLocation;
  static const Function glGetVertexAttribfv = GLMessage_Function_glGetVertexAttribfv;
  static const Function glGetVertexAttribiv = GLMessage_Function_glGetVertexAttribiv;
  static const Function glGetVertexAttribPointerv = GLMessage_Function_glGetVertexAttribPointerv;
  static const Function glHint = GLMessage_Function_glHint;
  static const Function glIsBuffer = GLMessage_Function_glIsBuffer;
  static const Function glIsEnabled = GLMessage_Function_glIsEnabled;
  static const Function glIsFenceNV = GLMessage_Function_glIsFenceNV;
  static const Function glIsFramebuffer = GLMessage_Function_glIsFramebuffer;
  static const Function glIsFramebufferOES = GLMessage_Function_glIsFramebufferOES;
  static const Function glIsProgram = GLMessage_Function_glIsProgram;
  static const Function glIsRenderbuffer = GLMessage_Function_glIsRenderbuffer;
  static const Function glIsRenderbufferOES = GLMessage_Function_glIsRenderbufferOES;
  static const Function glIsShader = GLMessage_Function_glIsShader;
  static const Function glIsTexture = GLMessage_Function_glIsTexture;
  static const Function glIsVertexArrayOES = GLMessage_Function_glIsVertexArrayOES;
  static const Function glLightf = GLMessage_Function_glLightf;
  static const Function glLightfv = GLMessage_Function_glLightfv;
  static const Function glLightModelf = GLMessage_Function_glLightModelf;
  static const Function glLightModelfv = GLMessage_Function_glLightModelfv;
  static const Function glLightModelx = GLMessage_Function_glLightModelx;
  static const Function glLightModelxOES = GLMessage_Function_glLightModelxOES;
  static const Function glLightModelxv = GLMessage_Function_glLightModelxv;
  static const Function glLightModelxvOES = GLMessage_Function_glLightModelxvOES;
  static const Function glLightx = GLMessage_Function_glLightx;
  static const Function glLightxOES = GLMessage_Function_glLightxOES;
  static const Function glLightxv = GLMessage_Function_glLightxv;
  static const Function glLightxvOES = GLMessage_Function_glLightxvOES;
  static const Function glLineWidth = GLMessage_Function_glLineWidth;
  static const Function glLineWidthx = GLMessage_Function_glLineWidthx;
  static const Function glLineWidthxOES = GLMessage_Function_glLineWidthxOES;
  static const Function glLinkProgram = GLMessage_Function_glLinkProgram;
  static const Function glLoadIdentity = GLMessage_Function_glLoadIdentity;
  static const Function glLoadMatrixf = GLMessage_Function_glLoadMatrixf;
  static const Function glLoadMatrixx = GLMessage_Function_glLoadMatrixx;
  static const Function glLoadMatrixxOES = GLMessage_Function_glLoadMatrixxOES;
  static const Function glLoadPaletteFromModelViewMatrixOES = GLMessage_Function_glLoadPaletteFromModelViewMatrixOES;
  static const Function glLogicOp = GLMessage_Function_glLogicOp;
  static const Function glMapBufferOES = GLMessage_Function_glMapBufferOES;
  static const Function glMaterialf = GLMessage_Function_glMaterialf;
  static const Function glMaterialfv = GLMessage_Function_glMaterialfv;
  static const Function glMaterialx = GLMessage_Function_glMaterialx;
  static const Function glMaterialxOES = GLMessage_Function_glMaterialxOES;
  static const Function glMaterialxv = GLMessage_Function_glMaterialxv;
  static const Function glMaterialxvOES = GLMessage_Function_glMaterialxvOES;
  static const Function glMatrixIndexPointerOES = GLMessage_Function_glMatrixIndexPointerOES;
  static const Function glMatrixMode = GLMessage_Function_glMatrixMode;
  static const Function glMultiDrawArraysEXT = GLMessage_Function_glMultiDrawArraysEXT;
  static const Function glMultiDrawElementsEXT = GLMessage_Function_glMultiDrawElementsEXT;
  static const Function glMultiTexCoord4f = GLMessage_Function_glMultiTexCoord4f;
  static const Function glMultiTexCoord4x = GLMessage_Function_glMultiTexCoord4x;
  static const Function glMultiTexCoord4xOES = GLMessage_Function_glMultiTexCoord4xOES;
  static const Function glMultMatrixf = GLMessage_Function_glMultMatrixf;
  static const Function glMultMatrixx = GLMessage_Function_glMultMatrixx;
  static const Function glMultMatrixxOES = GLMessage_Function_glMultMatrixxOES;
  static const Function glNormal3f = GLMessage_Function_glNormal3f;
  static const Function glNormal3x = GLMessage_Function_glNormal3x;
  static const Function glNormal3xOES = GLMessage_Function_glNormal3xOES;
  static const Function glNormalPointer = GLMessage_Function_glNormalPointer;
  static const Function glOrthof = GLMessage_Function_glOrthof;
  static const Function glOrthofOES = GLMessage_Function_glOrthofOES;
  static const Function glOrthox = GLMessage_Function_glOrthox;
  static const Function glOrthoxOES = GLMessage_Function_glOrthoxOES;
  static const Function glPixelStorei = GLMessage_Function_glPixelStorei;
  static const Function glPointParameterf = GLMessage_Function_glPointParameterf;
  static const Function glPointParameterfv = GLMessage_Function_glPointParameterfv;
  static const Function glPointParameterx = GLMessage_Function_glPointParameterx;
  static const Function glPointParameterxOES = GLMessage_Function_glPointParameterxOES;
  static const Function glPointParameterxv = GLMessage_Function_glPointParameterxv;
  static const Function glPointParameterxvOES = GLMessage_Function_glPointParameterxvOES;
  static const Function glPointSize = GLMessage_Function_glPointSize;
  static const Function glPointSizePointerOES = GLMessage_Function_glPointSizePointerOES;
  static const Function glPointSizex = GLMessage_Function_glPointSizex;
  static const Function glPointSizexOES = GLMessage_Function_glPointSizexOES;
  static const Function glPolygonOffset = GLMessage_Function_glPolygonOffset;
  static const Function glPolygonOffsetx = GLMessage_Function_glPolygonOffsetx;
  static const Function glPolygonOffsetxOES = GLMessage_Function_glPolygonOffsetxOES;
  static const Function glPopMatrix = GLMessage_Function_glPopMatrix;
  static const Function glProgramBinaryOES = GLMessage_Function_glProgramBinaryOES;
  static const Function glPushMatrix = GLMessage_Function_glPushMatrix;
  static const Function glQueryMatrixxOES = GLMessage_Function_glQueryMatrixxOES;
  static const Function glReadPixels = GLMessage_Function_glReadPixels;
  static const Function glReleaseShaderCompiler = GLMessage_Function_glReleaseShaderCompiler;
  static const Function glRenderbufferStorage = GLMessage_Function_glRenderbufferStorage;
  static const Function glRenderbufferStorageMultisampleIMG = GLMessage_Function_glRenderbufferStorageMultisampleIMG;
  static const Function glRenderbufferStorageOES = GLMessage_Function_glRenderbufferStorageOES;
  static const Function glRotatef = GLMessage_Function_glRotatef;
  static const Function glRotatex = GLMessage_Function_glRotatex;
  static const Function glRotatexOES = GLMessage_Function_glRotatexOES;
  static const Function glSampleCoverage = GLMessage_Function_glSampleCoverage;
  static const Function glSampleCoveragex = GLMessage_Function_glSampleCoveragex;
  static const Function glSampleCoveragexOES = GLMessage_Function_glSampleCoveragexOES;
  static const Function glScalef = GLMessage_Function_glScalef;
  static const Function glScalex = GLMessage_Function_glScalex;
  static const Function glScalexOES = GLMessage_Function_glScalexOES;
  static const Function glScissor = GLMessage_Function_glScissor;
  static const Function glSelectPerfMonitorCountersAMD = GLMessage_Function_glSelectPerfMonitorCountersAMD;
  static const Function glSetFenceNV = GLMessage_Function_glSetFenceNV;
  static const Function glShadeModel = GLMessage_Function_glShadeModel;
  static const Function glShaderBinary = GLMessage_Function_glShaderBinary;
  static const Function glShaderSource = GLMessage_Function_glShaderSource;
  static const Function glStartTilingQCOM = GLMessage_Function_glStartTilingQCOM;
  static const Function glStencilFunc = GLMessage_Function_glStencilFunc;
  static const Function glStencilFuncSeparate = GLMessage_Function_glStencilFuncSeparate;
  static const Function glStencilMask = GLMessage_Function_glStencilMask;
  static const Function glStencilMaskSeparate = GLMessage_Function_glStencilMaskSeparate;
  static const Function glStencilOp = GLMessage_Function_glStencilOp;
  static const Function glStencilOpSeparate = GLMessage_Function_glStencilOpSeparate;
  static const Function glTestFenceNV = GLMessage_Function_glTestFenceNV;
  static const Function glTexCoordPointer = GLMessage_Function_glTexCoordPointer;
  static const Function glTexEnvf = GLMessage_Function_glTexEnvf;
  static const Function glTexEnvfv = GLMessage_Function_glTexEnvfv;
  static const Function glTexEnvi = GLMessage_Function_glTexEnvi;
  static const Function glTexEnviv = GLMessage_Function_glTexEnviv;
  static const Function glTexEnvx = GLMessage_Function_glTexEnvx;
  static const Function glTexEnvxOES = GLMessage_Function_glTexEnvxOES;
  static const Function glTexEnvxv = GLMessage_Function_glTexEnvxv;
  static const Function glTexEnvxvOES = GLMessage_Function_glTexEnvxvOES;
  static const Function glTexGenfOES = GLMessage_Function_glTexGenfOES;
  static const Function glTexGenfvOES = GLMessage_Function_glTexGenfvOES;
  static const Function glTexGeniOES = GLMessage_Function_glTexGeniOES;
  static const Function glTexGenivOES = GLMessage_Function_glTexGenivOES;
  static const Function glTexGenxOES = GLMessage_Function_glTexGenxOES;
  static const Function glTexGenxvOES = GLMessage_Function_glTexGenxvOES;
  static const Function glTexImage2D = GLMessage_Function_glTexImage2D;
  static const Function glTexImage3DOES = GLMessage_Function_glTexImage3DOES;
  static const Function glTexParameterf = GLMessage_Function_glTexParameterf;
  static const Function glTexParameterfv = GLMessage_Function_glTexParameterfv;
  static const Function glTexParameteri = GLMessage_Function_glTexParameteri;
  static const Function glTexParameteriv = GLMessage_Function_glTexParameteriv;
  static const Function glTexParameterx = GLMessage_Function_glTexParameterx;
  static const Function glTexParameterxOES = GLMessage_Function_glTexParameterxOES;
  static const Function glTexParameterxv = GLMessage_Function_glTexParameterxv;
  static const Function glTexParameterxvOES = GLMessage_Function_glTexParameterxvOES;
  static const Function glTexSubImage2D = GLMessage_Function_glTexSubImage2D;
  static const Function glTexSubImage3DOES = GLMessage_Function_glTexSubImage3DOES;
  static const Function glTranslatef = GLMessage_Function_glTranslatef;
  static const Function glTranslatex = GLMessage_Function_glTranslatex;
  static const Function glTranslatexOES = GLMessage_Function_glTranslatexOES;
  static const Function glUniform1f = GLMessage_Function_glUniform1f;
  static const Function glUniform1fv = GLMessage_Function_glUniform1fv;
  static const Function glUniform1i = GLMessage_Function_glUniform1i;
  static const Function glUniform1iv = GLMessage_Function_glUniform1iv;
  static const Function glUniform2f = GLMessage_Function_glUniform2f;
  static const Function glUniform2fv = GLMessage_Function_glUniform2fv;
  static const Function glUniform2i = GLMessage_Function_glUniform2i;
  static const Function glUniform2iv = GLMessage_Function_glUniform2iv;
  static const Function glUniform3f = GLMessage_Function_glUniform3f;
  static const Function glUniform3fv = GLMessage_Function_glUniform3fv;
  static const Function glUniform3i = GLMessage_Function_glUniform3i;
  static const Function glUniform3iv = GLMessage_Function_glUniform3iv;
  static const Function glUniform4f = GLMessage_Function_glUniform4f;
  static const Function glUniform4fv = GLMessage_Function_glUniform4fv;
  static const Function glUniform4i = GLMessage_Function_glUniform4i;
  static const Function glUniform4iv = GLMessage_Function_glUniform4iv;
  static const Function glUniformMatrix2fv = GLMessage_Function_glUniformMatrix2fv;
  static const Function glUniformMatrix3fv = GLMessage_Function_glUniformMatrix3fv;
  static const Function glUniformMatrix4fv = GLMessage_Function_glUniformMatrix4fv;
  static const Function glUnmapBufferOES = GLMessage_Function_glUnmapBufferOES;
  static const Function glUseProgram = GLMessage_Function_glUseProgram;
  static const Function glValidateProgram = GLMessage_Function_glValidateProgram;
  static const Function glVertexAttrib1f = GLMessage_Function_glVertexAttrib1f;
  static const Function glVertexAttrib1fv = GLMessage_Function_glVertexAttrib1fv;
  static const Function glVertexAttrib2f = GLMessage_Function_glVertexAttrib2f;
  static const Function glVertexAttrib2fv = GLMessage_Function_glVertexAttrib2fv;
  static const Function glVertexAttrib3f = GLMessage_Function_glVertexAttrib3f;
  static const Function glVertexAttrib3fv = GLMessage_Function_glVertexAttrib3fv;
  static const Function glVertexAttrib4f = GLMessage_Function_glVertexAttrib4f;
  static const Function glVertexAttrib4fv = GLMessage_Function_glVertexAttrib4fv;
  static const Function glVertexAttribPointer = GLMessage_Function_glVertexAttribPointer;
  static const Function glVertexPointer = GLMessage_Function_glVertexPointer;
  static const Function glViewport = GLMessage_Function_glViewport;
  static const Function glWeightPointerOES = GLMessage_Function_glWeightPointerOES;
  static const Function glActiveShaderProgramEXT = GLMessage_Function_glActiveShaderProgramEXT;
  static const Function glAlphaFuncQCOM = GLMessage_Function_glAlphaFuncQCOM;
  static const Function glBeginQueryEXT = GLMessage_Function_glBeginQueryEXT;
  static const Function glBindProgramPipelineEXT = GLMessage_Function_glBindProgramPipelineEXT;
  static const Function glBlitFramebufferANGLE = GLMessage_Function_glBlitFramebufferANGLE;
  static const Function glCreateShaderProgramvEXT = GLMessage_Function_glCreateShaderProgramvEXT;
  static const Function glDeleteProgramPipelinesEXT = GLMessage_Function_glDeleteProgramPipelinesEXT;
  static const Function glDeleteQueriesEXT = GLMessage_Function_glDeleteQueriesEXT;
  static const Function glDrawBuffersNV = GLMessage_Function_glDrawBuffersNV;
  static const Function glEndQueryEXT = GLMessage_Function_glEndQueryEXT;
  static const Function glFramebufferTexture2DMultisampleEXT = GLMessage_Function_glFramebufferTexture2DMultisampleEXT;
  static const Function glGenProgramPipelinesEXT = GLMessage_Function_glGenProgramPipelinesEXT;
  static const Function glGenQueriesEXT = GLMessage_Function_glGenQueriesEXT;
  static const Function glGetGraphicsResetStatusEXT = GLMessage_Function_glGetGraphicsResetStatusEXT;
  static const Function glGetObjectLabelEXT = GLMessage_Function_glGetObjectLabelEXT;
  static const Function glGetProgramPipelineInfoLogEXT = GLMessage_Function_glGetProgramPipelineInfoLogEXT;
  static const Function glGetProgramPipelineivEXT = GLMessage_Function_glGetProgramPipelineivEXT;
  static const Function glGetQueryObjectuivEXT = GLMessage_Function_glGetQueryObjectuivEXT;
  static const Function glGetQueryivEXT = GLMessage_Function_glGetQueryivEXT;
  static const Function glGetnUniformfvEXT = GLMessage_Function_glGetnUniformfvEXT;
  static const Function glGetnUniformivEXT = GLMessage_Function_glGetnUniformivEXT;
  static const Function glInsertEventMarkerEXT = GLMessage_Function_glInsertEventMarkerEXT;
  static const Function glIsProgramPipelineEXT = GLMessage_Function_glIsProgramPipelineEXT;
  static const Function glIsQueryEXT = GLMessage_Function_glIsQueryEXT;
  static const Function glLabelObjectEXT = GLMessage_Function_glLabelObjectEXT;
  static const Function glPopGroupMarkerEXT = GLMessage_Function_glPopGroupMarkerEXT;
  static const Function glProgramParameteriEXT = GLMessage_Function_glProgramParameteriEXT;
  static const Function glProgramUniform1fEXT = GLMessage_Function_glProgramUniform1fEXT;
  static const Function glProgramUniform1fvEXT = GLMessage_Function_glProgramUniform1fvEXT;
  static const Function glProgramUniform1iEXT = GLMessage_Function_glProgramUniform1iEXT;
  static const Function glProgramUniform1ivEXT = GLMessage_Function_glProgramUniform1ivEXT;
  static const Function glProgramUniform2fEXT = GLMessage_Function_glProgramUniform2fEXT;
  static const Function glProgramUniform2fvEXT = GLMessage_Function_glProgramUniform2fvEXT;
  static const Function glProgramUniform2iEXT = GLMessage_Function_glProgramUniform2iEXT;
  static const Function glProgramUniform2ivEXT = GLMessage_Function_glProgramUniform2ivEXT;
  static const Function glProgramUniform3fEXT = GLMessage_Function_glProgramUniform3fEXT;
  static const Function glProgramUniform3fvEXT = GLMessage_Function_glProgramUniform3fvEXT;
  static const Function glProgramUniform3iEXT = GLMessage_Function_glProgramUniform3iEXT;
  static const Function glProgramUniform3ivEXT = GLMessage_Function_glProgramUniform3ivEXT;
  static const Function glProgramUniform4fEXT = GLMessage_Function_glProgramUniform4fEXT;
  static const Function glProgramUniform4fvEXT = GLMessage_Function_glProgramUniform4fvEXT;
  static const Function glProgramUniform4iEXT = GLMessage_Function_glProgramUniform4iEXT;
  static const Function glProgramUniform4ivEXT = GLMessage_Function_glProgramUniform4ivEXT;
  static const Function glProgramUniformMatrix2fvEXT = GLMessage_Function_glProgramUniformMatrix2fvEXT;
  static const Function glProgramUniformMatrix3fvEXT = GLMessage_Function_glProgramUniformMatrix3fvEXT;
  static const Function glProgramUniformMatrix4fvEXT = GLMessage_Function_glProgramUniformMatrix4fvEXT;
  static const Function glPushGroupMarkerEXT = GLMessage_Function_glPushGroupMarkerEXT;
  static const Function glReadBufferNV = GLMessage_Function_glReadBufferNV;
  static const Function glReadnPixelsEXT = GLMessage_Function_glReadnPixelsEXT;
  static const Function glRenderbufferStorageMultisampleANGLE = GLMessage_Function_glRenderbufferStorageMultisampleANGLE;
  static const Function glRenderbufferStorageMultisampleAPPLE = GLMessage_Function_glRenderbufferStorageMultisampleAPPLE;
  static const Function glRenderbufferStorageMultisampleEXT = GLMessage_Function_glRenderbufferStorageMultisampleEXT;
  static const Function glResolveMultisampleFramebufferAPPLE = GLMessage_Function_glResolveMultisampleFramebufferAPPLE;
  static const Function glTexStorage1DEXT = GLMessage_Function_glTexStorage1DEXT;
  static const Function glTexStorage2DEXT = GLMessage_Function_glTexStorage2DEXT;
  static const Function glTexStorage3DEXT = GLMessage_Function_glTexStorage3DEXT;
  static const Function glTextureStorage1DEXT = GLMessage_Function_glTextureStorage1DEXT;
  static const Function glTextureStorage2DEXT = GLMessage_Function_glTextureStorage2DEXT;
  static const Function glTextureStorage3DEXT = GLMessage_Function_glTextureStorage3DEXT;
  static const Function glUseProgramStagesEXT = GLMessage_Function_glUseProgramStagesEXT;
  static const Function glValidateProgramPipelineEXT = GLMessage_Function_glValidateProgramPipelineEXT;
  static const Function eglGetDisplay = GLMessage_Function_eglGetDisplay;
  static const Function eglInitialize = GLMessage_Function_eglInitialize;
  static const Function eglTerminate = GLMessage_Function_eglTerminate;
  static const Function eglGetConfigs = GLMessage_Function_eglGetConfigs;
  static const Function eglChooseConfig = GLMessage_Function_eglChooseConfig;
  static const Function eglGetConfigAttrib = GLMessage_Function_eglGetConfigAttrib;
  static const Function eglCreateWindowSurface = GLMessage_Function_eglCreateWindowSurface;
  static const Function eglCreatePixmapSurface = GLMessage_Function_eglCreatePixmapSurface;
  static const Function eglCreatePbufferSurface = GLMessage_Function_eglCreatePbufferSurface;
  static const Function eglDestroySurface = GLMessage_Function_eglDestroySurface;
  static const Function eglQuerySurface = GLMessage_Function_eglQuerySurface;
  static const Function eglCreateContext = GLMessage_Function_eglCreateContext;
  static const Function eglDestroyContext = GLMessage_Function_eglDestroyContext;
  static const Function eglMakeCurrent = GLMessage_Function_eglMakeCurrent;
  static const Function eglGetCurrentContext = GLMessage_Function_eglGetCurrentContext;
  static const Function eglGetCurrentSurface = GLMessage_Function_eglGetCurrentSurface;
  static const Function eglGetCurrentDisplay = GLMessage_Function_eglGetCurrentDisplay;
  static const Function eglQueryContext = GLMessage_Function_eglQueryContext;
  static const Function eglWaitGL = GLMessage_Function_eglWaitGL;
  static const Function eglWaitNative = GLMessage_Function_eglWaitNative;
  static const Function eglSwapBuffers = GLMessage_Function_eglSwapBuffers;
  static const Function eglCopyBuffers = GLMessage_Function_eglCopyBuffers;
  static const Function eglGetError = GLMessage_Function_eglGetError;
  static const Function eglQueryString = GLMessage_Function_eglQueryString;
  static const Function eglGetProcAddress = GLMessage_Function_eglGetProcAddress;
  static const Function eglSurfaceAttrib = GLMessage_Function_eglSurfaceAttrib;
  static const Function eglBindTexImage = GLMessage_Function_eglBindTexImage;
  static const Function eglReleaseTexImage = GLMessage_Function_eglReleaseTexImage;
  static const Function eglSwapInterval = GLMessage_Function_eglSwapInterval;
  static const Function eglBindAPI = GLMessage_Function_eglBindAPI;
  static const Function eglQueryAPI = GLMessage_Function_eglQueryAPI;
  static const Function eglWaitClient = GLMessage_Function_eglWaitClient;
  static const Function eglReleaseThread = GLMessage_Function_eglReleaseThread;
  static const Function eglCreatePbufferFromClientBuffer = GLMessage_Function_eglCreatePbufferFromClientBuffer;
  static const Function eglLockSurfaceKHR = GLMessage_Function_eglLockSurfaceKHR;
  static const Function eglUnlockSurfaceKHR = GLMessage_Function_eglUnlockSurfaceKHR;
  static const Function eglCreateImageKHR = GLMessage_Function_eglCreateImageKHR;
  static const Function eglDestroyImageKHR = GLMessage_Function_eglDestroyImageKHR;
  static const Function eglCreateSyncKHR = GLMessage_Function_eglCreateSyncKHR;
  static const Function eglDestroySyncKHR = GLMessage_Function_eglDestroySyncKHR;
  static const Function eglClientWaitSyncKHR = GLMessage_Function_eglClientWaitSyncKHR;
  static const Function eglGetSyncAttribKHR = GLMessage_Function_eglGetSyncAttribKHR;
  static const Function eglSetSwapRectangleANDROID = GLMessage_Function_eglSetSwapRectangleANDROID;
  static const Function eglGetRenderBufferANDROID = GLMessage_Function_eglGetRenderBufferANDROID;
  static const Function eglGetSystemTimeFrequencyNV = GLMessage_Function_eglGetSystemTimeFrequencyNV;
  static const Function eglGetSystemTimeNV = GLMessage_Function_eglGetSystemTimeNV;
  static const Function invalid = GLMessage_Function_invalid;
  static const Function glVertexAttribPointerData = GLMessage_Function_glVertexAttribPointerData;
  static inline bool Function_IsValid(int value) {
    return GLMessage_Function_IsValid(value);
  }
  static const Function Function_MIN =
    GLMessage_Function_Function_MIN;
  static const Function Function_MAX =
    GLMessage_Function_Function_MAX;
  static const int Function_ARRAYSIZE =
    GLMessage_Function_Function_ARRAYSIZE;
  
  // accessors -------------------------------------------------------
  
  // required int32 context_id = 1;
  inline bool has_context_id() const;
  inline void clear_context_id();
  static const int kContextIdFieldNumber = 1;
  inline ::google::protobuf::int32 context_id() const;
  inline void set_context_id(::google::protobuf::int32 value);
  
  // required int64 start_time = 2;
  inline bool has_start_time() const;
  inline void clear_start_time();
  static const int kStartTimeFieldNumber = 2;
  inline ::google::protobuf::int64 start_time() const;
  inline void set_start_time(::google::protobuf::int64 value);
  
  // required int32 duration = 3;
  inline bool has_duration() const;
  inline void clear_duration();
  static const int kDurationFieldNumber = 3;
  inline ::google::protobuf::int32 duration() const;
  inline void set_duration(::google::protobuf::int32 value);
  
  // required .android.gltrace.GLMessage.Function function = 4 [default = invalid];
  inline bool has_function() const;
  inline void clear_function();
  static const int kFunctionFieldNumber = 4;
  inline ::android::gltrace::GLMessage_Function function() const;
  inline void set_function(::android::gltrace::GLMessage_Function value);
  
  // repeated .android.gltrace.GLMessage.DataType args = 5;
  inline int args_size() const;
  inline void clear_args();
  static const int kArgsFieldNumber = 5;
  inline const ::android::gltrace::GLMessage_DataType& args(int index) const;
  inline ::android::gltrace::GLMessage_DataType* mutable_args(int index);
  inline ::android::gltrace::GLMessage_DataType* add_args();
  inline const ::google::protobuf::RepeatedPtrField< ::android::gltrace::GLMessage_DataType >&
      args() const;
  inline ::google::protobuf::RepeatedPtrField< ::android::gltrace::GLMessage_DataType >*
      mutable_args();
  
  // optional .android.gltrace.GLMessage.DataType returnValue = 6;
  inline bool has_returnvalue() const;
  inline void clear_returnvalue();
  static const int kReturnValueFieldNumber = 6;
  inline const ::android::gltrace::GLMessage_DataType& returnvalue() const;
  inline ::android::gltrace::GLMessage_DataType* mutable_returnvalue();
  
  // optional .android.gltrace.GLMessage.FrameBuffer fb = 7;
  inline bool has_fb() const;
  inline void clear_fb();
  static const int kFbFieldNumber = 7;
  inline const ::android::gltrace::GLMessage_FrameBuffer& fb() const;
  inline ::android::gltrace::GLMessage_FrameBuffer* mutable_fb();
  
  // optional int32 threadtime = 8;
  inline bool has_threadtime() const;
  inline void clear_threadtime();
  static const int kThreadtimeFieldNumber = 8;
  inline ::google::protobuf::int32 threadtime() const;
  inline void set_threadtime(::google::protobuf::int32 value);
  
  // @@protoc_insertion_point(class_scope:android.gltrace.GLMessage)
 private:
  mutable int _cached_size_;
  
  ::google::protobuf::int32 context_id_;
  ::google::protobuf::int64 start_time_;
  ::google::protobuf::int32 duration_;
  int function_;
  ::google::protobuf::RepeatedPtrField< ::android::gltrace::GLMessage_DataType > args_;
  ::android::gltrace::GLMessage_DataType* returnvalue_;
  ::android::gltrace::GLMessage_FrameBuffer* fb_;
  ::google::protobuf::int32 threadtime_;
  friend void  protobuf_AddDesc_gltrace_2eproto();
  friend void protobuf_AssignDesc_gltrace_2eproto();
  friend void protobuf_ShutdownFile_gltrace_2eproto();
  
  ::google::protobuf::uint32 _has_bits_[(8 + 31) / 32];
  
  // WHY DOES & HAVE LOWER PRECEDENCE THAN != !?
  inline bool _has_bit(int index) const {
    return (_has_bits_[index / 32] & (1u << (index % 32))) != 0;
  }
  inline void _set_bit(int index) {
    _has_bits_[index / 32] |= (1u << (index % 32));
  }
  inline void _clear_bit(int index) {
    _has_bits_[index / 32] &= ~(1u << (index % 32));
  }
  
  void InitAsDefaultInstance();
  static GLMessage* default_instance_;
};
// ===================================================================


// ===================================================================

// GLMessage_DataType

// required .android.gltrace.GLMessage.DataType.Type type = 1 [default = VOID];
inline bool GLMessage_DataType::has_type() const {
  return _has_bit(0);
}
inline void GLMessage_DataType::clear_type() {
  type_ = 1;
  _clear_bit(0);
}
inline ::android::gltrace::GLMessage_DataType_Type GLMessage_DataType::type() const {
  return static_cast< ::android::gltrace::GLMessage_DataType_Type >(type_);
}
inline void GLMessage_DataType::set_type(::android::gltrace::GLMessage_DataType_Type value) {
  GOOGLE_DCHECK(::android::gltrace::GLMessage_DataType_Type_IsValid(value));
  _set_bit(0);
  type_ = value;
}

// required bool isArray = 2 [default = false];
inline bool GLMessage_DataType::has_isarray() const {
  return _has_bit(1);
}
inline void GLMessage_DataType::clear_isarray() {
  isarray_ = false;
  _clear_bit(1);
}
inline bool GLMessage_DataType::isarray() const {
  return isarray_;
}
inline void GLMessage_DataType::set_isarray(bool value) {
  _set_bit(1);
  isarray_ = value;
}

// repeated int32 intValue = 3;
inline int GLMessage_DataType::intvalue_size() const {
  return intvalue_.size();
}
inline void GLMessage_DataType::clear_intvalue() {
  intvalue_.Clear();
}
inline ::google::protobuf::int32 GLMessage_DataType::intvalue(int index) const {
  return intvalue_.Get(index);
}
inline void GLMessage_DataType::set_intvalue(int index, ::google::protobuf::int32 value) {
  intvalue_.Set(index, value);
}
inline void GLMessage_DataType::add_intvalue(::google::protobuf::int32 value) {
  intvalue_.Add(value);
}
inline const ::google::protobuf::RepeatedField< ::google::protobuf::int32 >&
GLMessage_DataType::intvalue() const {
  return intvalue_;
}
inline ::google::protobuf::RepeatedField< ::google::protobuf::int32 >*
GLMessage_DataType::mutable_intvalue() {
  return &intvalue_;
}

// repeated float floatValue = 4;
inline int GLMessage_DataType::floatvalue_size() const {
  return floatvalue_.size();
}
inline void GLMessage_DataType::clear_floatvalue() {
  floatvalue_.Clear();
}
inline float GLMessage_DataType::floatvalue(int index) const {
  return floatvalue_.Get(index);
}
inline void GLMessage_DataType::set_floatvalue(int index, float value) {
  floatvalue_.Set(index, value);
}
inline void GLMessage_DataType::add_floatvalue(float value) {
  floatvalue_.Add(value);
}
inline const ::google::protobuf::RepeatedField< float >&
GLMessage_DataType::floatvalue() const {
  return floatvalue_;
}
inline ::google::protobuf::RepeatedField< float >*
GLMessage_DataType::mutable_floatvalue() {
  return &floatvalue_;
}

// repeated bytes charValue = 5;
inline int GLMessage_DataType::charvalue_size() const {
  return charvalue_.size();
}
inline void GLMessage_DataType::clear_charvalue() {
  charvalue_.Clear();
}
inline const ::std::string& GLMessage_DataType::charvalue(int index) const {
  return charvalue_.Get(index);
}
inline ::std::string* GLMessage_DataType::mutable_charvalue(int index) {
  return charvalue_.Mutable(index);
}
inline void GLMessage_DataType::set_charvalue(int index, const ::std::string& value) {
  charvalue_.Mutable(index)->assign(value);
}
inline void GLMessage_DataType::set_charvalue(int index, const char* value) {
  charvalue_.Mutable(index)->assign(value);
}
inline void GLMessage_DataType::set_charvalue(int index, const void* value, size_t size) {
  charvalue_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
}
inline ::std::string* GLMessage_DataType::add_charvalue() {
  return charvalue_.Add();
}
inline void GLMessage_DataType::add_charvalue(const ::std::string& value) {
  charvalue_.Add()->assign(value);
}
inline void GLMessage_DataType::add_charvalue(const char* value) {
  charvalue_.Add()->assign(value);
}
inline void GLMessage_DataType::add_charvalue(const void* value, size_t size) {
  charvalue_.Add()->assign(reinterpret_cast<const char*>(value), size);
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
GLMessage_DataType::charvalue() const {
  return charvalue_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
GLMessage_DataType::mutable_charvalue() {
  return &charvalue_;
}

// repeated bytes rawBytes = 6;
inline int GLMessage_DataType::rawbytes_size() const {
  return rawbytes_.size();
}
inline void GLMessage_DataType::clear_rawbytes() {
  rawbytes_.Clear();
}
inline const ::std::string& GLMessage_DataType::rawbytes(int index) const {
  return rawbytes_.Get(index);
}
inline ::std::string* GLMessage_DataType::mutable_rawbytes(int index) {
  return rawbytes_.Mutable(index);
}
inline void GLMessage_DataType::set_rawbytes(int index, const ::std::string& value) {
  rawbytes_.Mutable(index)->assign(value);
}
inline void GLMessage_DataType::set_rawbytes(int index, const char* value) {
  rawbytes_.Mutable(index)->assign(value);
}
inline void GLMessage_DataType::set_rawbytes(int index, const void* value, size_t size) {
  rawbytes_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
}
inline ::std::string* GLMessage_DataType::add_rawbytes() {
  return rawbytes_.Add();
}
inline void GLMessage_DataType::add_rawbytes(const ::std::string& value) {
  rawbytes_.Add()->assign(value);
}
inline void GLMessage_DataType::add_rawbytes(const char* value) {
  rawbytes_.Add()->assign(value);
}
inline void GLMessage_DataType::add_rawbytes(const void* value, size_t size) {
  rawbytes_.Add()->assign(reinterpret_cast<const char*>(value), size);
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
GLMessage_DataType::rawbytes() const {
  return rawbytes_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
GLMessage_DataType::mutable_rawbytes() {
  return &rawbytes_;
}

// repeated bool boolValue = 7;
inline int GLMessage_DataType::boolvalue_size() const {
  return boolvalue_.size();
}
inline void GLMessage_DataType::clear_boolvalue() {
  boolvalue_.Clear();
}
inline bool GLMessage_DataType::boolvalue(int index) const {
  return boolvalue_.Get(index);
}
inline void GLMessage_DataType::set_boolvalue(int index, bool value) {
  boolvalue_.Set(index, value);
}
inline void GLMessage_DataType::add_boolvalue(bool value) {
  boolvalue_.Add(value);
}
inline const ::google::protobuf::RepeatedField< bool >&
GLMessage_DataType::boolvalue() const {
  return boolvalue_;
}
inline ::google::protobuf::RepeatedField< bool >*
GLMessage_DataType::mutable_boolvalue() {
  return &boolvalue_;
}

// -------------------------------------------------------------------

// GLMessage_FrameBuffer

// required int32 width = 1;
inline bool GLMessage_FrameBuffer::has_width() const {
  return _has_bit(0);
}
inline void GLMessage_FrameBuffer::clear_width() {
  width_ = 0;
  _clear_bit(0);
}
inline ::google::protobuf::int32 GLMessage_FrameBuffer::width() const {
  return width_;
}
inline void GLMessage_FrameBuffer::set_width(::google::protobuf::int32 value) {
  _set_bit(0);
  width_ = value;
}

// required int32 height = 2;
inline bool GLMessage_FrameBuffer::has_height() const {
  return _has_bit(1);
}
inline void GLMessage_FrameBuffer::clear_height() {
  height_ = 0;
  _clear_bit(1);
}
inline ::google::protobuf::int32 GLMessage_FrameBuffer::height() const {
  return height_;
}
inline void GLMessage_FrameBuffer::set_height(::google::protobuf::int32 value) {
  _set_bit(1);
  height_ = value;
}

// repeated bytes contents = 3;
inline int GLMessage_FrameBuffer::contents_size() const {
  return contents_.size();
}
inline void GLMessage_FrameBuffer::clear_contents() {
  contents_.Clear();
}
inline const ::std::string& GLMessage_FrameBuffer::contents(int index) const {
  return contents_.Get(index);
}
inline ::std::string* GLMessage_FrameBuffer::mutable_contents(int index) {
  return contents_.Mutable(index);
}
inline void GLMessage_FrameBuffer::set_contents(int index, const ::std::string& value) {
  contents_.Mutable(index)->assign(value);
}
inline void GLMessage_FrameBuffer::set_contents(int index, const char* value) {
  contents_.Mutable(index)->assign(value);
}
inline void GLMessage_FrameBuffer::set_contents(int index, const void* value, size_t size) {
  contents_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
}
inline ::std::string* GLMessage_FrameBuffer::add_contents() {
  return contents_.Add();
}
inline void GLMessage_FrameBuffer::add_contents(const ::std::string& value) {
  contents_.Add()->assign(value);
}
inline void GLMessage_FrameBuffer::add_contents(const char* value) {
  contents_.Add()->assign(value);
}
inline void GLMessage_FrameBuffer::add_contents(const void* value, size_t size) {
  contents_.Add()->assign(reinterpret_cast<const char*>(value), size);
}
inline const ::google::protobuf::RepeatedPtrField< ::std::string>&
GLMessage_FrameBuffer::contents() const {
  return contents_;
}
inline ::google::protobuf::RepeatedPtrField< ::std::string>*
GLMessage_FrameBuffer::mutable_contents() {
  return &contents_;
}

// -------------------------------------------------------------------

// GLMessage

// required int32 context_id = 1;
inline bool GLMessage::has_context_id() const {
  return _has_bit(0);
}
inline void GLMessage::clear_context_id() {
  context_id_ = 0;
  _clear_bit(0);
}
inline ::google::protobuf::int32 GLMessage::context_id() const {
  return context_id_;
}
inline void GLMessage::set_context_id(::google::protobuf::int32 value) {
  _set_bit(0);
  context_id_ = value;
}

// required int64 start_time = 2;
inline bool GLMessage::has_start_time() const {
  return _has_bit(1);
}
inline void GLMessage::clear_start_time() {
  start_time_ = GOOGLE_LONGLONG(0);
  _clear_bit(1);
}
inline ::google::protobuf::int64 GLMessage::start_time() const {
  return start_time_;
}
inline void GLMessage::set_start_time(::google::protobuf::int64 value) {
  _set_bit(1);
  start_time_ = value;
}

// required int32 duration = 3;
inline bool GLMessage::has_duration() const {
  return _has_bit(2);
}
inline void GLMessage::clear_duration() {
  duration_ = 0;
  _clear_bit(2);
}
inline ::google::protobuf::int32 GLMessage::duration() const {
  return duration_;
}
inline void GLMessage::set_duration(::google::protobuf::int32 value) {
  _set_bit(2);
  duration_ = value;
}

// required .android.gltrace.GLMessage.Function function = 4 [default = invalid];
inline bool GLMessage::has_function() const {
  return _has_bit(3);
}
inline void GLMessage::clear_function() {
  function_ = 3000;
  _clear_bit(3);
}
inline ::android::gltrace::GLMessage_Function GLMessage::function() const {
  return static_cast< ::android::gltrace::GLMessage_Function >(function_);
}
inline void GLMessage::set_function(::android::gltrace::GLMessage_Function value) {
  GOOGLE_DCHECK(::android::gltrace::GLMessage_Function_IsValid(value));
  _set_bit(3);
  function_ = value;
}

// repeated .android.gltrace.GLMessage.DataType args = 5;
inline int GLMessage::args_size() const {
  return args_.size();
}
inline void GLMessage::clear_args() {
  args_.Clear();
}
inline const ::android::gltrace::GLMessage_DataType& GLMessage::args(int index) const {
  return args_.Get(index);
}
inline ::android::gltrace::GLMessage_DataType* GLMessage::mutable_args(int index) {
  return args_.Mutable(index);
}
inline ::android::gltrace::GLMessage_DataType* GLMessage::add_args() {
  return args_.Add();
}
inline const ::google::protobuf::RepeatedPtrField< ::android::gltrace::GLMessage_DataType >&
GLMessage::args() const {
  return args_;
}
inline ::google::protobuf::RepeatedPtrField< ::android::gltrace::GLMessage_DataType >*
GLMessage::mutable_args() {
  return &args_;
}

// optional .android.gltrace.GLMessage.DataType returnValue = 6;
inline bool GLMessage::has_returnvalue() const {
  return _has_bit(5);
}
inline void GLMessage::clear_returnvalue() {
  if (returnvalue_ != NULL) returnvalue_->::android::gltrace::GLMessage_DataType::Clear();
  _clear_bit(5);
}
inline const ::android::gltrace::GLMessage_DataType& GLMessage::returnvalue() const {
  return returnvalue_ != NULL ? *returnvalue_ : *default_instance_->returnvalue_;
}
inline ::android::gltrace::GLMessage_DataType* GLMessage::mutable_returnvalue() {
  _set_bit(5);
  if (returnvalue_ == NULL) returnvalue_ = new ::android::gltrace::GLMessage_DataType;
  return returnvalue_;
}

// optional .android.gltrace.GLMessage.FrameBuffer fb = 7;
inline bool GLMessage::has_fb() const {
  return _has_bit(6);
}
inline void GLMessage::clear_fb() {
  if (fb_ != NULL) fb_->::android::gltrace::GLMessage_FrameBuffer::Clear();
  _clear_bit(6);
}
inline const ::android::gltrace::GLMessage_FrameBuffer& GLMessage::fb() const {
  return fb_ != NULL ? *fb_ : *default_instance_->fb_;
}
inline ::android::gltrace::GLMessage_FrameBuffer* GLMessage::mutable_fb() {
  _set_bit(6);
  if (fb_ == NULL) fb_ = new ::android::gltrace::GLMessage_FrameBuffer;
  return fb_;
}

// optional int32 threadtime = 8;
inline bool GLMessage::has_threadtime() const {
  return _has_bit(7);
}
inline void GLMessage::clear_threadtime() {
  threadtime_ = 0;
  _clear_bit(7);
}
inline ::google::protobuf::int32 GLMessage::threadtime() const {
  return threadtime_;
}
inline void GLMessage::set_threadtime(::google::protobuf::int32 value) {
  _set_bit(7);
  threadtime_ = value;
}


// @@protoc_insertion_point(namespace_scope)

}  // namespace gltrace
}  // namespace android

// @@protoc_insertion_point(global_scope)

#endif  // PROTOBUF_gltrace_2eproto__INCLUDED
