1 /* 2 ** Copyright 2011, The Android Open Source Project 3 ** 4 ** Licensed under the Apache License, Version 2.0 (the "License"); 5 ** you may not use this file except in compliance with the License. 6 ** You may obtain a copy of the License at 7 ** 8 ** http://www.apache.org/licenses/LICENSE-2.0 9 ** 10 ** Unless required by applicable law or agreed to in writing, software 11 ** distributed under the License is distributed on an "AS IS" BASIS, 12 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 ** See the License for the specific language governing permissions and 14 ** limitations under the License. 15 */ 16 17 // auto generated by generate_MessageParser_java.py, 18 // which also prints skeleton code for MessageParserEx.java 19 20 package com.android.ide.eclipse.gldebugger; 21 22 import com.android.ide.eclipse.gldebugger.DebuggerMessage.Message; 23 import com.android.ide.eclipse.gldebugger.DebuggerMessage.Message.Function; 24 import com.google.protobuf.ByteString; 25 26 import java.nio.ByteBuffer; 27 28 public abstract class MessageParser { 29 30 String args; 31 getList()32 String[] getList() 33 { 34 String arg = args; 35 args = args.substring(args.lastIndexOf('}') + 1); 36 final int comma = args.indexOf(','); 37 if (comma >= 0) 38 args = args.substring(comma + 1).trim(); 39 else 40 args = null; 41 42 final int comment = arg.indexOf('='); 43 if (comment >= 0) 44 arg = arg.substring(comment + 1); 45 arg = arg.trim(); 46 assert arg.charAt(0) == '{'; 47 arg = arg.substring(1, arg.lastIndexOf('}')).trim(); 48 return arg.split("\\s*,\\s*"); 49 } 50 parseFloats(int count)51 ByteString parseFloats(int count) { 52 ByteBuffer buffer = ByteBuffer.allocate(count * 4); 53 buffer.order(GLFramesView.TARGET_BYTE_ORDER); 54 String [] arg = getList(); 55 for (int i = 0; i < count; i++) 56 buffer.putFloat(Float.parseFloat(arg[i].trim())); 57 buffer.rewind(); 58 return ByteString.copyFrom(buffer); 59 } 60 parseInts(int count)61 ByteString parseInts(int count) { 62 ByteBuffer buffer = ByteBuffer.allocate(count * 4); 63 buffer.order(GLFramesView.TARGET_BYTE_ORDER); 64 String [] arg = getList(); 65 for (int i = 0; i < count; i++) 66 buffer.putInt(Integer.parseInt(arg[i].trim())); 67 buffer.rewind(); 68 return ByteString.copyFrom(buffer); 69 } 70 parseUInts(int count)71 ByteString parseUInts(int count) { 72 ByteBuffer buffer = ByteBuffer.allocate(count * 4); 73 buffer.order(GLFramesView.TARGET_BYTE_ORDER); 74 String [] arg = getList(); 75 for (int i = 0; i < count; i++) 76 buffer.putInt((int)(Long.parseLong(arg[i].trim()) & 0xffffffff)); 77 buffer.rewind(); 78 return ByteString.copyFrom(buffer); 79 } 80 parseMatrix(int columns, int count)81 ByteString parseMatrix(int columns, int count) { 82 return parseFloats(columns * columns * count); 83 } 84 parseString()85 ByteString parseString() { 86 // TODO: escape sequence and proper string literal 87 String arg = args.substring(args.indexOf('"') + 1, args.lastIndexOf('"')); 88 args = args.substring(args.lastIndexOf('"')); 89 int comma = args.indexOf(','); 90 if (comma >= 0) 91 args = args.substring(comma + 1).trim(); 92 else 93 args = null; 94 return ByteString.copyFromUtf8(arg); 95 } 96 getArgument()97 String getArgument() 98 { 99 final int comma = args.indexOf(','); 100 String arg = null; 101 if (comma >= 0) 102 { 103 arg = args.substring(0, comma); 104 args = args.substring(comma + 1); 105 } 106 else 107 { 108 arg = args; 109 args = null; 110 } 111 final int comment = arg.indexOf('='); 112 if (comment >= 0) 113 arg = arg.substring(comment + 1); 114 return arg.trim(); 115 } 116 parseArgument()117 int parseArgument() 118 { 119 String arg = getArgument(); 120 if (arg.startsWith("GL_")) 121 return GLEnum.valueOf(arg).value; 122 else if (arg.toLowerCase().startsWith("0x")) 123 return Integer.parseInt(arg.substring(2), 16); 124 else 125 return Integer.parseInt(arg); 126 } 127 parseFloat()128 int parseFloat() 129 { 130 String arg = getArgument(); 131 return Float.floatToRawIntBits(Float.parseFloat(arg)); 132 } 133 parse(final Message.Builder builder, String string)134 public void parse(final Message.Builder builder, String string) { 135 int lparen = string.indexOf("("), rparen = string.lastIndexOf(")"); 136 String s = string.substring(0, lparen).trim(); 137 args = string.substring(lparen + 1, rparen); 138 String[] t = s.split(" "); 139 Function function = Function.valueOf(t[t.length - 1]); 140 builder.setFunction(function); 141 switch (function) { 142 case glActiveTexture: 143 builder.setArg0(parseArgument()); // GLenum texture 144 break; 145 case glAttachShader: 146 builder.setArg0(parseArgument()); // GLuint program 147 builder.setArg1(parseArgument()); // GLuint shader 148 break; 149 case glBindAttribLocation: 150 builder.setArg0(parseArgument()); // GLuint program 151 builder.setArg1(parseArgument()); // GLuint index 152 builder.setData(parseString()); // GLchar name 153 break; 154 case glBindBuffer: 155 builder.setArg0(parseArgument()); // GLenum target 156 builder.setArg1(parseArgument()); // GLuint buffer 157 break; 158 case glBindFramebuffer: 159 builder.setArg0(parseArgument()); // GLenum target 160 builder.setArg1(parseArgument()); // GLuint framebuffer 161 break; 162 case glBindRenderbuffer: 163 builder.setArg0(parseArgument()); // GLenum target 164 builder.setArg1(parseArgument()); // GLuint renderbuffer 165 break; 166 case glBindTexture: 167 builder.setArg0(parseArgument()); // GLenum target 168 builder.setArg1(parseArgument()); // GLuint texture 169 break; 170 case glBlendColor: 171 builder.setArg0(parseFloat()); // GLclampf red 172 builder.setArg1(parseFloat()); // GLclampf green 173 builder.setArg2(parseFloat()); // GLclampf blue 174 builder.setArg3(parseFloat()); // GLclampf alpha 175 break; 176 case glBlendEquation: 177 builder.setArg0(parseArgument()); // GLenum mode 178 break; 179 case glBlendEquationSeparate: 180 builder.setArg0(parseArgument()); // GLenum modeRGB 181 builder.setArg1(parseArgument()); // GLenum modeAlpha 182 break; 183 case glBlendFunc: 184 builder.setArg0(parseArgument()); // GLenum sfactor 185 builder.setArg1(parseArgument()); // GLenum dfactor 186 break; 187 case glBlendFuncSeparate: 188 builder.setArg0(parseArgument()); // GLenum srcRGB 189 builder.setArg1(parseArgument()); // GLenum dstRGB 190 builder.setArg2(parseArgument()); // GLenum srcAlpha 191 builder.setArg3(parseArgument()); // GLenum dstAlpha 192 break; 193 case glBufferData: 194 parse_glBufferData(builder); 195 break; 196 case glBufferSubData: 197 parse_glBufferSubData(builder); 198 break; 199 case glCheckFramebufferStatus: 200 builder.setArg0(parseArgument()); // GLenum target 201 break; 202 case glClear: 203 builder.setArg0(parseArgument()); // GLbitfield mask 204 break; 205 case glClearColor: 206 builder.setArg0(parseFloat()); // GLclampf red 207 builder.setArg1(parseFloat()); // GLclampf green 208 builder.setArg2(parseFloat()); // GLclampf blue 209 builder.setArg3(parseFloat()); // GLclampf alpha 210 break; 211 case glClearDepthf: 212 builder.setArg0(parseFloat()); // GLclampf depth 213 break; 214 case glClearStencil: 215 builder.setArg0(parseArgument()); // GLint s 216 break; 217 case glColorMask: 218 builder.setArg0(parseArgument()); // GLboolean red 219 builder.setArg1(parseArgument()); // GLboolean green 220 builder.setArg2(parseArgument()); // GLboolean blue 221 builder.setArg3(parseArgument()); // GLboolean alpha 222 break; 223 case glCompileShader: 224 builder.setArg0(parseArgument()); // GLuint shader 225 break; 226 case glCompressedTexImage2D: 227 parse_glCompressedTexImage2D(builder); 228 break; 229 case glCompressedTexSubImage2D: 230 parse_glCompressedTexSubImage2D(builder); 231 break; 232 case glCopyTexImage2D: 233 builder.setArg0(parseArgument()); // GLenum target 234 builder.setArg1(parseArgument()); // GLint level 235 builder.setArg2(parseArgument()); // GLenum internalformat 236 builder.setArg3(parseArgument()); // GLint x 237 builder.setArg4(parseArgument()); // GLint y 238 builder.setArg5(parseArgument()); // GLsizei width 239 builder.setArg6(parseArgument()); // GLsizei height 240 builder.setArg7(parseArgument()); // GLint border 241 break; 242 case glCopyTexSubImage2D: 243 builder.setArg0(parseArgument()); // GLenum target 244 builder.setArg1(parseArgument()); // GLint level 245 builder.setArg2(parseArgument()); // GLint xoffset 246 builder.setArg3(parseArgument()); // GLint yoffset 247 builder.setArg4(parseArgument()); // GLint x 248 builder.setArg5(parseArgument()); // GLint y 249 builder.setArg6(parseArgument()); // GLsizei width 250 builder.setArg7(parseArgument()); // GLsizei height 251 break; 252 case glCreateProgram: 253 break; 254 case glCreateShader: 255 builder.setArg0(parseArgument()); // GLenum type 256 break; 257 case glCullFace: 258 builder.setArg0(parseArgument()); // GLenum mode 259 break; 260 case glDeleteBuffers: 261 builder.setArg0(parseArgument()); // GLsizei n 262 builder.setData(parseUInts(1 * builder.getArg0())); // GLuint buffers 263 break; 264 case glDeleteFramebuffers: 265 builder.setArg0(parseArgument()); // GLsizei n 266 builder.setData(parseUInts(1 * builder.getArg0())); // GLuint framebuffers 267 break; 268 case glDeleteProgram: 269 builder.setArg0(parseArgument()); // GLuint program 270 break; 271 case glDeleteRenderbuffers: 272 builder.setArg0(parseArgument()); // GLsizei n 273 builder.setData(parseUInts(1 * builder.getArg0())); // GLuint renderbuffers 274 break; 275 case glDeleteShader: 276 builder.setArg0(parseArgument()); // GLuint shader 277 break; 278 case glDeleteTextures: 279 builder.setArg0(parseArgument()); // GLsizei n 280 builder.setData(parseUInts(1 * builder.getArg0())); // GLuint textures 281 break; 282 case glDepthFunc: 283 builder.setArg0(parseArgument()); // GLenum func 284 break; 285 case glDepthMask: 286 builder.setArg0(parseArgument()); // GLboolean flag 287 break; 288 case glDepthRangef: 289 builder.setArg0(parseFloat()); // GLclampf zNear 290 builder.setArg1(parseFloat()); // GLclampf zFar 291 break; 292 case glDetachShader: 293 builder.setArg0(parseArgument()); // GLuint program 294 builder.setArg1(parseArgument()); // GLuint shader 295 break; 296 case glDisable: 297 builder.setArg0(parseArgument()); // GLenum cap 298 break; 299 case glDisableVertexAttribArray: 300 builder.setArg0(parseArgument()); // GLuint index 301 break; 302 case glDrawArrays: 303 builder.setArg0(parseArgument()); // GLenum mode 304 builder.setArg1(parseArgument()); // GLint first 305 builder.setArg2(parseArgument()); // GLsizei count 306 break; 307 case glDrawElements: 308 parse_glDrawElements(builder); 309 break; 310 case glEnable: 311 builder.setArg0(parseArgument()); // GLenum cap 312 break; 313 case glEnableVertexAttribArray: 314 builder.setArg0(parseArgument()); // GLuint index 315 break; 316 case glFinish: 317 break; 318 case glFlush: 319 break; 320 case glFramebufferRenderbuffer: 321 builder.setArg0(parseArgument()); // GLenum target 322 builder.setArg1(parseArgument()); // GLenum attachment 323 builder.setArg2(parseArgument()); // GLenum renderbuffertarget 324 builder.setArg3(parseArgument()); // GLuint renderbuffer 325 break; 326 case glFramebufferTexture2D: 327 builder.setArg0(parseArgument()); // GLenum target 328 builder.setArg1(parseArgument()); // GLenum attachment 329 builder.setArg2(parseArgument()); // GLenum textarget 330 builder.setArg3(parseArgument()); // GLuint texture 331 builder.setArg4(parseArgument()); // GLint level 332 break; 333 case glFrontFace: 334 builder.setArg0(parseArgument()); // GLenum mode 335 break; 336 case glGenBuffers: 337 builder.setArg0(parseArgument()); // GLsizei n 338 builder.setData(parseUInts(1 * builder.getArg0())); // GLuint buffers 339 break; 340 case glGenerateMipmap: 341 builder.setArg0(parseArgument()); // GLenum target 342 break; 343 case glGenFramebuffers: 344 builder.setArg0(parseArgument()); // GLsizei n 345 builder.setData(parseUInts(1 * builder.getArg0())); // GLuint framebuffers 346 break; 347 case glGenRenderbuffers: 348 builder.setArg0(parseArgument()); // GLsizei n 349 builder.setData(parseUInts(1 * builder.getArg0())); // GLuint renderbuffers 350 break; 351 case glGenTextures: 352 builder.setArg0(parseArgument()); // GLsizei n 353 builder.setData(parseUInts(1 * builder.getArg0())); // GLuint textures 354 break; 355 case glGetActiveAttrib: 356 parse_glGetActiveAttrib(builder); 357 break; 358 case glGetActiveUniform: 359 parse_glGetActiveUniform(builder); 360 break; 361 case glGetAttachedShaders: 362 parse_glGetAttachedShaders(builder); 363 break; 364 case glGetAttribLocation: 365 builder.setArg0(parseArgument()); // GLuint program 366 builder.setData(parseString()); // GLchar name 367 break; 368 case glGetBooleanv: 369 parse_glGetBooleanv(builder); 370 break; 371 case glGetBufferParameteriv: 372 parse_glGetBufferParameteriv(builder); 373 break; 374 case glGetError: 375 break; 376 case glGetFloatv: 377 parse_glGetFloatv(builder); 378 break; 379 case glGetFramebufferAttachmentParameteriv: 380 parse_glGetFramebufferAttachmentParameteriv(builder); 381 break; 382 case glGetIntegerv: 383 parse_glGetIntegerv(builder); 384 break; 385 case glGetProgramiv: 386 builder.setArg0(parseArgument()); // GLuint program 387 builder.setArg1(parseArgument()); // GLenum pname 388 builder.setData(parseInts(1)); // GLint params 389 break; 390 case glGetProgramInfoLog: 391 parse_glGetProgramInfoLog(builder); 392 break; 393 case glGetRenderbufferParameteriv: 394 parse_glGetRenderbufferParameteriv(builder); 395 break; 396 case glGetShaderiv: 397 builder.setArg0(parseArgument()); // GLuint shader 398 builder.setArg1(parseArgument()); // GLenum pname 399 builder.setData(parseInts(1)); // GLint params 400 break; 401 case glGetShaderInfoLog: 402 parse_glGetShaderInfoLog(builder); 403 break; 404 case glGetShaderPrecisionFormat: 405 parse_glGetShaderPrecisionFormat(builder); 406 break; 407 case glGetShaderSource: 408 parse_glGetShaderSource(builder); 409 break; 410 case glGetString: 411 builder.setArg0(parseArgument()); // GLenum name 412 break; 413 case glGetTexParameterfv: 414 parse_glGetTexParameterfv(builder); 415 break; 416 case glGetTexParameteriv: 417 parse_glGetTexParameteriv(builder); 418 break; 419 case glGetUniformfv: 420 parse_glGetUniformfv(builder); 421 break; 422 case glGetUniformiv: 423 parse_glGetUniformiv(builder); 424 break; 425 case glGetUniformLocation: 426 builder.setArg0(parseArgument()); // GLuint program 427 builder.setData(parseString()); // GLchar name 428 break; 429 case glGetVertexAttribfv: 430 parse_glGetVertexAttribfv(builder); 431 break; 432 case glGetVertexAttribiv: 433 parse_glGetVertexAttribiv(builder); 434 break; 435 case glGetVertexAttribPointerv: 436 parse_glGetVertexAttribPointerv(builder); 437 break; 438 case glHint: 439 builder.setArg0(parseArgument()); // GLenum target 440 builder.setArg1(parseArgument()); // GLenum mode 441 break; 442 case glIsBuffer: 443 builder.setArg0(parseArgument()); // GLuint buffer 444 break; 445 case glIsEnabled: 446 builder.setArg0(parseArgument()); // GLenum cap 447 break; 448 case glIsFramebuffer: 449 builder.setArg0(parseArgument()); // GLuint framebuffer 450 break; 451 case glIsProgram: 452 builder.setArg0(parseArgument()); // GLuint program 453 break; 454 case glIsRenderbuffer: 455 builder.setArg0(parseArgument()); // GLuint renderbuffer 456 break; 457 case glIsShader: 458 builder.setArg0(parseArgument()); // GLuint shader 459 break; 460 case glIsTexture: 461 builder.setArg0(parseArgument()); // GLuint texture 462 break; 463 case glLineWidth: 464 builder.setArg0(parseFloat()); // GLfloat width 465 break; 466 case glLinkProgram: 467 builder.setArg0(parseArgument()); // GLuint program 468 break; 469 case glPixelStorei: 470 builder.setArg0(parseArgument()); // GLenum pname 471 builder.setArg1(parseArgument()); // GLint param 472 break; 473 case glPolygonOffset: 474 builder.setArg0(parseFloat()); // GLfloat factor 475 builder.setArg1(parseFloat()); // GLfloat units 476 break; 477 case glReadPixels: 478 parse_glReadPixels(builder); 479 break; 480 case glReleaseShaderCompiler: 481 break; 482 case glRenderbufferStorage: 483 builder.setArg0(parseArgument()); // GLenum target 484 builder.setArg1(parseArgument()); // GLenum internalformat 485 builder.setArg2(parseArgument()); // GLsizei width 486 builder.setArg3(parseArgument()); // GLsizei height 487 break; 488 case glSampleCoverage: 489 builder.setArg0(parseFloat()); // GLclampf value 490 builder.setArg1(parseArgument()); // GLboolean invert 491 break; 492 case glScissor: 493 builder.setArg0(parseArgument()); // GLint x 494 builder.setArg1(parseArgument()); // GLint y 495 builder.setArg2(parseArgument()); // GLsizei width 496 builder.setArg3(parseArgument()); // GLsizei height 497 break; 498 case glShaderBinary: 499 parse_glShaderBinary(builder); 500 break; 501 case glShaderSource: 502 parse_glShaderSource(builder); 503 break; 504 case glStencilFunc: 505 builder.setArg0(parseArgument()); // GLenum func 506 builder.setArg1(parseArgument()); // GLint ref 507 builder.setArg2(parseArgument()); // GLuint mask 508 break; 509 case glStencilFuncSeparate: 510 builder.setArg0(parseArgument()); // GLenum face 511 builder.setArg1(parseArgument()); // GLenum func 512 builder.setArg2(parseArgument()); // GLint ref 513 builder.setArg3(parseArgument()); // GLuint mask 514 break; 515 case glStencilMask: 516 builder.setArg0(parseArgument()); // GLuint mask 517 break; 518 case glStencilMaskSeparate: 519 builder.setArg0(parseArgument()); // GLenum face 520 builder.setArg1(parseArgument()); // GLuint mask 521 break; 522 case glStencilOp: 523 builder.setArg0(parseArgument()); // GLenum fail 524 builder.setArg1(parseArgument()); // GLenum zfail 525 builder.setArg2(parseArgument()); // GLenum zpass 526 break; 527 case glStencilOpSeparate: 528 builder.setArg0(parseArgument()); // GLenum face 529 builder.setArg1(parseArgument()); // GLenum fail 530 builder.setArg2(parseArgument()); // GLenum zfail 531 builder.setArg3(parseArgument()); // GLenum zpass 532 break; 533 case glTexImage2D: 534 parse_glTexImage2D(builder); 535 break; 536 case glTexParameterf: 537 builder.setArg0(parseArgument()); // GLenum target 538 builder.setArg1(parseArgument()); // GLenum pname 539 builder.setArg2(parseFloat()); // GLfloat param 540 break; 541 case glTexParameterfv: 542 parse_glTexParameterfv(builder); 543 break; 544 case glTexParameteri: 545 builder.setArg0(parseArgument()); // GLenum target 546 builder.setArg1(parseArgument()); // GLenum pname 547 builder.setArg2(parseArgument()); // GLint param 548 break; 549 case glTexParameteriv: 550 parse_glTexParameteriv(builder); 551 break; 552 case glTexSubImage2D: 553 parse_glTexSubImage2D(builder); 554 break; 555 case glUniform1f: 556 builder.setArg0(parseArgument()); // GLint location 557 builder.setArg1(parseFloat()); // GLfloat x 558 break; 559 case glUniform1fv: 560 builder.setArg0(parseArgument()); // GLint location 561 builder.setArg1(parseArgument()); // GLsizei count 562 builder.setData(parseFloats(1 * builder.getArg1())); // GLfloat v 563 break; 564 case glUniform1i: 565 builder.setArg0(parseArgument()); // GLint location 566 builder.setArg1(parseArgument()); // GLint x 567 break; 568 case glUniform1iv: 569 builder.setArg0(parseArgument()); // GLint location 570 builder.setArg1(parseArgument()); // GLsizei count 571 builder.setData(parseInts(1 * builder.getArg1())); // GLint v 572 break; 573 case glUniform2f: 574 builder.setArg0(parseArgument()); // GLint location 575 builder.setArg1(parseFloat()); // GLfloat x 576 builder.setArg2(parseFloat()); // GLfloat y 577 break; 578 case glUniform2fv: 579 builder.setArg0(parseArgument()); // GLint location 580 builder.setArg1(parseArgument()); // GLsizei count 581 builder.setData(parseFloats(2 * builder.getArg1())); // GLfloat v 582 break; 583 case glUniform2i: 584 builder.setArg0(parseArgument()); // GLint location 585 builder.setArg1(parseArgument()); // GLint x 586 builder.setArg2(parseArgument()); // GLint y 587 break; 588 case glUniform2iv: 589 builder.setArg0(parseArgument()); // GLint location 590 builder.setArg1(parseArgument()); // GLsizei count 591 builder.setData(parseInts(2 * builder.getArg1())); // GLint v 592 break; 593 case glUniform3f: 594 builder.setArg0(parseArgument()); // GLint location 595 builder.setArg1(parseFloat()); // GLfloat x 596 builder.setArg2(parseFloat()); // GLfloat y 597 builder.setArg3(parseFloat()); // GLfloat z 598 break; 599 case glUniform3fv: 600 builder.setArg0(parseArgument()); // GLint location 601 builder.setArg1(parseArgument()); // GLsizei count 602 builder.setData(parseFloats(3 * builder.getArg1())); // GLfloat v 603 break; 604 case glUniform3i: 605 builder.setArg0(parseArgument()); // GLint location 606 builder.setArg1(parseArgument()); // GLint x 607 builder.setArg2(parseArgument()); // GLint y 608 builder.setArg3(parseArgument()); // GLint z 609 break; 610 case glUniform3iv: 611 builder.setArg0(parseArgument()); // GLint location 612 builder.setArg1(parseArgument()); // GLsizei count 613 builder.setData(parseInts(3 * builder.getArg1())); // GLint v 614 break; 615 case glUniform4f: 616 builder.setArg0(parseArgument()); // GLint location 617 builder.setArg1(parseFloat()); // GLfloat x 618 builder.setArg2(parseFloat()); // GLfloat y 619 builder.setArg3(parseFloat()); // GLfloat z 620 builder.setArg4(parseFloat()); // GLfloat w 621 break; 622 case glUniform4fv: 623 builder.setArg0(parseArgument()); // GLint location 624 builder.setArg1(parseArgument()); // GLsizei count 625 builder.setData(parseFloats(4 * builder.getArg1())); // GLfloat v 626 break; 627 case glUniform4i: 628 builder.setArg0(parseArgument()); // GLint location 629 builder.setArg1(parseArgument()); // GLint x 630 builder.setArg2(parseArgument()); // GLint y 631 builder.setArg3(parseArgument()); // GLint z 632 builder.setArg4(parseArgument()); // GLint w 633 break; 634 case glUniform4iv: 635 builder.setArg0(parseArgument()); // GLint location 636 builder.setArg1(parseArgument()); // GLsizei count 637 builder.setData(parseInts(4 * builder.getArg1())); // GLint v 638 break; 639 case glUniformMatrix2fv: 640 builder.setArg0(parseArgument()); // GLint location 641 builder.setArg1(parseArgument()); // GLsizei count 642 builder.setArg2(parseArgument()); // GLboolean transpose 643 builder.setData(parseMatrix(2, builder.getArg1())); // GLfloat value 644 break; 645 case glUniformMatrix3fv: 646 builder.setArg0(parseArgument()); // GLint location 647 builder.setArg1(parseArgument()); // GLsizei count 648 builder.setArg2(parseArgument()); // GLboolean transpose 649 builder.setData(parseMatrix(3, builder.getArg1())); // GLfloat value 650 break; 651 case glUniformMatrix4fv: 652 builder.setArg0(parseArgument()); // GLint location 653 builder.setArg1(parseArgument()); // GLsizei count 654 builder.setArg2(parseArgument()); // GLboolean transpose 655 builder.setData(parseMatrix(4, builder.getArg1())); // GLfloat value 656 break; 657 case glUseProgram: 658 builder.setArg0(parseArgument()); // GLuint program 659 break; 660 case glValidateProgram: 661 builder.setArg0(parseArgument()); // GLuint program 662 break; 663 case glVertexAttrib1f: 664 builder.setArg0(parseArgument()); // GLuint indx 665 builder.setArg1(parseFloat()); // GLfloat x 666 break; 667 case glVertexAttrib1fv: 668 builder.setArg0(parseArgument()); // GLuint indx 669 builder.setData(parseFloats(1)); // GLfloat values 670 break; 671 case glVertexAttrib2f: 672 builder.setArg0(parseArgument()); // GLuint indx 673 builder.setArg1(parseFloat()); // GLfloat x 674 builder.setArg2(parseFloat()); // GLfloat y 675 break; 676 case glVertexAttrib2fv: 677 builder.setArg0(parseArgument()); // GLuint indx 678 builder.setData(parseFloats(2)); // GLfloat values 679 break; 680 case glVertexAttrib3f: 681 builder.setArg0(parseArgument()); // GLuint indx 682 builder.setArg1(parseFloat()); // GLfloat x 683 builder.setArg2(parseFloat()); // GLfloat y 684 builder.setArg3(parseFloat()); // GLfloat z 685 break; 686 case glVertexAttrib3fv: 687 builder.setArg0(parseArgument()); // GLuint indx 688 builder.setData(parseFloats(3)); // GLfloat values 689 break; 690 case glVertexAttrib4f: 691 builder.setArg0(parseArgument()); // GLuint indx 692 builder.setArg1(parseFloat()); // GLfloat x 693 builder.setArg2(parseFloat()); // GLfloat y 694 builder.setArg3(parseFloat()); // GLfloat z 695 builder.setArg4(parseFloat()); // GLfloat w 696 break; 697 case glVertexAttrib4fv: 698 builder.setArg0(parseArgument()); // GLuint indx 699 builder.setData(parseFloats(4)); // GLfloat values 700 break; 701 case glVertexAttribPointer: 702 parse_glVertexAttribPointer(builder); 703 break; 704 case glViewport: 705 builder.setArg0(parseArgument()); // GLint x 706 builder.setArg1(parseArgument()); // GLint y 707 builder.setArg2(parseArgument()); // GLsizei width 708 builder.setArg3(parseArgument()); // GLsizei height 709 break; 710 default: 711 assert false; 712 } 713 } parse_glBufferData(Message.Builder builder)714 abstract void parse_glBufferData(Message.Builder builder); parse_glBufferSubData(Message.Builder builder)715 abstract void parse_glBufferSubData(Message.Builder builder); parse_glCompressedTexImage2D(Message.Builder builder)716 abstract void parse_glCompressedTexImage2D(Message.Builder builder); parse_glCompressedTexSubImage2D(Message.Builder builder)717 abstract void parse_glCompressedTexSubImage2D(Message.Builder builder); parse_glDrawElements(Message.Builder builder)718 abstract void parse_glDrawElements(Message.Builder builder); parse_glGetActiveAttrib(Message.Builder builder)719 abstract void parse_glGetActiveAttrib(Message.Builder builder); parse_glGetActiveUniform(Message.Builder builder)720 abstract void parse_glGetActiveUniform(Message.Builder builder); parse_glGetAttachedShaders(Message.Builder builder)721 abstract void parse_glGetAttachedShaders(Message.Builder builder); parse_glGetBooleanv(Message.Builder builder)722 abstract void parse_glGetBooleanv(Message.Builder builder); parse_glGetBufferParameteriv(Message.Builder builder)723 abstract void parse_glGetBufferParameteriv(Message.Builder builder); parse_glGetFloatv(Message.Builder builder)724 abstract void parse_glGetFloatv(Message.Builder builder); parse_glGetFramebufferAttachmentParameteriv(Message.Builder builder)725 abstract void parse_glGetFramebufferAttachmentParameteriv(Message.Builder builder); parse_glGetIntegerv(Message.Builder builder)726 abstract void parse_glGetIntegerv(Message.Builder builder); parse_glGetProgramInfoLog(Message.Builder builder)727 abstract void parse_glGetProgramInfoLog(Message.Builder builder); parse_glGetRenderbufferParameteriv(Message.Builder builder)728 abstract void parse_glGetRenderbufferParameteriv(Message.Builder builder); parse_glGetShaderInfoLog(Message.Builder builder)729 abstract void parse_glGetShaderInfoLog(Message.Builder builder); parse_glGetShaderPrecisionFormat(Message.Builder builder)730 abstract void parse_glGetShaderPrecisionFormat(Message.Builder builder); parse_glGetShaderSource(Message.Builder builder)731 abstract void parse_glGetShaderSource(Message.Builder builder); parse_glGetTexParameterfv(Message.Builder builder)732 abstract void parse_glGetTexParameterfv(Message.Builder builder); parse_glGetTexParameteriv(Message.Builder builder)733 abstract void parse_glGetTexParameteriv(Message.Builder builder); parse_glGetUniformfv(Message.Builder builder)734 abstract void parse_glGetUniformfv(Message.Builder builder); parse_glGetUniformiv(Message.Builder builder)735 abstract void parse_glGetUniformiv(Message.Builder builder); parse_glGetVertexAttribfv(Message.Builder builder)736 abstract void parse_glGetVertexAttribfv(Message.Builder builder); parse_glGetVertexAttribiv(Message.Builder builder)737 abstract void parse_glGetVertexAttribiv(Message.Builder builder); parse_glGetVertexAttribPointerv(Message.Builder builder)738 abstract void parse_glGetVertexAttribPointerv(Message.Builder builder); parse_glReadPixels(Message.Builder builder)739 abstract void parse_glReadPixels(Message.Builder builder); parse_glShaderBinary(Message.Builder builder)740 abstract void parse_glShaderBinary(Message.Builder builder); parse_glShaderSource(Message.Builder builder)741 abstract void parse_glShaderSource(Message.Builder builder); parse_glTexImage2D(Message.Builder builder)742 abstract void parse_glTexImage2D(Message.Builder builder); parse_glTexParameterfv(Message.Builder builder)743 abstract void parse_glTexParameterfv(Message.Builder builder); parse_glTexParameteriv(Message.Builder builder)744 abstract void parse_glTexParameteriv(Message.Builder builder); parse_glTexSubImage2D(Message.Builder builder)745 abstract void parse_glTexSubImage2D(Message.Builder builder); parse_glVertexAttribPointer(Message.Builder builder)746 abstract void parse_glVertexAttribPointer(Message.Builder builder); 747 } 748