107 lines
1.6 KiB
C++
107 lines
1.6 KiB
C++
|
// CModule.cpp
|
||
|
|
||
|
#include "Module.h"
|
||
|
|
||
|
// CMoudle
|
||
|
|
||
|
CModule::CModule()
|
||
|
{
|
||
|
m_errHandler = NULL;
|
||
|
m_lastError = 0;
|
||
|
m_lastErrMsg = NULL;
|
||
|
}
|
||
|
|
||
|
CModule::~CModule()
|
||
|
{
|
||
|
if (m_errHandler != NULL)
|
||
|
{
|
||
|
m_errHandler->SetModule(NULL);
|
||
|
}
|
||
|
if (m_lastErrMsg != NULL)
|
||
|
{
|
||
|
free(m_lastErrMsg);
|
||
|
m_lastErrMsg = NULL;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
CErrHandler* CModule::InstallErrHandler(CErrHandler* errHandler)
|
||
|
{
|
||
|
CErrHandler* retval = m_errHandler;
|
||
|
m_errHandler = errHandler;
|
||
|
return retval;
|
||
|
}
|
||
|
|
||
|
void CModule::SetErrHandler(CErrHandler* errHandler)
|
||
|
{
|
||
|
errHandler->SetModule(this);
|
||
|
}
|
||
|
|
||
|
void CModule::ReportError(int theError, LPCTSTR errString)
|
||
|
{
|
||
|
m_lastError = theError;
|
||
|
if (m_lastErrMsg != NULL)
|
||
|
{
|
||
|
free(m_lastErrMsg);
|
||
|
m_lastErrMsg = NULL;
|
||
|
}
|
||
|
if (errString != NULL)
|
||
|
{
|
||
|
m_lastErrMsg = (char*)malloc(strlen(errString) + 1);
|
||
|
strcpy(m_lastErrMsg, errString);
|
||
|
}
|
||
|
if (m_errHandler != NULL)
|
||
|
{
|
||
|
m_errHandler->Error(theError, errString);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
int CModule::GetLastError(BOOL reset)
|
||
|
{
|
||
|
int retval = m_lastError;
|
||
|
if (reset)
|
||
|
{
|
||
|
if (m_lastErrMsg != NULL)
|
||
|
{
|
||
|
free(m_lastErrMsg);
|
||
|
m_lastErrMsg = NULL;
|
||
|
}
|
||
|
m_lastError = 0;
|
||
|
}
|
||
|
return retval;
|
||
|
}
|
||
|
|
||
|
char* CModule::GetLastErrorMessage()
|
||
|
{
|
||
|
return m_lastErrMsg;
|
||
|
}
|
||
|
|
||
|
// CErrHandler
|
||
|
|
||
|
CErrHandler::CErrHandler()
|
||
|
{
|
||
|
Init();
|
||
|
}
|
||
|
|
||
|
void CErrHandler::Init()
|
||
|
{
|
||
|
m_module = NULL;
|
||
|
m_oldHandler = NULL;
|
||
|
}
|
||
|
|
||
|
CErrHandler::~CErrHandler()
|
||
|
{
|
||
|
if (m_module != NULL)
|
||
|
{
|
||
|
m_module->InstallErrHandler(m_oldHandler);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void CErrHandler::SetModule(CModule* module)
|
||
|
{
|
||
|
m_module = module;
|
||
|
if (module != NULL)
|
||
|
{
|
||
|
m_oldHandler = m_module->InstallErrHandler(this);
|
||
|
}
|
||
|
}
|