summaryrefslogtreecommitdiff
path: root/plugins/MirFox/src/MirFoxCommons/MirFoxCommons_logger.cpp
diff options
context:
space:
mode:
authorSzymon Tokarz <wsx22@o2.pl>2015-07-25 22:29:31 +0000
committerSzymon Tokarz <wsx22@o2.pl>2015-07-25 22:29:31 +0000
commit5d791bdbbe3c913c031c68653c8a28c9558385a2 (patch)
tree35bf5932331a75507d76ac4e6f9b6992b49e7f76 /plugins/MirFox/src/MirFoxCommons/MirFoxCommons_logger.cpp
parent78b9cb478a8aec236007c330f2d3ebfbf0df25a4 (diff)
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
Diffstat (limited to 'plugins/MirFox/src/MirFoxCommons/MirFoxCommons_logger.cpp')
-rw-r--r--plugins/MirFox/src/MirFoxCommons/MirFoxCommons_logger.cpp115
1 files changed, 115 insertions, 0 deletions
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);
+
+}
+
+