253 lines
6.1 KiB
C++
253 lines
6.1 KiB
C++
//
|
|
// errordefs.h
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
|
|
#pragma once
|
|
|
|
#include "resource.h"
|
|
|
|
enum EMIT_TYPE
|
|
{
|
|
EMIT_ERROR = 0,
|
|
EMIT_WARNING
|
|
};
|
|
|
|
struct EMITDESC
|
|
{
|
|
EMIT_TYPE emitType;
|
|
UINT nEmitID;
|
|
UINT nMsgID;
|
|
bool bForce;
|
|
};
|
|
|
|
#define EMITERR_BASE 1000
|
|
#define EMITWARN_BASE 4000
|
|
|
|
#define DECLARE_EMITERR(__nEmitID, __nMsgID) \
|
|
{ EMIT_ERROR, EMITERR_BASE + __nEmitID, __nMsgID, false },
|
|
|
|
#define DECLARE_EMITERR_FORCE(__nEmitID, __nMsgID) \
|
|
{ EMIT_ERROR, EMITERR_BASE + __nEmitID, __nMsgID, true },
|
|
|
|
#define DECLARE_EMITWARN(__nEmitID, __nMsgID) \
|
|
{ EMIT_WARNING, EMITWARN_BASE + __nEmitID, __nMsgID, true },
|
|
|
|
#ifndef _PREFIX_
|
|
extern __declspec(selectany) const EMITDESC g_Emits[] =
|
|
#else
|
|
extern const EMITDESC g_Emits[] =
|
|
#endif // _PREFIX_
|
|
{
|
|
// errors
|
|
|
|
DECLARE_EMITERR_FORCE(1, IDS_SDL_PROCESS_FAILURE)
|
|
DECLARE_EMITERR_FORCE(2, IDS_SDL_GENERATE_FAILURE)
|
|
DECLARE_EMITERR(3, IDS_SDL_INTERNAL)
|
|
DECLARE_EMITERR(4, IDS_SDL_PARSE_ERROR)
|
|
DECLARE_EMITERR(5, IDS_SDL_UNRECOGNIZED_TAG)
|
|
DECLARE_EMITERR(6, IDS_SDL_MISSING_ATTRIBUTE)
|
|
DECLARE_EMITERR(7, IDS_SDL_MSXML)
|
|
DECLARE_EMITERR(8, IDS_SDL_UNRECOGNIZED_DOC)
|
|
DECLARE_EMITERR(9, IDS_SDL_UNRESOLVED_ELEM)
|
|
DECLARE_EMITERR(10, IDS_SDL_UNRESOLVED_NAMESPACE)
|
|
DECLARE_EMITERR(11, IDS_SDL_LITERAL_ONLY)
|
|
DECLARE_EMITERR(12, IDS_SDL_INVALID_VALUE)
|
|
DECLARE_EMITERR(13, IDS_SDL_UNRESOLVED_ELEM2)
|
|
DECLARE_EMITERR_FORCE(14, IDS_SDL_RECURSIVE_TYPE)
|
|
DECLARE_EMITERR_FORCE(15, IDS_SDL_MISSING_OPTION)
|
|
DECLARE_EMITERR(16, IDS_SDL_FAILED_WSDL_OPEN)
|
|
DECLARE_EMITERR(17, IDS_SDL_UNRESOLVED_MSGPART)
|
|
DECLARE_EMITERR(18, IDS_SDL_SOAPHEADER_DUPNAME)
|
|
DECLARE_EMITERR(19, IDS_SDL_SCHEMALEVEL_NAME)
|
|
DECLARE_EMITERR(20, IDS_SDL_PAD_TYPE)
|
|
DECLARE_EMITERR(21, IDS_SDL_PAD_INVALID_SOAP)
|
|
DECLARE_EMITERR(22, IDS_SDL_RPC_ENCODED_TYPE)
|
|
DECLARE_EMITERR(23, IDS_SDL_DOC_ENCODED)
|
|
DECLARE_EMITERR(24, IDS_SDL_ENCODINGSTYLE)
|
|
DECLARE_EMITERR(25, IDS_SDL_IO_DIFF_NAMESPACES)
|
|
DECLARE_EMITERR(26, IDS_SDL_RPC_LITERAL)
|
|
DECLARE_EMITERR(27, IDS_SDL_HEADER_DIFF_NAMESPACES)
|
|
DECLARE_EMITERR(28, IDS_SDL_INVALID_ARRAY_DESC_ERR)
|
|
DECLARE_EMITERR_FORCE(29, IDS_SDL_NO_GENERATE)
|
|
DECLARE_EMITERR(30, IDS_SDL_BASE_EXTENSION)
|
|
DECLARE_EMITERR_FORCE(31, IDS_SDL_PROCESS_DM_FAILURE)
|
|
DECLARE_EMITERR(32, IDS_SDL_FAILED_DM_OPEN)
|
|
// warnings
|
|
|
|
DECLARE_EMITWARN(0, IDS_SDL_PARSE_WARNING)
|
|
DECLARE_EMITWARN(1, IDS_SDL_ONE_PORT)
|
|
DECLARE_EMITWARN(2, IDS_SDL_SOAP_PORT_ONLY)
|
|
DECLARE_EMITWARN(3, IDS_SDL_SOAP_BINDING_ONLY)
|
|
DECLARE_EMITWARN(4, IDS_SDL_UNSUPPORTED_TAG)
|
|
DECLARE_EMITWARN(5, IDS_SDL_UNSUPPORTED_STRING)
|
|
DECLARE_EMITWARN(6, IDS_SDL_IGNORE_CMDITEM)
|
|
DECLARE_EMITWARN(7, IDS_SDL_INVALID_ARRAY_DESC)
|
|
DECLARE_EMITWARN(8, IDS_SDL_SKIP_EXTENSIBILITY)
|
|
DECLARE_EMITWARN(9, IDS_SDL_CUSTOM_TYPE)
|
|
DECLARE_EMITWARN(10, IDS_SDL_NO_ATTRIBUTES)
|
|
DECLARE_EMITWARN(11, IDS_SDL_DEFAULT_TYPE)
|
|
};
|
|
|
|
class CEmitError
|
|
{
|
|
private:
|
|
|
|
bool m_bEmitted;
|
|
bool m_bEmitWarnings;
|
|
|
|
int GetEmitIndex(UINT uID)
|
|
{
|
|
for (int i=0; i<(sizeof(g_Emits)/sizeof(g_Emits[0])); i++)
|
|
{
|
|
if (uID == g_Emits[i].nMsgID)
|
|
{
|
|
return i;
|
|
}
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
|
|
void EmitCmdLineMsg(UINT uID, va_list args, bool bError = true)
|
|
{
|
|
char *szMsg = (bError != false) ? "error" : "warning";
|
|
|
|
CStringA m_strMsg;
|
|
if (m_strMsg.LoadString(IDS_SDL_CMDLINE))
|
|
{
|
|
printf((LPCSTR) m_strMsg, szMsg);
|
|
}
|
|
|
|
int nIndex = GetEmitIndex(uID);
|
|
if (nIndex != -1)
|
|
{
|
|
printf("D%d : ", g_Emits[nIndex].nEmitID);
|
|
Emit(uID, args);
|
|
}
|
|
}
|
|
|
|
void EmitFileMsg(UINT uID, LPCWSTR wszFile, int nLine, int nCol, UINT uIDExtra, va_list args, bool bError)
|
|
{
|
|
char *szMsg = (bError != false) ? "error" : "warning";
|
|
int nIndex = GetEmitIndex(uID);
|
|
if ((nIndex != -1) &&
|
|
((bError == false) ||
|
|
(m_bEmitted == false) || (g_Emits[nIndex].bForce != false)))
|
|
{
|
|
CStringA strExtra;
|
|
if (uIDExtra != 0)
|
|
{
|
|
if (!strExtra.LoadString(uIDExtra))
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
printf("\r\n%ws(%d,%d) : %s%s SDL%u : ", wszFile, nLine, nCol,
|
|
(LPCSTR)strExtra, szMsg, g_Emits[nIndex].nEmitID);
|
|
Emit(uID, args);
|
|
|
|
if (bError != false)
|
|
{
|
|
m_bEmitted = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
public:
|
|
|
|
CEmitError()
|
|
:m_bEmitted(false), m_bEmitWarnings(true)
|
|
{
|
|
}
|
|
|
|
void EmitErrorHr(HRESULT hr)
|
|
{
|
|
if (m_bEmitted == false)
|
|
{
|
|
char *szMsg = NULL;
|
|
DWORD dwLen = ::FormatMessageA(
|
|
FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,
|
|
NULL, hr, 0, (LPSTR)&szMsg, 0, NULL);
|
|
|
|
if (dwLen != 0)
|
|
{
|
|
printf("\r\nsproxy : error SDL%u : %s", EMITERR_BASE, szMsg);
|
|
::LocalFree(szMsg);
|
|
|
|
m_bEmitted = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
void EmitError(UINT uID, va_list args)
|
|
{
|
|
int nIndex = GetEmitIndex(uID);
|
|
if ((nIndex != -1) && ((m_bEmitted == false) || (g_Emits[nIndex].bForce != false)))
|
|
{
|
|
printf("\r\nsproxy : error SDL%u : ", g_Emits[nIndex].nEmitID);
|
|
Emit(uID, args);
|
|
|
|
m_bEmitted = true;
|
|
}
|
|
}
|
|
|
|
void EmitWarning(UINT uID, va_list args)
|
|
{
|
|
if (m_bEmitWarnings != false)
|
|
{
|
|
int nIndex = GetEmitIndex(uID);
|
|
if (nIndex != -1)
|
|
{
|
|
printf("\r\nsproxy : warning SDL%u : ", g_Emits[nIndex].nEmitID);
|
|
Emit(uID, args);
|
|
}
|
|
}
|
|
}
|
|
|
|
void Emit(UINT uID, va_list args)
|
|
{
|
|
CStringA m_strMsg;
|
|
if (m_strMsg.LoadString(uID))
|
|
{
|
|
vprintf((LPCSTR) m_strMsg, args);
|
|
}
|
|
}
|
|
|
|
bool SetEmitWarnings(bool bWarn)
|
|
{
|
|
bool bPrev = m_bEmitWarnings;
|
|
m_bEmitWarnings = bWarn;
|
|
return bPrev;
|
|
}
|
|
|
|
void EmitCmdLineError(UINT uID, va_list args)
|
|
{
|
|
EmitCmdLineMsg(uID, args, true);
|
|
}
|
|
|
|
void EmitCmdLineWarning(UINT uID, va_list args)
|
|
{
|
|
EmitCmdLineMsg(uID, args, false);
|
|
}
|
|
|
|
void EmitFileWarning(UINT uID, LPCWSTR wszFile, int nLine, int nCol, UINT uIDExtra, va_list args)
|
|
{
|
|
if (m_bEmitWarnings != false)
|
|
{
|
|
EmitFileMsg(uID, wszFile, nLine, nCol, uIDExtra, args, false);
|
|
}
|
|
}
|
|
|
|
void EmitFileError(UINT uID, LPCWSTR wszFile, int nLine, int nCol, UINT uIDExtra, va_list args)
|
|
{
|
|
EmitFileMsg(uID, wszFile, nLine, nCol, uIDExtra, args, true);
|
|
}
|
|
};
|
|
|
|
#ifndef _PREFIX_
|
|
__declspec(selectany) CEmitError g_Emit;
|
|
#else
|
|
CEmitError g_Emit;
|
|
#endif |