/** @file VfrCompiler Error definition Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _VFRERROR_H_ #define _VFRERROR_H_ #include "Common/UefiBaseTypes.h" typedef enum { VFR_RETURN_SUCCESS = 0, VFR_RETURN_ERROR_SKIPED, VFR_RETURN_FATAL_ERROR, VFR_RETURN_MISMATCHED, VFR_RETURN_INVALID_PARAMETER, VFR_RETURN_OUT_FOR_RESOURCES, VFR_RETURN_UNSUPPORTED, VFR_RETURN_REDEFINED, VFR_RETURN_FORMID_REDEFINED, VFR_RETURN_QUESTIONID_REDEFINED, VFR_RETURN_VARSTOREID_REDEFINED, VFR_RETURN_UNDEFINED, VFR_RETURN_VAR_NOTDEFINED_BY_QUESTION, VFR_RETURN_VARSTORE_DATATYPE_REDEFINED_ERROR, VFR_RETURN_GET_EFIVARSTORE_ERROR, VFR_RETURN_EFIVARSTORE_USE_ERROR, VFR_RETURN_EFIVARSTORE_SIZE_ERROR, VFR_RETURN_GET_NVVARSTORE_ERROR, VFR_RETURN_QVAR_REUSE, VFR_RETURN_FLAGS_UNSUPPORTED, VFR_RETURN_ERROR_ARRARY_NUM, VFR_RETURN_DATA_STRING_ERROR, VFR_RETURN_DEFAULT_VALUE_REDEFINED, VFR_RETURN_CONSTANT_ONLY, VFR_RETURN_VARSTORE_NAME_REDEFINED_ERROR, VFR_RETURN_BIT_WIDTH_ERROR, VFR_RETURN_STRING_TO_UINT_OVERFLOW, VFR_RETURN_CODEUNDEFINED } EFI_VFR_RETURN_CODE; typedef enum { VFR_WARNING_DEFAULT_VALUE_REDEFINED = 0, VFR_WARNING_ACTION_WITH_TEXT_TWO, VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE, VFR_WARNING_CODEUNDEFINED } EFI_VFR_WARNING_CODE; typedef struct _SVFR_ERROR_HANDLE { EFI_VFR_RETURN_CODE mErrorCode; CONST CHAR8 *mErrorMsg; } SVFR_ERROR_HANDLE; typedef struct _SVFR_WARNING_HANDLE { EFI_VFR_WARNING_CODE mWarningCode; CONST CHAR8 *mWarningMsg; } SVFR_WARNING_HANDLE; struct SVfrFileScopeRecord { CHAR8 *mFileName; UINT32 mWholeScopeLine; UINT32 mScopeLineStart; SVfrFileScopeRecord *mNext; SVfrFileScopeRecord (IN CHAR8 *, IN UINT32); ~SVfrFileScopeRecord(); private: SVfrFileScopeRecord (IN CONST SVfrFileScopeRecord&); // Prevent copy-construction SVfrFileScopeRecord& operator= (IN CONST SVfrFileScopeRecord&); // Prevent assignment }; class CVfrErrorHandle { private: CHAR8 *mInputFileName; SVFR_ERROR_HANDLE *mVfrErrorHandleTable; SVFR_WARNING_HANDLE *mVfrWarningHandleTable; SVfrFileScopeRecord *mScopeRecordListHead; SVfrFileScopeRecord *mScopeRecordListTail; BOOLEAN mWarningAsError; public: CVfrErrorHandle (VOID); ~CVfrErrorHandle (VOID); VOID SetWarningAsError (IN BOOLEAN); VOID SetInputFile (IN CHAR8 *); VOID ParseFileScopeRecord (IN CHAR8 *, IN UINT32); VOID GetFileNameLineNum (IN UINT32, OUT CHAR8 **, OUT UINT32 *); UINT8 HandleError (IN EFI_VFR_RETURN_CODE, IN UINT32 LineNum = 0, IN CHAR8 *TokName = NULL); UINT8 HandleWarning (IN EFI_VFR_WARNING_CODE, IN UINT32 LineNum = 0, IN CHAR8 *TokName = NULL); VOID PrintMsg (IN UINT32 LineNum = 0, IN CHAR8 *TokName = NULL, IN CONST CHAR8 *MsgType = "Error", IN CONST CHAR8 *ErrorMsg = ""); private: CVfrErrorHandle (IN CONST CVfrErrorHandle&); // Prevent copy-construction CVfrErrorHandle& operator= (IN CONST CVfrErrorHandle&); // Prevent assignment }; #define CHECK_ERROR_RETURN(f, v) do { EFI_VFR_RETURN_CODE r; if ((r = (f)) != (v)) { return r; } } while (0) extern CVfrErrorHandle gCVfrErrorHandle; #endif