From 06aa2843155f2972963f08c8e88f611f6d2b7c6b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Fonseca?= Date: Thu, 5 May 2011 07:55:54 +0100 Subject: [PATCH] Move OS-specific retracing functions to separate files. --- CMakeLists.txt | 2 + glretrace.hpp | 3 + glretrace.py | 2 +- glretrace_glx.cpp | 732 +++++++++++++++++++++++++++++++++ glretrace_main.cpp | 26 +- glretrace_wgl.cpp | 1140 ++++++++++++++++++++++++++++++++++++++++++++++++++++ stdapi.py | 2 +- 7 files changed, 1884 insertions(+), 23 deletions(-) create mode 100644 glretrace_glx.cpp create mode 100644 glretrace_wgl.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index d2ef21d..4594580 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -268,6 +268,8 @@ include_directories ( add_executable (glretrace glretrace_gl.cpp + glretrace_glx.cpp + glretrace_wgl.cpp glretrace_main.cpp glretrace_state.cpp retrace.cpp diff --git a/glretrace.hpp b/glretrace.hpp index 5fce5dc..9d74641 100644 --- a/glretrace.hpp +++ b/glretrace.hpp @@ -59,6 +59,9 @@ extern unsigned dump_state; void checkGlError(int callIdx = -1); +void retrace_call_glx(Trace::Call &call); +void retrace_call_wgl(Trace::Call &call); + void frame_complete(unsigned call_no); void state_dump(std::ostream &os); diff --git a/glretrace.py b/glretrace.py index ae9ca61..7eab126 100644 --- a/glretrace.py +++ b/glretrace.py @@ -186,4 +186,4 @@ if __name__ == '__main__': api = glapi.glapi api.add_function(glapi.memcpy) retracer = GlRetracer() - retracer.retrace_api(glapi.glapi) + retracer.retrace_api(api) diff --git a/glretrace_glx.cpp b/glretrace_glx.cpp new file mode 100644 index 0000000..11465ea --- /dev/null +++ b/glretrace_glx.cpp @@ -0,0 +1,732 @@ +/************************************************************************** + * + * Copyright 2011 Jose Fonseca + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + **************************************************************************/ + + +#include "glproc.hpp" +#include "retrace.hpp" +#include "glretrace.hpp" + + +using namespace glretrace; + + +static void retrace_glXChooseVisual(Trace::Call &call) { +} + +static void retrace_glXCreateContext(Trace::Call &call) { +} + +static void retrace_glXDestroyContext(Trace::Call &call) { +} + +static void retrace_glXMakeCurrent(Trace::Call &call) { + glFlush(); + if (!double_buffer) { + frame_complete(call.no); + } +} + +static void retrace_glXCopyContext(Trace::Call &call) { +} + +static void retrace_glXSwapBuffers(Trace::Call &call) { + frame_complete(call.no); + if (double_buffer) { + drawable->swapBuffers(); + } else { + glFlush(); + } +} + +static void retrace_glXCreateGLXPixmap(Trace::Call &call) { +} + +static void retrace_glXDestroyGLXPixmap(Trace::Call &call) { +} + +static void retrace_glXQueryExtension(Trace::Call &call) { +} + +static void retrace_glXQueryVersion(Trace::Call &call) { +} + +static void retrace_glXIsDirect(Trace::Call &call) { +} + +static void retrace_glXGetConfig(Trace::Call &call) { +} + +static void retrace_glXWaitGL(Trace::Call &call) { +} + +static void retrace_glXWaitX(Trace::Call &call) { +} + +static void retrace_glXUseXFont(Trace::Call &call) { +} + +static void retrace_glXQueryExtensionsString(Trace::Call &call) { +} + +static void retrace_glXQueryServerString(Trace::Call &call) { +} + +static void retrace_glXGetClientString(Trace::Call &call) { +} + +static void retrace_glXChooseFBConfig(Trace::Call &call) { +} + +static void retrace_glXGetFBConfigAttrib(Trace::Call &call) { +} + +static void retrace_glXGetFBConfigs(Trace::Call &call) { +} + +static void retrace_glXGetVisualFromFBConfig(Trace::Call &call) { +} + +static void retrace_glXCreateWindow(Trace::Call &call) { +} + +static void retrace_glXDestroyWindow(Trace::Call &call) { +} + +static void retrace_glXCreatePixmap(Trace::Call &call) { +} + +static void retrace_glXDestroyPixmap(Trace::Call &call) { +} + +static void retrace_glXCreatePbuffer(Trace::Call &call) { +} + +static void retrace_glXDestroyPbuffer(Trace::Call &call) { +} + +static void retrace_glXQueryDrawable(Trace::Call &call) { +} + +static void retrace_glXCreateNewContext(Trace::Call &call) { +} + +static void retrace_glXMakeContextCurrent(Trace::Call &call) { +} + +static void retrace_glXGetCurrentReadDrawable(Trace::Call &call) { +} + +static void retrace_glXQueryContext(Trace::Call &call) { +} + +static void retrace_glXSelectEvent(Trace::Call &call) { +} + +static void retrace_glXGetSelectedEvent(Trace::Call &call) { +} + +static void retrace_glXGetProcAddressARB(Trace::Call &call) { +} + +static void retrace_glXGetProcAddress(Trace::Call &call) { +} + +void glretrace::retrace_call_glx(Trace::Call &call) { + const char *name = call.name().c_str(); + + switch (name[3]) { + case 'C': + switch (name[4]) { + case 'h': + switch (name[5]) { + case 'o': + switch (name[6]) { + case 'o': + switch (name[7]) { + case 's': + switch (name[8]) { + case 'e': + switch (name[9]) { + case 'F': + if (name[10] == 'B' && name[11] == 'C' && name[12] == 'o' && name[13] == 'n' && name[14] == 'f' && name[15] == 'i' && name[16] == 'g' && name[17] == '\0') { + // glXChooseFBConfig + retrace_glXChooseFBConfig(call); + return; + } + break; + case 'V': + if (name[10] == 'i' && name[11] == 's' && name[12] == 'u' && name[13] == 'a' && name[14] == 'l' && name[15] == '\0') { + // glXChooseVisual + retrace_glXChooseVisual(call); + return; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + case 'o': + if (name[5] == 'p' && name[6] == 'y' && name[7] == 'C' && name[8] == 'o' && name[9] == 'n' && name[10] == 't' && name[11] == 'e' && name[12] == 'x' && name[13] == 't' && name[14] == '\0') { + // glXCopyContext + retrace_glXCopyContext(call); + return; + } + break; + case 'r': + switch (name[5]) { + case 'e': + switch (name[6]) { + case 'a': + switch (name[7]) { + case 't': + switch (name[8]) { + case 'e': + switch (name[9]) { + case 'C': + if (name[10] == 'o' && name[11] == 'n' && name[12] == 't' && name[13] == 'e' && name[14] == 'x' && name[15] == 't' && name[16] == '\0') { + // glXCreateContext + retrace_glXCreateContext(call); + return; + } + break; + case 'G': + if (name[10] == 'L' && name[11] == 'X' && name[12] == 'P' && name[13] == 'i' && name[14] == 'x' && name[15] == 'm' && name[16] == 'a' && name[17] == 'p' && name[18] == '\0') { + // glXCreateGLXPixmap + retrace_glXCreateGLXPixmap(call); + return; + } + break; + case 'N': + if (name[10] == 'e' && name[11] == 'w' && name[12] == 'C' && name[13] == 'o' && name[14] == 'n' && name[15] == 't' && name[16] == 'e' && name[17] == 'x' && name[18] == 't' && name[19] == '\0') { + // glXCreateNewContext + retrace_glXCreateNewContext(call); + return; + } + break; + case 'P': + switch (name[10]) { + case 'b': + if (name[11] == 'u' && name[12] == 'f' && name[13] == 'f' && name[14] == 'e' && name[15] == 'r' && name[16] == '\0') { + // glXCreatePbuffer + retrace_glXCreatePbuffer(call); + return; + } + break; + case 'i': + if (name[11] == 'x' && name[12] == 'm' && name[13] == 'a' && name[14] == 'p' && name[15] == '\0') { + // glXCreatePixmap + retrace_glXCreatePixmap(call); + return; + } + break; + } + break; + case 'W': + if (name[10] == 'i' && name[11] == 'n' && name[12] == 'd' && name[13] == 'o' && name[14] == 'w' && name[15] == '\0') { + // glXCreateWindow + retrace_glXCreateWindow(call); + return; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + case 'D': + switch (name[4]) { + case 'e': + switch (name[5]) { + case 's': + switch (name[6]) { + case 't': + switch (name[7]) { + case 'r': + switch (name[8]) { + case 'o': + switch (name[9]) { + case 'y': + switch (name[10]) { + case 'C': + if (name[11] == 'o' && name[12] == 'n' && name[13] == 't' && name[14] == 'e' && name[15] == 'x' && name[16] == 't' && name[17] == '\0') { + // glXDestroyContext + retrace_glXDestroyContext(call); + return; + } + break; + case 'G': + if (name[11] == 'L' && name[12] == 'X' && name[13] == 'P' && name[14] == 'i' && name[15] == 'x' && name[16] == 'm' && name[17] == 'a' && name[18] == 'p' && name[19] == '\0') { + // glXDestroyGLXPixmap + retrace_glXDestroyGLXPixmap(call); + return; + } + break; + case 'P': + switch (name[11]) { + case 'b': + if (name[12] == 'u' && name[13] == 'f' && name[14] == 'f' && name[15] == 'e' && name[16] == 'r' && name[17] == '\0') { + // glXDestroyPbuffer + retrace_glXDestroyPbuffer(call); + return; + } + break; + case 'i': + if (name[12] == 'x' && name[13] == 'm' && name[14] == 'a' && name[15] == 'p' && name[16] == '\0') { + // glXDestroyPixmap + retrace_glXDestroyPixmap(call); + return; + } + break; + } + break; + case 'W': + if (name[11] == 'i' && name[12] == 'n' && name[13] == 'd' && name[14] == 'o' && name[15] == 'w' && name[16] == '\0') { + // glXDestroyWindow + retrace_glXDestroyWindow(call); + return; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + case 'G': + switch (name[4]) { + case 'e': + switch (name[5]) { + case 't': + switch (name[6]) { + case 'C': + switch (name[7]) { + case 'l': + if (name[8] == 'i' && name[9] == 'e' && name[10] == 'n' && name[11] == 't' && name[12] == 'S' && name[13] == 't' && name[14] == 'r' && name[15] == 'i' && name[16] == 'n' && name[17] == 'g' && name[18] == '\0') { + // glXGetClientString + retrace_glXGetClientString(call); + return; + } + break; + case 'o': + if (name[8] == 'n' && name[9] == 'f' && name[10] == 'i' && name[11] == 'g' && name[12] == '\0') { + // glXGetConfig + retrace_glXGetConfig(call); + return; + } + break; + case 'u': + switch (name[8]) { + case 'r': + switch (name[9]) { + case 'r': + switch (name[10]) { + case 'e': + switch (name[11]) { + case 'n': + switch (name[12]) { + case 't': + switch (name[13]) { + case 'C': + if (name[14] == 'o' && name[15] == 'n' && name[16] == 't' && name[17] == 'e' && name[18] == 'x' && name[19] == 't' && name[20] == '\0') { + // glXGetCurrentContext + return; + } + break; + case 'D': + switch (name[14]) { + case 'i': + if (name[15] == 's' && name[16] == 'p' && name[17] == 'l' && name[18] == 'a' && name[19] == 'y' && name[20] == '\0') { + // glXGetCurrentDisplay + return; + } + break; + case 'r': + if (name[15] == 'a' && name[16] == 'w' && name[17] == 'a' && name[18] == 'b' && name[19] == 'l' && name[20] == 'e' && name[21] == '\0') { + // glXGetCurrentDrawable + return; + } + break; + } + break; + case 'R': + if (name[14] == 'e' && name[15] == 'a' && name[16] == 'd' && name[17] == 'D' && name[18] == 'r' && name[19] == 'a' && name[20] == 'w' && name[21] == 'a' && name[22] == 'b' && name[23] == 'l' && name[24] == 'e' && name[25] == '\0') { + // glXGetCurrentReadDrawable + retrace_glXGetCurrentReadDrawable(call); + return; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + case 'F': + switch (name[7]) { + case 'B': + switch (name[8]) { + case 'C': + switch (name[9]) { + case 'o': + switch (name[10]) { + case 'n': + switch (name[11]) { + case 'f': + switch (name[12]) { + case 'i': + switch (name[13]) { + case 'g': + switch (name[14]) { + case 'A': + if (name[15] == 't' && name[16] == 't' && name[17] == 'r' && name[18] == 'i' && name[19] == 'b' && name[20] == '\0') { + // glXGetFBConfigAttrib + retrace_glXGetFBConfigAttrib(call); + return; + } + break; + case 's': + if (name[15] == '\0') { + // glXGetFBConfigs + retrace_glXGetFBConfigs(call); + return; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + case 'P': + switch (name[7]) { + case 'r': + switch (name[8]) { + case 'o': + switch (name[9]) { + case 'c': + switch (name[10]) { + case 'A': + switch (name[11]) { + case 'd': + switch (name[12]) { + case 'd': + switch (name[13]) { + case 'r': + switch (name[14]) { + case 'e': + switch (name[15]) { + case 's': + switch (name[16]) { + case 's': + switch (name[17]) { + case '\0': + // glXGetProcAddress + retrace_glXGetProcAddress(call); + return; + break; + case 'A': + if (name[18] == 'R' && name[19] == 'B' && name[20] == '\0') { + // glXGetProcAddressARB + retrace_glXGetProcAddressARB(call); + return; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + case 'S': + if (name[7] == 'e' && name[8] == 'l' && name[9] == 'e' && name[10] == 'c' && name[11] == 't' && name[12] == 'e' && name[13] == 'd' && name[14] == 'E' && name[15] == 'v' && name[16] == 'e' && name[17] == 'n' && name[18] == 't' && name[19] == '\0') { + // glXGetSelectedEvent + retrace_glXGetSelectedEvent(call); + return; + } + break; + case 'V': + if (name[7] == 'i' && name[8] == 's' && name[9] == 'u' && name[10] == 'a' && name[11] == 'l' && name[12] == 'F' && name[13] == 'r' && name[14] == 'o' && name[15] == 'm' && name[16] == 'F' && name[17] == 'B' && name[18] == 'C' && name[19] == 'o' && name[20] == 'n' && name[21] == 'f' && name[22] == 'i' && name[23] == 'g' && name[24] == '\0') { + // glXGetVisualFromFBConfig + retrace_glXGetVisualFromFBConfig(call); + return; + } + break; + } + break; + } + break; + } + break; + case 'I': + if (name[4] == 's' && name[5] == 'D' && name[6] == 'i' && name[7] == 'r' && name[8] == 'e' && name[9] == 'c' && name[10] == 't' && name[11] == '\0') { + // glXIsDirect + retrace_glXIsDirect(call); + return; + } + break; + case 'M': + switch (name[4]) { + case 'a': + switch (name[5]) { + case 'k': + switch (name[6]) { + case 'e': + switch (name[7]) { + case 'C': + switch (name[8]) { + case 'o': + if (name[9] == 'n' && name[10] == 't' && name[11] == 'e' && name[12] == 'x' && name[13] == 't' && name[14] == 'C' && name[15] == 'u' && name[16] == 'r' && name[17] == 'r' && name[18] == 'e' && name[19] == 'n' && name[20] == 't' && name[21] == '\0') { + // glXMakeContextCurrent + retrace_glXMakeContextCurrent(call); + return; + } + break; + case 'u': + if (name[9] == 'r' && name[10] == 'r' && name[11] == 'e' && name[12] == 'n' && name[13] == 't' && name[14] == '\0') { + // glXMakeCurrent + retrace_glXMakeCurrent(call); + return; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + case 'Q': + switch (name[4]) { + case 'u': + switch (name[5]) { + case 'e': + switch (name[6]) { + case 'r': + switch (name[7]) { + case 'y': + switch (name[8]) { + case 'C': + if (name[9] == 'o' && name[10] == 'n' && name[11] == 't' && name[12] == 'e' && name[13] == 'x' && name[14] == 't' && name[15] == '\0') { + // glXQueryContext + retrace_glXQueryContext(call); + return; + } + break; + case 'D': + if (name[9] == 'r' && name[10] == 'a' && name[11] == 'w' && name[12] == 'a' && name[13] == 'b' && name[14] == 'l' && name[15] == 'e' && name[16] == '\0') { + // glXQueryDrawable + retrace_glXQueryDrawable(call); + return; + } + break; + case 'E': + switch (name[9]) { + case 'x': + switch (name[10]) { + case 't': + switch (name[11]) { + case 'e': + switch (name[12]) { + case 'n': + switch (name[13]) { + case 's': + switch (name[14]) { + case 'i': + switch (name[15]) { + case 'o': + switch (name[16]) { + case 'n': + switch (name[17]) { + case '\0': + // glXQueryExtension + retrace_glXQueryExtension(call); + return; + break; + case 's': + if (name[18] == 'S' && name[19] == 't' && name[20] == 'r' && name[21] == 'i' && name[22] == 'n' && name[23] == 'g' && name[24] == '\0') { + // glXQueryExtensionsString + retrace_glXQueryExtensionsString(call); + return; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + case 'S': + if (name[9] == 'e' && name[10] == 'r' && name[11] == 'v' && name[12] == 'e' && name[13] == 'r' && name[14] == 'S' && name[15] == 't' && name[16] == 'r' && name[17] == 'i' && name[18] == 'n' && name[19] == 'g' && name[20] == '\0') { + // glXQueryServerString + retrace_glXQueryServerString(call); + return; + } + break; + case 'V': + if (name[9] == 'e' && name[10] == 'r' && name[11] == 's' && name[12] == 'i' && name[13] == 'o' && name[14] == 'n' && name[15] == '\0') { + // glXQueryVersion + retrace_glXQueryVersion(call); + return; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + case 'S': + switch (name[4]) { + case 'e': + if (name[5] == 'l' && name[6] == 'e' && name[7] == 'c' && name[8] == 't' && name[9] == 'E' && name[10] == 'v' && name[11] == 'e' && name[12] == 'n' && name[13] == 't' && name[14] == '\0') { + // glXSelectEvent + retrace_glXSelectEvent(call); + return; + } + break; + case 'w': + if (name[5] == 'a' && name[6] == 'p' && name[7] == 'B' && name[8] == 'u' && name[9] == 'f' && name[10] == 'f' && name[11] == 'e' && name[12] == 'r' && name[13] == 's' && name[14] == '\0') { + // glXSwapBuffers + retrace_glXSwapBuffers(call); + return; + } + break; + } + break; + case 'U': + if (name[4] == 's' && name[5] == 'e' && name[6] == 'X' && name[7] == 'F' && name[8] == 'o' && name[9] == 'n' && name[10] == 't' && name[11] == '\0') { + // glXUseXFont + retrace_glXUseXFont(call); + return; + } + break; + case 'W': + switch (name[4]) { + case 'a': + switch (name[5]) { + case 'i': + switch (name[6]) { + case 't': + switch (name[7]) { + case 'G': + if (name[8] == 'L' && name[9] == '\0') { + // glXWaitGL + retrace_glXWaitGL(call); + return; + } + break; + case 'X': + if (name[8] == '\0') { + // glXWaitX + retrace_glXWaitX(call); + return; + } + break; + } + break; + } + break; + } + break; + } + break; + } + retrace::retrace_unknown(call); +} + diff --git a/glretrace_main.cpp b/glretrace_main.cpp index 4fd8304..e8567dc 100644 --- a/glretrace_main.cpp +++ b/glretrace_main.cpp @@ -156,34 +156,18 @@ static void display(void) { while ((call = parser.parse_call())) { const std::string &name = call->name(); - bool skipCall = false; if (retrace::verbosity >= 1) { std::cout << *call; std::cout.flush(); } - if ((name[0] == 'w' && name[1] == 'g' && name[2] == 'l') || - (name[0] == 'g' && name[1] == 'l' && name[2] == 'X')) { - // XXX: We ignore the majority of the OS-specific calls for now - if (name == "glXSwapBuffers" || - name == "wglSwapBuffers") { - frame_complete(call->no); - if (double_buffer) - drawable->swapBuffers(); - else - glFlush(); - } else if (name == "glXMakeCurrent" || - name == "wglMakeCurrent") { - glFlush(); - if (!double_buffer) { - frame_complete(call->no); - } - } - skipCall = true; + if (name[0] == 'w' && name[1] == 'g' && name[2] == 'l') { + glretrace::retrace_call_wgl(*call); } - - if (!skipCall) { + else if (name[0] == 'g' && name[1] == 'l' && name[2] == 'X') { + glretrace::retrace_call_glx(*call); + } else { retrace::retrace_call(*call); } diff --git a/glretrace_wgl.cpp b/glretrace_wgl.cpp new file mode 100644 index 0000000..9aace48 --- /dev/null +++ b/glretrace_wgl.cpp @@ -0,0 +1,1140 @@ +/************************************************************************** + * + * Copyright 2011 Jose Fonseca + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + **************************************************************************/ + + +#include "glproc.hpp" +#include "retrace.hpp" +#include "glretrace.hpp" + + +using namespace glretrace; + + +static void retrace_wglCreateContext(Trace::Call &call) { +} + +static void retrace_wglDeleteContext(Trace::Call &call) { +} + +static void retrace_wglMakeCurrent(Trace::Call &call) { + glFlush(); + if (!double_buffer) { + frame_complete(call.no); + } +} + +static void retrace_wglCopyContext(Trace::Call &call) { +} + +static void retrace_wglChoosePixelFormat(Trace::Call &call) { +} + +static void retrace_wglDescribePixelFormat(Trace::Call &call) { +} + +static void retrace_wglSetPixelFormat(Trace::Call &call) { +} + +static void retrace_wglSwapBuffers(Trace::Call &call) { + frame_complete(call.no); + if (double_buffer) { + drawable->swapBuffers(); + } else { + glFlush(); + } +} + +static void retrace_wglShareLists(Trace::Call &call) { +} + +static void retrace_wglCreateLayerContext(Trace::Call &call) { +} + +static void retrace_wglDescribeLayerPlane(Trace::Call &call) { +} + +static void retrace_wglSetLayerPaletteEntries(Trace::Call &call) { +} + +static void retrace_wglRealizeLayerPalette(Trace::Call &call) { +} + +static void retrace_wglSwapLayerBuffers(Trace::Call &call) { +} + +static void retrace_wglUseFontBitmapsA(Trace::Call &call) { +} + +static void retrace_wglUseFontBitmapsW(Trace::Call &call) { +} + +static void retrace_wglSwapMultipleBuffers(Trace::Call &call) { +} + +static void retrace_wglUseFontOutlinesA(Trace::Call &call) { +} + +static void retrace_wglUseFontOutlinesW(Trace::Call &call) { +} + +static void retrace_wglCreateBufferRegionARB(Trace::Call &call) { +} + +static void retrace_wglDeleteBufferRegionARB(Trace::Call &call) { +} + +static void retrace_wglSaveBufferRegionARB(Trace::Call &call) { +} + +static void retrace_wglRestoreBufferRegionARB(Trace::Call &call) { +} + +static void retrace_wglChoosePixelFormatARB(Trace::Call &call) { +} + +static void retrace_wglMakeContextCurrentARB(Trace::Call &call) { +} + +static void retrace_wglCreatePbufferARB(Trace::Call &call) { +} + +static void retrace_wglReleasePbufferDCARB(Trace::Call &call) { +} + +static void retrace_wglDestroyPbufferARB(Trace::Call &call) { +} + +static void retrace_wglQueryPbufferARB(Trace::Call &call) { +} + +static void retrace_wglBindTexImageARB(Trace::Call &call) { +} + +static void retrace_wglReleaseTexImageARB(Trace::Call &call) { +} + +static void retrace_wglSetPbufferAttribARB(Trace::Call &call) { +} + +static void retrace_wglCreateContextAttribsARB(Trace::Call &call) { +} + +static void retrace_wglMakeContextCurrentEXT(Trace::Call &call) { +} + +static void retrace_wglChoosePixelFormatEXT(Trace::Call &call) { +} + +static void retrace_wglSwapIntervalEXT(Trace::Call &call) { +} + +static void retrace_wglAllocateMemoryNV(Trace::Call &call) { +} + +static void retrace_wglFreeMemoryNV(Trace::Call &call) { +} + +static void retrace_glAddSwapHintRectWIN(Trace::Call &call) { +} + +static void retrace_wglGetProcAddress(Trace::Call &call) { +} + +void glretrace::retrace_call_wgl(Trace::Call &call) { + const char *name = call.name().c_str(); + + switch (name[0]) { + case 'g': + if (name[1] == 'l' && name[2] == 'A' && name[3] == 'd' && name[4] == 'd' && name[5] == 'S' && name[6] == 'w' && name[7] == 'a' && name[8] == 'p' && name[9] == 'H' && name[10] == 'i' && name[11] == 'n' && name[12] == 't' && name[13] == 'R' && name[14] == 'e' && name[15] == 'c' && name[16] == 't' && name[17] == 'W' && name[18] == 'I' && name[19] == 'N' && name[20] == '\0') { + // glAddSwapHintRectWIN + retrace_glAddSwapHintRectWIN(call); + return; + } + break; + case 'w': + switch (name[1]) { + case 'g': + switch (name[2]) { + case 'l': + switch (name[3]) { + case 'A': + if (name[4] == 'l' && name[5] == 'l' && name[6] == 'o' && name[7] == 'c' && name[8] == 'a' && name[9] == 't' && name[10] == 'e' && name[11] == 'M' && name[12] == 'e' && name[13] == 'm' && name[14] == 'o' && name[15] == 'r' && name[16] == 'y' && name[17] == 'N' && name[18] == 'V' && name[19] == '\0') { + // wglAllocateMemoryNV + retrace_wglAllocateMemoryNV(call); + return; + } + break; + case 'B': + if (name[4] == 'i' && name[5] == 'n' && name[6] == 'd' && name[7] == 'T' && name[8] == 'e' && name[9] == 'x' && name[10] == 'I' && name[11] == 'm' && name[12] == 'a' && name[13] == 'g' && name[14] == 'e' && name[15] == 'A' && name[16] == 'R' && name[17] == 'B' && name[18] == '\0') { + // wglBindTexImageARB + retrace_wglBindTexImageARB(call); + return; + } + break; + case 'C': + switch (name[4]) { + case 'h': + switch (name[5]) { + case 'o': + switch (name[6]) { + case 'o': + switch (name[7]) { + case 's': + switch (name[8]) { + case 'e': + switch (name[9]) { + case 'P': + switch (name[10]) { + case 'i': + switch (name[11]) { + case 'x': + switch (name[12]) { + case 'e': + switch (name[13]) { + case 'l': + switch (name[14]) { + case 'F': + switch (name[15]) { + case 'o': + switch (name[16]) { + case 'r': + switch (name[17]) { + case 'm': + switch (name[18]) { + case 'a': + switch (name[19]) { + case 't': + switch (name[20]) { + case '\0': + // wglChoosePixelFormat + retrace_wglChoosePixelFormat(call); + return; + break; + case 'A': + if (name[21] == 'R' && name[22] == 'B' && name[23] == '\0') { + // wglChoosePixelFormatARB + retrace_wglChoosePixelFormatARB(call); + return; + } + break; + case 'E': + if (name[21] == 'X' && name[22] == 'T' && name[23] == '\0') { + // wglChoosePixelFormatEXT + retrace_wglChoosePixelFormatEXT(call); + return; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + case 'o': + if (name[5] == 'p' && name[6] == 'y' && name[7] == 'C' && name[8] == 'o' && name[9] == 'n' && name[10] == 't' && name[11] == 'e' && name[12] == 'x' && name[13] == 't' && name[14] == '\0') { + // wglCopyContext + retrace_wglCopyContext(call); + return; + } + break; + case 'r': + switch (name[5]) { + case 'e': + switch (name[6]) { + case 'a': + switch (name[7]) { + case 't': + switch (name[8]) { + case 'e': + switch (name[9]) { + case 'B': + if (name[10] == 'u' && name[11] == 'f' && name[12] == 'f' && name[13] == 'e' && name[14] == 'r' && name[15] == 'R' && name[16] == 'e' && name[17] == 'g' && name[18] == 'i' && name[19] == 'o' && name[20] == 'n' && name[21] == 'A' && name[22] == 'R' && name[23] == 'B' && name[24] == '\0') { + // wglCreateBufferRegionARB + retrace_wglCreateBufferRegionARB(call); + return; + } + break; + case 'C': + switch (name[10]) { + case 'o': + switch (name[11]) { + case 'n': + switch (name[12]) { + case 't': + switch (name[13]) { + case 'e': + switch (name[14]) { + case 'x': + switch (name[15]) { + case 't': + switch (name[16]) { + case '\0': + // wglCreateContext + retrace_wglCreateContext(call); + return; + break; + case 'A': + if (name[17] == 't' && name[18] == 't' && name[19] == 'r' && name[20] == 'i' && name[21] == 'b' && name[22] == 's' && name[23] == 'A' && name[24] == 'R' && name[25] == 'B' && name[26] == '\0') { + // wglCreateContextAttribsARB + retrace_wglCreateContextAttribsARB(call); + return; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + case 'L': + if (name[10] == 'a' && name[11] == 'y' && name[12] == 'e' && name[13] == 'r' && name[14] == 'C' && name[15] == 'o' && name[16] == 'n' && name[17] == 't' && name[18] == 'e' && name[19] == 'x' && name[20] == 't' && name[21] == '\0') { + // wglCreateLayerContext + retrace_wglCreateLayerContext(call); + return; + } + break; + case 'P': + if (name[10] == 'b' && name[11] == 'u' && name[12] == 'f' && name[13] == 'f' && name[14] == 'e' && name[15] == 'r' && name[16] == 'A' && name[17] == 'R' && name[18] == 'B' && name[19] == '\0') { + // wglCreatePbufferARB + retrace_wglCreatePbufferARB(call); + return; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + case 'D': + switch (name[4]) { + case 'e': + switch (name[5]) { + case 'l': + switch (name[6]) { + case 'e': + switch (name[7]) { + case 't': + switch (name[8]) { + case 'e': + switch (name[9]) { + case 'B': + if (name[10] == 'u' && name[11] == 'f' && name[12] == 'f' && name[13] == 'e' && name[14] == 'r' && name[15] == 'R' && name[16] == 'e' && name[17] == 'g' && name[18] == 'i' && name[19] == 'o' && name[20] == 'n' && name[21] == 'A' && name[22] == 'R' && name[23] == 'B' && name[24] == '\0') { + // wglDeleteBufferRegionARB + retrace_wglDeleteBufferRegionARB(call); + return; + } + break; + case 'C': + if (name[10] == 'o' && name[11] == 'n' && name[12] == 't' && name[13] == 'e' && name[14] == 'x' && name[15] == 't' && name[16] == '\0') { + // wglDeleteContext + retrace_wglDeleteContext(call); + return; + } + break; + } + break; + } + break; + } + break; + } + break; + case 's': + switch (name[6]) { + case 'c': + switch (name[7]) { + case 'r': + switch (name[8]) { + case 'i': + switch (name[9]) { + case 'b': + switch (name[10]) { + case 'e': + switch (name[11]) { + case 'L': + if (name[12] == 'a' && name[13] == 'y' && name[14] == 'e' && name[15] == 'r' && name[16] == 'P' && name[17] == 'l' && name[18] == 'a' && name[19] == 'n' && name[20] == 'e' && name[21] == '\0') { + // wglDescribeLayerPlane + retrace_wglDescribeLayerPlane(call); + return; + } + break; + case 'P': + if (name[12] == 'i' && name[13] == 'x' && name[14] == 'e' && name[15] == 'l' && name[16] == 'F' && name[17] == 'o' && name[18] == 'r' && name[19] == 'm' && name[20] == 'a' && name[21] == 't' && name[22] == '\0') { + // wglDescribePixelFormat + retrace_wglDescribePixelFormat(call); + return; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + case 't': + if (name[7] == 'r' && name[8] == 'o' && name[9] == 'y' && name[10] == 'P' && name[11] == 'b' && name[12] == 'u' && name[13] == 'f' && name[14] == 'f' && name[15] == 'e' && name[16] == 'r' && name[17] == 'A' && name[18] == 'R' && name[19] == 'B' && name[20] == '\0') { + // wglDestroyPbufferARB + retrace_wglDestroyPbufferARB(call); + return; + } + break; + } + break; + } + break; + } + break; + case 'F': + if (name[4] == 'r' && name[5] == 'e' && name[6] == 'e' && name[7] == 'M' && name[8] == 'e' && name[9] == 'm' && name[10] == 'o' && name[11] == 'r' && name[12] == 'y' && name[13] == 'N' && name[14] == 'V' && name[15] == '\0') { + // wglFreeMemoryNV + retrace_wglFreeMemoryNV(call); + return; + } + break; + case 'G': + switch (name[4]) { + case 'e': + switch (name[5]) { + case 't': + switch (name[6]) { + case 'C': + switch (name[7]) { + case 'u': + switch (name[8]) { + case 'r': + switch (name[9]) { + case 'r': + switch (name[10]) { + case 'e': + switch (name[11]) { + case 'n': + switch (name[12]) { + case 't': + switch (name[13]) { + case 'C': + if (name[14] == 'o' && name[15] == 'n' && name[16] == 't' && name[17] == 'e' && name[18] == 'x' && name[19] == 't' && name[20] == '\0') { + // wglGetCurrentContext + return; + } + break; + case 'D': + if (name[14] == 'C' && name[15] == '\0') { + // wglGetCurrentDC + return; + } + break; + case 'R': + switch (name[14]) { + case 'e': + switch (name[15]) { + case 'a': + switch (name[16]) { + case 'd': + switch (name[17]) { + case 'D': + switch (name[18]) { + case 'C': + switch (name[19]) { + case 'A': + if (name[20] == 'R' && name[21] == 'B' && name[22] == '\0') { + // wglGetCurrentReadDCARB + return; + } + break; + case 'E': + if (name[20] == 'X' && name[21] == 'T' && name[22] == '\0') { + // wglGetCurrentReadDCEXT + return; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + case 'D': + if (name[7] == 'e' && name[8] == 'f' && name[9] == 'a' && name[10] == 'u' && name[11] == 'l' && name[12] == 't' && name[13] == 'P' && name[14] == 'r' && name[15] == 'o' && name[16] == 'c' && name[17] == 'A' && name[18] == 'd' && name[19] == 'd' && name[20] == 'r' && name[21] == 'e' && name[22] == 's' && name[23] == 's' && name[24] == '\0') { + // wglGetDefaultProcAddress + return; + } + break; + case 'E': + switch (name[7]) { + case 'x': + switch (name[8]) { + case 't': + switch (name[9]) { + case 'e': + switch (name[10]) { + case 'n': + switch (name[11]) { + case 's': + switch (name[12]) { + case 'i': + switch (name[13]) { + case 'o': + switch (name[14]) { + case 'n': + switch (name[15]) { + case 's': + switch (name[16]) { + case 'S': + switch (name[17]) { + case 't': + switch (name[18]) { + case 'r': + switch (name[19]) { + case 'i': + switch (name[20]) { + case 'n': + switch (name[21]) { + case 'g': + switch (name[22]) { + case 'A': + if (name[23] == 'R' && name[24] == 'B' && name[25] == '\0') { + // wglGetExtensionsStringARB + return; + } + break; + case 'E': + if (name[23] == 'X' && name[24] == 'T' && name[25] == '\0') { + // wglGetExtensionsStringEXT + return; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + case 'L': + if (name[7] == 'a' && name[8] == 'y' && name[9] == 'e' && name[10] == 'r' && name[11] == 'P' && name[12] == 'a' && name[13] == 'l' && name[14] == 'e' && name[15] == 't' && name[16] == 't' && name[17] == 'e' && name[18] == 'E' && name[19] == 'n' && name[20] == 't' && name[21] == 'r' && name[22] == 'i' && name[23] == 'e' && name[24] == 's' && name[25] == '\0') { + // wglGetLayerPaletteEntries + return; + } + break; + case 'P': + switch (name[7]) { + case 'b': + if (name[8] == 'u' && name[9] == 'f' && name[10] == 'f' && name[11] == 'e' && name[12] == 'r' && name[13] == 'D' && name[14] == 'C' && name[15] == 'A' && name[16] == 'R' && name[17] == 'B' && name[18] == '\0') { + // wglGetPbufferDCARB + return; + } + break; + case 'i': + switch (name[8]) { + case 'x': + switch (name[9]) { + case 'e': + switch (name[10]) { + case 'l': + switch (name[11]) { + case 'F': + switch (name[12]) { + case 'o': + switch (name[13]) { + case 'r': + switch (name[14]) { + case 'm': + switch (name[15]) { + case 'a': + switch (name[16]) { + case 't': + switch (name[17]) { + case '\0': + // wglGetPixelFormat + return; + break; + case 'A': + switch (name[18]) { + case 't': + switch (name[19]) { + case 't': + switch (name[20]) { + case 'r': + switch (name[21]) { + case 'i': + switch (name[22]) { + case 'b': + switch (name[23]) { + case 'f': + switch (name[24]) { + case 'v': + switch (name[25]) { + case 'A': + if (name[26] == 'R' && name[27] == 'B' && name[28] == '\0') { + // wglGetPixelFormatAttribfvARB + return; + } + break; + case 'E': + if (name[26] == 'X' && name[27] == 'T' && name[28] == '\0') { + // wglGetPixelFormatAttribfvEXT + return; + } + break; + } + break; + } + break; + case 'i': + switch (name[24]) { + case 'v': + switch (name[25]) { + case 'A': + if (name[26] == 'R' && name[27] == 'B' && name[28] == '\0') { + // wglGetPixelFormatAttribivARB + return; + } + break; + case 'E': + if (name[26] == 'X' && name[27] == 'T' && name[28] == '\0') { + // wglGetPixelFormatAttribivEXT + return; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + case 'r': + if (name[8] == 'o' && name[9] == 'c' && name[10] == 'A' && name[11] == 'd' && name[12] == 'd' && name[13] == 'r' && name[14] == 'e' && name[15] == 's' && name[16] == 's' && name[17] == '\0') { + // wglGetProcAddress + retrace_wglGetProcAddress(call); + return; + } + break; + } + break; + case 'S': + if (name[7] == 'w' && name[8] == 'a' && name[9] == 'p' && name[10] == 'I' && name[11] == 'n' && name[12] == 't' && name[13] == 'e' && name[14] == 'r' && name[15] == 'v' && name[16] == 'a' && name[17] == 'l' && name[18] == 'E' && name[19] == 'X' && name[20] == 'T' && name[21] == '\0') { + // wglGetSwapIntervalEXT + return; + } + break; + } + break; + } + break; + } + break; + case 'M': + switch (name[4]) { + case 'a': + switch (name[5]) { + case 'k': + switch (name[6]) { + case 'e': + switch (name[7]) { + case 'C': + switch (name[8]) { + case 'o': + switch (name[9]) { + case 'n': + switch (name[10]) { + case 't': + switch (name[11]) { + case 'e': + switch (name[12]) { + case 'x': + switch (name[13]) { + case 't': + switch (name[14]) { + case 'C': + switch (name[15]) { + case 'u': + switch (name[16]) { + case 'r': + switch (name[17]) { + case 'r': + switch (name[18]) { + case 'e': + switch (name[19]) { + case 'n': + switch (name[20]) { + case 't': + switch (name[21]) { + case 'A': + if (name[22] == 'R' && name[23] == 'B' && name[24] == '\0') { + // wglMakeContextCurrentARB + retrace_wglMakeContextCurrentARB(call); + return; + } + break; + case 'E': + if (name[22] == 'X' && name[23] == 'T' && name[24] == '\0') { + // wglMakeContextCurrentEXT + retrace_wglMakeContextCurrentEXT(call); + return; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + case 'u': + if (name[9] == 'r' && name[10] == 'r' && name[11] == 'e' && name[12] == 'n' && name[13] == 't' && name[14] == '\0') { + // wglMakeCurrent + retrace_wglMakeCurrent(call); + return; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + case 'Q': + if (name[4] == 'u' && name[5] == 'e' && name[6] == 'r' && name[7] == 'y' && name[8] == 'P' && name[9] == 'b' && name[10] == 'u' && name[11] == 'f' && name[12] == 'f' && name[13] == 'e' && name[14] == 'r' && name[15] == 'A' && name[16] == 'R' && name[17] == 'B' && name[18] == '\0') { + // wglQueryPbufferARB + retrace_wglQueryPbufferARB(call); + return; + } + break; + case 'R': + switch (name[4]) { + case 'e': + switch (name[5]) { + case 'a': + if (name[6] == 'l' && name[7] == 'i' && name[8] == 'z' && name[9] == 'e' && name[10] == 'L' && name[11] == 'a' && name[12] == 'y' && name[13] == 'e' && name[14] == 'r' && name[15] == 'P' && name[16] == 'a' && name[17] == 'l' && name[18] == 'e' && name[19] == 't' && name[20] == 't' && name[21] == 'e' && name[22] == '\0') { + // wglRealizeLayerPalette + retrace_wglRealizeLayerPalette(call); + return; + } + break; + case 'l': + switch (name[6]) { + case 'e': + switch (name[7]) { + case 'a': + switch (name[8]) { + case 's': + switch (name[9]) { + case 'e': + switch (name[10]) { + case 'P': + if (name[11] == 'b' && name[12] == 'u' && name[13] == 'f' && name[14] == 'f' && name[15] == 'e' && name[16] == 'r' && name[17] == 'D' && name[18] == 'C' && name[19] == 'A' && name[20] == 'R' && name[21] == 'B' && name[22] == '\0') { + // wglReleasePbufferDCARB + retrace_wglReleasePbufferDCARB(call); + return; + } + break; + case 'T': + if (name[11] == 'e' && name[12] == 'x' && name[13] == 'I' && name[14] == 'm' && name[15] == 'a' && name[16] == 'g' && name[17] == 'e' && name[18] == 'A' && name[19] == 'R' && name[20] == 'B' && name[21] == '\0') { + // wglReleaseTexImageARB + retrace_wglReleaseTexImageARB(call); + return; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + case 's': + if (name[6] == 't' && name[7] == 'o' && name[8] == 'r' && name[9] == 'e' && name[10] == 'B' && name[11] == 'u' && name[12] == 'f' && name[13] == 'f' && name[14] == 'e' && name[15] == 'r' && name[16] == 'R' && name[17] == 'e' && name[18] == 'g' && name[19] == 'i' && name[20] == 'o' && name[21] == 'n' && name[22] == 'A' && name[23] == 'R' && name[24] == 'B' && name[25] == '\0') { + // wglRestoreBufferRegionARB + retrace_wglRestoreBufferRegionARB(call); + return; + } + break; + } + break; + } + break; + case 'S': + switch (name[4]) { + case 'a': + if (name[5] == 'v' && name[6] == 'e' && name[7] == 'B' && name[8] == 'u' && name[9] == 'f' && name[10] == 'f' && name[11] == 'e' && name[12] == 'r' && name[13] == 'R' && name[14] == 'e' && name[15] == 'g' && name[16] == 'i' && name[17] == 'o' && name[18] == 'n' && name[19] == 'A' && name[20] == 'R' && name[21] == 'B' && name[22] == '\0') { + // wglSaveBufferRegionARB + retrace_wglSaveBufferRegionARB(call); + return; + } + break; + case 'e': + switch (name[5]) { + case 't': + switch (name[6]) { + case 'L': + if (name[7] == 'a' && name[8] == 'y' && name[9] == 'e' && name[10] == 'r' && name[11] == 'P' && name[12] == 'a' && name[13] == 'l' && name[14] == 'e' && name[15] == 't' && name[16] == 't' && name[17] == 'e' && name[18] == 'E' && name[19] == 'n' && name[20] == 't' && name[21] == 'r' && name[22] == 'i' && name[23] == 'e' && name[24] == 's' && name[25] == '\0') { + // wglSetLayerPaletteEntries + retrace_wglSetLayerPaletteEntries(call); + return; + } + break; + case 'P': + switch (name[7]) { + case 'b': + if (name[8] == 'u' && name[9] == 'f' && name[10] == 'f' && name[11] == 'e' && name[12] == 'r' && name[13] == 'A' && name[14] == 't' && name[15] == 't' && name[16] == 'r' && name[17] == 'i' && name[18] == 'b' && name[19] == 'A' && name[20] == 'R' && name[21] == 'B' && name[22] == '\0') { + // wglSetPbufferAttribARB + retrace_wglSetPbufferAttribARB(call); + return; + } + break; + case 'i': + if (name[8] == 'x' && name[9] == 'e' && name[10] == 'l' && name[11] == 'F' && name[12] == 'o' && name[13] == 'r' && name[14] == 'm' && name[15] == 'a' && name[16] == 't' && name[17] == '\0') { + // wglSetPixelFormat + retrace_wglSetPixelFormat(call); + return; + } + break; + } + break; + } + break; + } + break; + case 'h': + if (name[5] == 'a' && name[6] == 'r' && name[7] == 'e' && name[8] == 'L' && name[9] == 'i' && name[10] == 's' && name[11] == 't' && name[12] == 's' && name[13] == '\0') { + // wglShareLists + retrace_wglShareLists(call); + return; + } + break; + case 'w': + switch (name[5]) { + case 'a': + switch (name[6]) { + case 'p': + switch (name[7]) { + case 'B': + if (name[8] == 'u' && name[9] == 'f' && name[10] == 'f' && name[11] == 'e' && name[12] == 'r' && name[13] == 's' && name[14] == '\0') { + // wglSwapBuffers + retrace_wglSwapBuffers(call); + return; + } + break; + case 'I': + if (name[8] == 'n' && name[9] == 't' && name[10] == 'e' && name[11] == 'r' && name[12] == 'v' && name[13] == 'a' && name[14] == 'l' && name[15] == 'E' && name[16] == 'X' && name[17] == 'T' && name[18] == '\0') { + // wglSwapIntervalEXT + retrace_wglSwapIntervalEXT(call); + return; + } + break; + case 'L': + if (name[8] == 'a' && name[9] == 'y' && name[10] == 'e' && name[11] == 'r' && name[12] == 'B' && name[13] == 'u' && name[14] == 'f' && name[15] == 'f' && name[16] == 'e' && name[17] == 'r' && name[18] == 's' && name[19] == '\0') { + // wglSwapLayerBuffers + retrace_wglSwapLayerBuffers(call); + return; + } + break; + case 'M': + if (name[8] == 'u' && name[9] == 'l' && name[10] == 't' && name[11] == 'i' && name[12] == 'p' && name[13] == 'l' && name[14] == 'e' && name[15] == 'B' && name[16] == 'u' && name[17] == 'f' && name[18] == 'f' && name[19] == 'e' && name[20] == 'r' && name[21] == 's' && name[22] == '\0') { + // wglSwapMultipleBuffers + retrace_wglSwapMultipleBuffers(call); + return; + } + break; + } + break; + } + break; + } + break; + } + break; + case 'U': + switch (name[4]) { + case 's': + switch (name[5]) { + case 'e': + switch (name[6]) { + case 'F': + switch (name[7]) { + case 'o': + switch (name[8]) { + case 'n': + switch (name[9]) { + case 't': + switch (name[10]) { + case 'B': + switch (name[11]) { + case 'i': + switch (name[12]) { + case 't': + switch (name[13]) { + case 'm': + switch (name[14]) { + case 'a': + switch (name[15]) { + case 'p': + switch (name[16]) { + case 's': + switch (name[17]) { + case 'A': + if (name[18] == '\0') { + // wglUseFontBitmapsA + retrace_wglUseFontBitmapsA(call); + return; + } + break; + case 'W': + if (name[18] == '\0') { + // wglUseFontBitmapsW + retrace_wglUseFontBitmapsW(call); + return; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + case 'O': + switch (name[11]) { + case 'u': + switch (name[12]) { + case 't': + switch (name[13]) { + case 'l': + switch (name[14]) { + case 'i': + switch (name[15]) { + case 'n': + switch (name[16]) { + case 'e': + switch (name[17]) { + case 's': + switch (name[18]) { + case 'A': + if (name[19] == '\0') { + // wglUseFontOutlinesA + retrace_wglUseFontOutlinesA(call); + return; + } + break; + case 'W': + if (name[19] == '\0') { + // wglUseFontOutlinesW + retrace_wglUseFontOutlinesW(call); + return; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + break; + } + retrace::retrace_unknown(call); +} + diff --git a/stdapi.py b/stdapi.py index fcbf5ab..38f5db5 100644 --- a/stdapi.py +++ b/stdapi.py @@ -410,7 +410,7 @@ class Rebuilder(Visitor): return Const(const.type) def visit_struct(self, struct): - members = [self.visit(member) for member in struct.members] + members = [(self.visit(type), name) for type, name in struct.members] return Struct(struct.name, members) def visit_array(self, array): -- 2.7.4