| 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_ |