home *** CD-ROM | disk | FTP | other *** search
- // This is a part of the Microsoft Foundation Classes C++ library.
- // Copyright (C) 1992-1998 Microsoft Corporation
- // All rights reserved.
- //
- // This source code is only intended as a supplement to the
- // Microsoft Foundation Classes Reference and related
- // electronic documentation provided with the library.
- // See these sources for detailed information regarding the
- // Microsoft Foundation Classes product.
-
- #include "stdafx.h"
-
- #ifdef AFX_CORE2_SEG
- #pragma code_seg(AFX_CORE2_SEG)
- #endif
-
- #ifdef _DEBUG
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
-
- #define new DEBUG_NEW
-
- #ifdef _DEBUG
- // character strings to use for dumping CArchiveException
- static const LPCSTR rgszCArchiveExceptionCause[] =
- {
- "none",
- "generic",
- "readOnly",
- "endOfFile",
- "writeOnly",
- "badIndex",
- "badClass",
- "badSchema",
- };
- static const char szUnknown[] = "unknown";
- #endif
-
- BOOL CArchiveException::GetErrorMessage(LPTSTR lpszError, UINT nMaxError,
- PUINT pnHelpContext)
- {
- ASSERT(lpszError != NULL && AfxIsValidString(lpszError, nMaxError));
-
- if (pnHelpContext != NULL)
- *pnHelpContext = m_cause + AFX_IDP_ARCH_NONE;
-
- // we can use CString here; archive errors aren't caused
- // by being out of memory.
-
- CString strMessage;
- CString strFileName = m_strFileName;
- if (strFileName.IsEmpty())
- strFileName.LoadString(AFX_IDS_UNNAMED_FILE);
- AfxFormatString1(strMessage,
- m_cause + AFX_IDP_ARCH_NONE, strFileName);
- lstrcpyn(lpszError, strMessage, nMaxError);
-
- return TRUE;
- }
-
-
- /////////////////////////////////////////////////////////////////////////////
- // CArchiveException
-
- #ifdef _DEBUG
- void CArchiveException::Dump(CDumpContext& dc) const
- {
- CObject::Dump(dc);
-
- dc << " m_cause = ";
- if (m_cause >= 0 && m_cause < _countof(rgszCArchiveExceptionCause))
- dc << rgszCArchiveExceptionCause[m_cause];
- else
- dc << szUnknown;
-
- dc << "\n";
- }
- #endif //_DEBUG
-
- void AFXAPI AfxThrowArchiveException(int cause,
- LPCTSTR lpszArchiveName /* = NULL */)
- {
- #ifdef _DEBUG
- LPCSTR lpsz;
- if (cause >= 0 && cause < _countof(rgszCArchiveExceptionCause))
- lpsz = rgszCArchiveExceptionCause[cause];
- else
- lpsz = szUnknown;
- TRACE1("CArchive exception: %hs.\n", lpsz);
-
- #endif //_DEBUG
-
- THROW(new CArchiveException(cause, lpszArchiveName));
- }
-
- #ifdef AFX_INIT_SEG
- #pragma code_seg(AFX_INIT_SEG)
- #endif
-
- IMPLEMENT_DYNAMIC(CArchiveException, CException)
-
- /////////////////////////////////////////////////////////////////////////////
-