diff options
Diffstat (limited to 'src/VBox/Devices/EFI/Firmware/BaseTools/Source/C/VfrCompile/VfrError.h')
-rw-r--r-- | src/VBox/Devices/EFI/Firmware/BaseTools/Source/C/VfrCompile/VfrError.h | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/src/VBox/Devices/EFI/Firmware/BaseTools/Source/C/VfrCompile/VfrError.h b/src/VBox/Devices/EFI/Firmware/BaseTools/Source/C/VfrCompile/VfrError.h new file mode 100644 index 00000000..04a26d93 --- /dev/null +++ b/src/VBox/Devices/EFI/Firmware/BaseTools/Source/C/VfrCompile/VfrError.h @@ -0,0 +1,107 @@ +/** @file + + VfrCompiler Error definition + +Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR> +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 |