00001
00034 #include "stdafx.h"
00035 #include "CError.h"
00036
00037 namespace AxPipe {
00039 void
00040 CError::InError(int iError, _TCHAR *szError) {
00041 if (m_pPrev) {
00042 m_pPrev->InError(iError, szError);
00043 } else {
00044 if (m_iError != ERROR_CODE_SUCCESS) {
00045 delete[] szError;
00046 return;
00047 }
00048 delete[] m_szError;
00049 m_szError = szError;
00050 m_iError = iError;
00051 }
00052 }
00054 void
00055 CError::Init(CError *pPrev) {
00056 m_pPrev = pPrev;
00057 }
00059 CError::CError() {
00060 m_szError = NULL;
00061 m_pPrev = NULL;
00062 m_iError = ERROR_CODE_SUCCESS;
00063 }
00065 CError::~CError() {
00066 delete[] m_szError;
00067 }
00071 void
00072 CError::SetError(int iError, const _TCHAR *szError, const _TCHAR *szParam) {
00073
00074 _TCHAR *szFmtError = new _TCHAR[1024];
00075 if (szFmtError) {
00076
00077 wsprintf(szFmtError, szError, szParam);
00078 InError(iError, szFmtError);
00079 }
00080 }
00084 _TCHAR *
00085 CError::GetErrorMsg() {
00086 if (m_pPrev) {
00087 return m_pPrev->GetErrorMsg();
00088 } else {
00089 return m_szError;
00090 }
00091 }
00095 int
00096 CError::GetErrorCode() {
00097 if (m_pPrev) {
00098 return m_pPrev->GetErrorCode();
00099 } else {
00100 return m_iError;
00101 }
00102 }
00103 };