jedioutcast/utils/Assimilate/Module.cpp

107 lines
1.6 KiB
C++
Raw Normal View History

2013-04-04 18:02:27 +00:00
// 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);
}
}