// Всякие вспомогательные фунции

#if !defined(AFX_SERVISES_H__C0FCD03C_B86B_4409_9D78_487F97DCAFAB__INCLUDED_)
#define AFX_SERVISES_H__C0FCD03C_B86B_4409_9D78_487F97DCAFAB__INCLUDED_


// Макросы для вывода в стандартный лог/стандартное окно DEBUG_OUTPUT отладчика 
// отладочных сообщений
// определения переменной типа long с именем ИМЯ_СЕКЦИИ+"_COUNTER"
// для переключения в отдладочный режим в настройках проекта вкладка C++
// должен быть определен макрос _DEBUG_LOG_MESSAGE
#ifdef _DEBUG_LOG_MESSAGE

#define LogDebugMessageIfDef(lpszFormat, ...) {CString csInternText; csInternText.Format(lpszFormat, ##__VA_ARGS__); LogDebugMessageReal(csInternText,__APL_FUNC__,m_class_info,_T(__FILE__),_T(__DATE__),__LINE__);}
#define LogDebugMessageIfDefZero(lpszFormat, ...) {CString csInternText; csInternText.Format(lpszFormat, ##__VA_ARGS__); LogDebugMessageReal(csInternText,__APL_FUNC__,0,_T(__FILE__),_T(__DATE__),__LINE__);}
#define LogDebugMessageIfDefFormat1(text,par1) {CString cur_state;cur_state.Format(text,par1);LogDebugMessageReal(cur_state,__APL_FUNC__,this->m_class_info,_T(__FILE__),_T(__DATE__),__LINE__);}
#define LogDebugMessageIfDefFormat2(text,par1,par2) {CString cur_state;cur_state.Format(text,par1,par2);LogDebugMessageReal(cur_state,__APL_FUNC__,this->m_class_info,_T(__FILE__),_T(__DATE__),__LINE__);}
#define LogDebugMessageIfDefFormat3(text,par1,par2,par3) {CString cur_state;cur_state.Format(text,par1,par2,par3);LogDebugMessageReal(cur_state,__APL_FUNC__,this->m_class_info,_T(__FILE__),_T(__DATE__),__LINE__);}

#else // #ifdef _DEBUG_LOG_MESSAGE

#define LogDebugMessageIfDef(lpszFormat, ...) ;
#define LogDebugMessageIfDefZero(lpszFormat, ...) ;
//#define LogDebugMessageIfDefZero(message) LogDebugMessageReal(message,__APL_FUNCT__,this->m_class_info,_T(__FILE__),_T(__DATE__),__LINE__);
#define LogDebugMessageIfDefFormat1(text,par1) ;
#define LogDebugMessageIfDefFormat2(text,par1,par2) ;
#define LogDebugMessageIfDefFormat3(text,par1,par2,par3) ;

// #define LogDebugMessageIfDef(message) m_MainLog.LogMessage(message, true, true, true, false, 0, 0, 0, _T(__FILE__), _T(__DATE__), __LINE__);
// #define LogDebugMessageIfDefZero(message) m_MainLog.LogMessage(message, true, true, true, false, 0, 0, 0, _T(__FILE__), _T(__DATE__), __LINE__);
// #define LogDebugMessageIfDefFormat1(text,par1) {CString cur_state;cur_state.Format(text,par1);m_MainLog.LogMessage(cur_state, true, true, true, false, 0, 0, 0, _T(__FILE__), _T(__DATE__), __LINE__);}
// #define LogDebugMessageIfDefFormat2(text,par1,par2) {CString cur_state;cur_state.Format(text,par1,par2);m_MainLog.LogMessage(cur_state, true, true, true, false, 0, 0, 0, _T(__FILE__), _T(__DATE__), __LINE__);}
// #define LogDebugMessageIfDefFormat3(text,par1,par2,par3) {CString cur_state;cur_state.Format(text,par1,par2,par3);m_MainLog.LogMessage(cur_state, true, true, true, false, 0, 0, 0, _T(__FILE__), _T(__DATE__), __LINE__);}


#endif //#ifdef _DEBUG_LOG_MESSAGE

#define MAXUINT32   ((UINT32)~((UINT32)0))
#define MAXINT32    ((INT32)(MAXUINT32 >> 1))
#define MININT32    ((INT32)~MAXINT32)


#endif // AFX_SERVISES_H__C0FCD03C_B86B_4409_9D78_487F97DCAFAB__INCLUDED_




