| Index: src/plugin/PluginDebug.h |
| =================================================================== |
| --- a/src/plugin/PluginDebug.h |
| +++ b/src/plugin/PluginDebug.h |
| @@ -8,24 +8,63 @@ |
| public: |
| #if (defined ENABLE_DEBUG_INFO) |
| - static void Debug(const CString& error, DWORD dwProcessId=0, DWORD dwThreadId=0); |
| + static void Debug(const std::wstring &, DWORD dwProcessId=0, DWORD dwThreadId=0); |
| + inline static void Debug(const wchar_t line[], DWORD dwProcessId=0, DWORD dwThreadId=0) |
| + { |
| + CPluginDebug::Debug( std::wstring( line ), dwProcessId, dwThreadId ); |
| + } |
| + static void Debug(const std::wstring[], size_t, DWORD dwProcessId=0, DWORD dwThreadId=0); |
| + template< size_t n_lines > |
| + inline static void Debug(const std::wstring (&lines)[n_lines]) |
| + { |
| + CPluginDebug::Debug( lines, n_lines, 0, 0 ); |
| + } |
| static void DebugClear(); |
| - static void DebugError(const CString& error); |
| - static void DebugErrorCode(DWORD errorCode, const CString& error, DWORD dwProcessId=0, DWORD dwThreadId=0); |
| + |
| + /* |
| + * About the only reason we need narrow strings is to deal with std::exception::what(). |
| + */ |
| + static void DebugError(std::string error); |
| + static void DebugErrorCode(DWORD errorCode, const std::wstring & error, DWORD dwProcessId=0, DWORD dwThreadId=0); |
| #endif |
| #if (defined ENABLE_DEBUG_RESULT) |
| - static void DebugResult(const CString& text); |
| - static void DebugResultDomain(const CString& domain); |
| - static void DebugResultBlocking(const CString& type, const CString& src, const CString& domain); |
| - static void DebugResultHiding(const CString& tag, const CString& id, const CString& filter); |
| + static void DebugResult(const std::wstring & text); |
| + static void DebugResultDomain(const std::wstring & domain); |
| + static void DebugResultBlocking(const std::wstring & type, const std::wstring & src, const std::wstring & domain); |
| + static void DebugResultHiding(const std::wstring & tag, const std::wstring & id, const std::wstring & filter); |
| static void DebugResultClear(); |
| #endif |
| #if (defined ENABLE_DEBUG_RESULT_IGNORED) |
| - static void DebugResultIgnoring(const CString& type, const CString& src, const CString& domain); |
| + static void DebugResultIgnoring(const std::wstring & type, const std::wstring & src, const std::wstring & domain); |
| #endif |
| }; |
| +namespace ABP |
| +{ |
| + namespace debug |
| + { |
| + /** |
| + * Widen a narrow-character string to a wide-character one. |
| + * |
| + * This method assumes that the original string is plain ASCII, with no multibyte sequences (such as UTF-8). |
| + * |
| + * The only reason this function is here is to deal with std::exception::what(), which uses narrow characters. |
| + * Therefore this function is in the 'debug' namespace, since these exception texts are for developer use only. |
| + */ |
| + std::wstring widen( std::string ); |
| + |
| + /** |
| + * Narrow a wide-character string to a narrow-character one. |
| + */ |
| + std::string narrow( std::wstring ); |
| + |
| + /** |
| + * Truncate a source string to a maximum of 100 characters. |
| + */ |
| + void truncate_source( std::wstring & src ); |
| + } |
| +} |
| #endif // _PLUGIN_DEBUG_H_ |