From ea6aff329bf7d150955c1804ac9a1b15cb43b2f0 Mon Sep 17 00:00:00 2001 From: David Quintana Date: Wed, 12 Feb 2014 16:54:58 +0000 Subject: [PATCH] [RSHELL] * Separate the wrapper logging code to its own file, to facilitate further debugging in other classes. svn path=/branches/shell-experiments/; revision=62133 --- base/shell/rshell/CMakeLists.txt | 1 + base/shell/rshell/CMenuBand.cpp | 113 +---------------------------- base/shell/rshell/wraplog.cpp | 117 +++++++++++++++++++++++++++++++ base/shell/rshell/wraplog.h | 10 +++ 4 files changed, 129 insertions(+), 112 deletions(-) create mode 100644 base/shell/rshell/wraplog.cpp create mode 100644 base/shell/rshell/wraplog.h diff --git a/base/shell/rshell/CMakeLists.txt b/base/shell/rshell/CMakeLists.txt index 875f361283e..413aefffb07 100644 --- a/base/shell/rshell/CMakeLists.txt +++ b/base/shell/rshell/CMakeLists.txt @@ -12,6 +12,7 @@ list(APPEND SOURCE CMenuSite.cpp CStartMenu.cpp misc.cpp + wraplog.cpp ${CMAKE_CURRENT_BINARY_DIR}/rshell.def) add_library(rshell SHARED ${SOURCE}) diff --git a/base/shell/rshell/CMenuBand.cpp b/base/shell/rshell/CMenuBand.cpp index 6d0b2c97a7d..507539b8db6 100644 --- a/base/shell/rshell/CMenuBand.cpp +++ b/base/shell/rshell/CMenuBand.cpp @@ -18,6 +18,7 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "precomp.h" +#include "wraplog.h" WINE_DEFAULT_DEBUG_CHANNEL(CMenuBand); @@ -272,118 +273,6 @@ HRESULT CMenuBand_Constructor(REFIID riid, LPVOID *ppv) #if WRAP_LOG -#include - -static UINT openCount = 0; -static UINT callLevel; -static FILE*log; - -static UINT nTemps; -static CHAR strTemp[10][256]; - -static void WrapLogOpen() -{ - if (openCount == 0) - { - log = fopen("G:\\CMenuBand.log", "w"); - nTemps = 0; - callLevel = 0; - } - openCount++; -} - -static void WrapLogClose() -{ - openCount--; - if (openCount == 0) - { - fclose(log); - log = NULL; - } -} - -static void __cdecl WrapLogMsg(_Printf_format_string_ const char* msg, ...) -{ - va_list args; - for (int i = 0; i < callLevel; i++) - fputs(" ", log); - fputs("-- ", log); - va_start(args, msg); - vfprintf(log, msg, args); - va_end(args); - fflush(log); - nTemps = 0; -} - -static void __cdecl WrapLogEnter(_Printf_format_string_ const char* msg, ...) -{ - va_list args; - for (int i = 0; i < callLevel; i++) - fputs(" ", log); - fputs("ENTER >> ", log); - va_start(args, msg); - vfprintf(log, msg, args); - va_end(args); - fflush(log); - callLevel++; - nTemps = 0; -} - -static void __cdecl WrapLogExit(_Printf_format_string_ const char* msg, ...) -{ - va_list args; - callLevel--; - for (int i = 0; i < callLevel; i++) - fputs(" ", log); - fputs("EXIT <<< ", log); - va_start(args, msg); - vfprintf(log, msg, args); - va_end(args); - fflush(log); - nTemps = 0; -} - -template -static LPSTR Wrap(const T& value); - -template <> -static LPSTR Wrap(REFGUID guid) -{ - LPSTR cGuid = strTemp[nTemps++]; - sprintf(cGuid, "{%08lX-%04hX-%04hX-%02hhX%02hhX-%02hhX%02hhX%02hhX%02hhX%02hhX%02hhX}", - guid.Data1, guid.Data2, guid.Data3, - guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3], - guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]); - return cGuid; -} - -template <> -static LPSTR Wrap(const RECT& rect) -{ - LPSTR cGuid = strTemp[nTemps++]; - sprintf(cGuid, "{L: %d, T: %d, R: %d, B: %d}", - rect.left, rect.top, rect.right, rect.bottom); - return cGuid; -} - -template <> -static LPSTR Wrap(const OLECMD& cmd) -{ - LPSTR cGuid = strTemp[nTemps++]; - sprintf(cGuid, "{ID: %d, F: %d}", - cmd.cmdID, cmd.cmdf); - return cGuid; -} - -template <> -static LPSTR Wrap(const MSG& msg) -{ - LPSTR cGuid = strTemp[nTemps++]; - sprintf(cGuid, "{HWND: %d, Code: %d, W: %p, L: %p, T: %d, P.X: %d, P.Y: %d}", - msg.hwnd, msg.message, msg.wParam, msg.lParam, msg.time, msg.pt.x, msg.pt.y); - return cGuid; -} - CMenuBand::CMenuBand() { HRESULT hr; diff --git a/base/shell/rshell/wraplog.cpp b/base/shell/rshell/wraplog.cpp new file mode 100644 index 00000000000..9366ed04fd9 --- /dev/null +++ b/base/shell/rshell/wraplog.cpp @@ -0,0 +1,117 @@ +#include "precomp.h" +#include "wraplog.h" +#include + +static UINT openCount = 0; +static UINT callLevel; +static FILE*log; + +static UINT nTemps; +static CHAR strTemp[10][256]; + +void WrapLogOpen() +{ + if (openCount == 0) + { + log = fopen("G:\\CMenuBand.log", "w"); + nTemps = 0; + callLevel = 0; + } + openCount++; +} + +void WrapLogClose() +{ + openCount--; + if (openCount == 0) + { + fclose(log); + log = NULL; + } +} + +void __cdecl WrapLogMsg(_Printf_format_string_ const char* msg, ...) +{ + va_list args; + for (int i = 0; i < callLevel; i++) + fputs(" ", log); + fputs("-- ", log); + va_start(args, msg); + vfprintf(log, msg, args); + va_end(args); + fflush(log); + nTemps = 0; +} + +void __cdecl WrapLogEnter(_Printf_format_string_ const char* msg, ...) +{ + va_list args; + for (int i = 0; i < callLevel; i++) + fputs(" ", log); + fputs("ENTER >> ", log); + va_start(args, msg); + vfprintf(log, msg, args); + va_end(args); + fflush(log); + callLevel++; + nTemps = 0; +} + +void __cdecl WrapLogExit(_Printf_format_string_ const char* msg, ...) +{ + va_list args; + callLevel--; + for (int i = 0; i < callLevel; i++) + fputs(" ", log); + fputs("EXIT <<< ", log); + va_start(args, msg); + vfprintf(log, msg, args); + va_end(args); + fflush(log); + nTemps = 0; +} + +template +LPSTR Wrap(const T& value); + +template <> +LPSTR Wrap(REFGUID guid) +{ + LPSTR cGuid = strTemp[nTemps++]; + StringCchPrintfA(cGuid, _countof(strTemp[0]), + "{%08lX-%04hX-%04hX-%02hhX%02hhX-%02hhX%02hhX%02hhX%02hhX%02hhX%02hhX}", + guid.Data1, guid.Data2, guid.Data3, + guid.Data4[0], guid.Data4[1], guid.Data4[2], guid.Data4[3], + guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]); + return cGuid; +} + +template <> +LPSTR Wrap(const RECT& rect) +{ + LPSTR cGuid = strTemp[nTemps++]; + StringCchPrintfA(cGuid, _countof(strTemp[0]), + "{L: %d, T: %d, R: %d, B: %d}", + rect.left, rect.top, rect.right, rect.bottom); + return cGuid; +} + +template <> +LPSTR Wrap(const OLECMD& cmd) +{ + LPSTR cGuid = strTemp[nTemps++]; + StringCchPrintfA(cGuid, _countof(strTemp[0]), + "{ID: %d, F: %d}", + cmd.cmdID, cmd.cmdf); + return cGuid; +} + +template <> +LPSTR Wrap(const MSG& msg) +{ + LPSTR cGuid = strTemp[nTemps++]; + StringCchPrintfA(cGuid, _countof(strTemp[0]), + "{HWND: %d, Code: %d, W: %p, L: %p, T: %d, P.X: %d, P.Y: %d}", + msg.hwnd, msg.message, msg.wParam, msg.lParam, msg.time, msg.pt.x, msg.pt.y); + return cGuid; +} diff --git a/base/shell/rshell/wraplog.h b/base/shell/rshell/wraplog.h new file mode 100644 index 00000000000..6c796a3353c --- /dev/null +++ b/base/shell/rshell/wraplog.h @@ -0,0 +1,10 @@ +#pragma once + +void WrapLogOpen(); +void WrapLogClose(); +void __cdecl WrapLogMsg(_Printf_format_string_ const char* msg, ...); +void __cdecl WrapLogEnter(_Printf_format_string_ const char* msg, ...); +void __cdecl WrapLogExit(_Printf_format_string_ const char* msg, ...); + +template +LPSTR Wrap(const T& value);