1 /** @file 2 3 VfrCompiler Error definition 4 5 Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR> 6 This program and the accompanying materials 7 are licensed and made available under the terms and conditions of the BSD License 8 which accompanies this distribution. The full text of the license may be found at 9 http://opensource.org/licenses/bsd-license.php 10 11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 13 14 **/ 15 16 #ifndef _VFRERROR_H_ 17 #define _VFRERROR_H_ 18 19 #include "Common/UefiBaseTypes.h" 20 21 typedef enum { 22 VFR_RETURN_SUCCESS = 0, 23 VFR_RETURN_ERROR_SKIPED, 24 VFR_RETURN_FATAL_ERROR, 25 VFR_RETURN_MISMATCHED, 26 VFR_RETURN_INVALID_PARAMETER, 27 VFR_RETURN_OUT_FOR_RESOURCES, 28 VFR_RETURN_UNSUPPORTED, 29 VFR_RETURN_REDEFINED, 30 VFR_RETURN_FORMID_REDEFINED, 31 VFR_RETURN_QUESTIONID_REDEFINED, 32 VFR_RETURN_VARSTOREID_REDEFINED, 33 VFR_RETURN_UNDEFINED, 34 VFR_RETURN_VAR_NOTDEFINED_BY_QUESTION, 35 VFR_RETURN_VARSTORE_DATATYPE_REDEFINED_ERROR, 36 VFR_RETURN_GET_EFIVARSTORE_ERROR, 37 VFR_RETURN_EFIVARSTORE_USE_ERROR, 38 VFR_RETURN_EFIVARSTORE_SIZE_ERROR, 39 VFR_RETURN_GET_NVVARSTORE_ERROR, 40 VFR_RETURN_QVAR_REUSE, 41 VFR_RETURN_FLAGS_UNSUPPORTED, 42 VFR_RETURN_ERROR_ARRARY_NUM, 43 VFR_RETURN_DATA_STRING_ERROR, 44 VFR_RETURN_DEFAULT_VALUE_REDEFINED, 45 VFR_RETURN_CONSTANT_ONLY, 46 VFR_RETURN_VARSTORE_NAME_REDEFINED_ERROR, 47 VFR_RETURN_CODEUNDEFINED 48 } EFI_VFR_RETURN_CODE; 49 50 typedef enum { 51 VFR_WARNING_DEFAULT_VALUE_REDEFINED = 0, 52 VFR_WARNING_STRING_TO_UINT_OVERFLOW, 53 VFR_WARNING_ACTION_WITH_TEXT_TWO, 54 VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE, 55 VFR_WARNING_CODEUNDEFINED 56 } EFI_VFR_WARNING_CODE; 57 58 typedef struct _SVFR_ERROR_HANDLE { 59 EFI_VFR_RETURN_CODE mErrorCode; 60 CONST CHAR8 *mErrorMsg; 61 } SVFR_ERROR_HANDLE; 62 63 typedef struct _SVFR_WARNING_HANDLE { 64 EFI_VFR_WARNING_CODE mWarningCode; 65 CONST CHAR8 *mWarningMsg; 66 } SVFR_WARNING_HANDLE; 67 68 struct SVfrFileScopeRecord { 69 CHAR8 *mFileName; 70 UINT32 mWholeScopeLine; 71 UINT32 mScopeLineStart; 72 SVfrFileScopeRecord *mNext; 73 74 SVfrFileScopeRecord (IN CHAR8 *, IN UINT32); 75 ~SVfrFileScopeRecord(); 76 77 private: 78 SVfrFileScopeRecord (IN CONST SVfrFileScopeRecord&); // Prevent copy-construction 79 SVfrFileScopeRecord& operator= (IN CONST SVfrFileScopeRecord&); // Prevent assignment 80 }; 81 82 class CVfrErrorHandle { 83 private: 84 CHAR8 *mInputFileName; 85 SVFR_ERROR_HANDLE *mVfrErrorHandleTable; 86 SVFR_WARNING_HANDLE *mVfrWarningHandleTable; 87 SVfrFileScopeRecord *mScopeRecordListHead; 88 SVfrFileScopeRecord *mScopeRecordListTail; 89 BOOLEAN mWarningAsError; 90 91 public: 92 CVfrErrorHandle (VOID); 93 ~CVfrErrorHandle (VOID); 94 95 VOID SetWarningAsError (IN BOOLEAN); 96 VOID SetInputFile (IN CHAR8 *); 97 VOID ParseFileScopeRecord (IN CHAR8 *, IN UINT32); 98 VOID GetFileNameLineNum (IN UINT32, OUT CHAR8 **, OUT UINT32 *); 99 UINT8 HandleError (IN EFI_VFR_RETURN_CODE, IN UINT32 LineNum = 0, IN CHAR8 *TokName = NULL); 100 UINT8 HandleWarning (IN EFI_VFR_WARNING_CODE, IN UINT32 LineNum = 0, IN CHAR8 *TokName = NULL); 101 VOID PrintMsg (IN UINT32 LineNum = 0, IN CHAR8 *TokName = NULL, IN CONST CHAR8 *MsgType = "Error", IN CONST CHAR8 *ErrorMsg = ""); 102 103 private: 104 CVfrErrorHandle (IN CONST CVfrErrorHandle&); // Prevent copy-construction 105 CVfrErrorHandle& operator= (IN CONST CVfrErrorHandle&); // Prevent assignment 106 }; 107 108 #define CHECK_ERROR_RETURN(f, v) do { EFI_VFR_RETURN_CODE r; if ((r = (f)) != (v)) { return r; } } while (0) 109 110 extern CVfrErrorHandle gCVfrErrorHandle; 111 112 #endif 113