From 5d791bdbbe3c913c031c68653c8a28c9558385a2 Mon Sep 17 00:00:00 2001 From: Szymon Tokarz Date: Sat, 25 Jul 2015 22:29:31 +0000 Subject: MirFox - add MirFoxCommons module as sources instead of lib files git-svn-id: http://svn.miranda-ng.org/main/trunk@14704 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- .../src/MirFoxCommons/MirFoxCommons_logger.cpp | 115 +++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 plugins/MirFox/src/MirFoxCommons/MirFoxCommons_logger.cpp (limited to 'plugins/MirFox/src/MirFoxCommons/MirFoxCommons_logger.cpp') diff --git a/plugins/MirFox/src/MirFoxCommons/MirFoxCommons_logger.cpp b/plugins/MirFox/src/MirFoxCommons/MirFoxCommons_logger.cpp new file mode 100644 index 0000000000..c9c50a4b8a --- /dev/null +++ b/plugins/MirFox/src/MirFoxCommons/MirFoxCommons_logger.cpp @@ -0,0 +1,115 @@ +#include "MirFoxCommons_pch.h" +#include "MirFoxCommons_logger.h" + + +/*static*/ MFLogger * MFLogger::m_pOnlyOneInstance; + + +MFLogger::MFLogger() +{ + logFunction = NULL; + memcpy(m_prefix, L" ", PREFIX_SIZE * sizeof(m_prefix[0])); +} + + +void +MFLogger::initLogger(LogFunction logFunction_p){ + + logFunction = logFunction_p; + InitializeCriticalSection(&logCs); + +} + +void +MFLogger::set6CharsPrefix(const wchar_t* prefix){ + size_t len = wcslen(prefix); + memcpy(m_prefix, L" ", PREFIX_SIZE * sizeof(m_prefix[0])); + memcpy(m_prefix, prefix, len * sizeof(wchar_t)); +} + + +void +MFLogger::releaseLogger(){ + + logFunction = NULL; + DeleteCriticalSection(&logCs); + +} + + +void +MFLogger::log(const wchar_t* szText){ + + size_t len = wcslen(szText) + 1; + wchar_t* buffer = new wchar_t[(PREFIX_SIZE + len) * sizeof(wchar_t)]; + memcpy(buffer, m_prefix, PREFIX_SIZE * sizeof(m_prefix[0])); + memcpy(buffer + PREFIX_SIZE , szText, len * sizeof(wchar_t)); + log_int(buffer); + delete buffer; + +} + + +void +MFLogger::log_p(const wchar_t* szText, ...){ + + va_list args; + va_start(args, szText); + int len = (PREFIX_SIZE + _vscwprintf(szText, args ) + 1); // _vscprintf doesn't count terminating '\0' + wchar_t* buffer = new wchar_t[len * sizeof(wchar_t)]; + vswprintf_s(buffer + PREFIX_SIZE, len, szText, args); + va_end(args); + memcpy(buffer, m_prefix, PREFIX_SIZE * sizeof(m_prefix[0])); + log_int(buffer); + delete buffer; + +} + + +void +MFLogger::log_d(const wchar_t* szText){ + + #ifdef _DEBUG + size_t len = wcslen(szText) + 1; + wchar_t* buffer = new wchar_t[(PREFIX_SIZE + len) * sizeof(wchar_t)]; + memcpy(buffer, m_prefix, PREFIX_SIZE * sizeof(m_prefix[0])); + memcpy(buffer + PREFIX_SIZE , szText, len * sizeof(wchar_t)); + log_int(buffer); + delete buffer; + #endif //_DEBUG + +} + + +void +MFLogger::log_dp(const wchar_t* szText, ...){ + + #ifdef _DEBUG + va_list args; + va_start(args, szText); + int len = (PREFIX_SIZE + _vscwprintf(szText, args ) + 1); // _vscprintf doesn't count terminating '\0' + wchar_t* buffer = new wchar_t[len * sizeof(wchar_t)]; + vswprintf_s(buffer + PREFIX_SIZE, len, szText, args); + va_end(args); + memcpy(buffer, m_prefix, PREFIX_SIZE * sizeof(m_prefix[0])); + log_int(buffer); + delete buffer; + #endif //_DEBUG + +} + + +void +MFLogger::log_int(const wchar_t* szText){ + + if (!logFunction){ + return; + } + + EnterCriticalSection(&logCs); + (*logFunction)(szText); + LeaveCriticalSection(&logCs); + +} + + -- cgit v1.2.3