1 | /** @file
|
---|
2 |
|
---|
3 | VfrCompiler Error definition
|
---|
4 |
|
---|
5 | Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>
|
---|
6 | SPDX-License-Identifier: BSD-2-Clause-Patent
|
---|
7 |
|
---|
8 | **/
|
---|
9 |
|
---|
10 | #ifndef _VFRERROR_H_
|
---|
11 | #define _VFRERROR_H_
|
---|
12 |
|
---|
13 | #include "Common/UefiBaseTypes.h"
|
---|
14 |
|
---|
15 | typedef enum {
|
---|
16 | VFR_RETURN_SUCCESS = 0,
|
---|
17 | VFR_RETURN_ERROR_SKIPED,
|
---|
18 | VFR_RETURN_FATAL_ERROR,
|
---|
19 | VFR_RETURN_MISMATCHED,
|
---|
20 | VFR_RETURN_INVALID_PARAMETER,
|
---|
21 | VFR_RETURN_OUT_FOR_RESOURCES,
|
---|
22 | VFR_RETURN_UNSUPPORTED,
|
---|
23 | VFR_RETURN_REDEFINED,
|
---|
24 | VFR_RETURN_FORMID_REDEFINED,
|
---|
25 | VFR_RETURN_QUESTIONID_REDEFINED,
|
---|
26 | VFR_RETURN_VARSTOREID_REDEFINED,
|
---|
27 | VFR_RETURN_UNDEFINED,
|
---|
28 | VFR_RETURN_VAR_NOTDEFINED_BY_QUESTION,
|
---|
29 | VFR_RETURN_VARSTORE_DATATYPE_REDEFINED_ERROR,
|
---|
30 | VFR_RETURN_GET_EFIVARSTORE_ERROR,
|
---|
31 | VFR_RETURN_EFIVARSTORE_USE_ERROR,
|
---|
32 | VFR_RETURN_EFIVARSTORE_SIZE_ERROR,
|
---|
33 | VFR_RETURN_GET_NVVARSTORE_ERROR,
|
---|
34 | VFR_RETURN_QVAR_REUSE,
|
---|
35 | VFR_RETURN_FLAGS_UNSUPPORTED,
|
---|
36 | VFR_RETURN_ERROR_ARRARY_NUM,
|
---|
37 | VFR_RETURN_DATA_STRING_ERROR,
|
---|
38 | VFR_RETURN_DEFAULT_VALUE_REDEFINED,
|
---|
39 | VFR_RETURN_CONSTANT_ONLY,
|
---|
40 | VFR_RETURN_VARSTORE_NAME_REDEFINED_ERROR,
|
---|
41 | VFR_RETURN_BIT_WIDTH_ERROR,
|
---|
42 | VFR_RETURN_STRING_TO_UINT_OVERFLOW,
|
---|
43 | VFR_RETURN_CODEUNDEFINED
|
---|
44 | } EFI_VFR_RETURN_CODE;
|
---|
45 |
|
---|
46 | typedef enum {
|
---|
47 | VFR_WARNING_DEFAULT_VALUE_REDEFINED = 0,
|
---|
48 | VFR_WARNING_ACTION_WITH_TEXT_TWO,
|
---|
49 | VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE,
|
---|
50 | VFR_WARNING_CODEUNDEFINED
|
---|
51 | } EFI_VFR_WARNING_CODE;
|
---|
52 |
|
---|
53 | typedef struct _SVFR_ERROR_HANDLE {
|
---|
54 | EFI_VFR_RETURN_CODE mErrorCode;
|
---|
55 | CONST CHAR8 *mErrorMsg;
|
---|
56 | } SVFR_ERROR_HANDLE;
|
---|
57 |
|
---|
58 | typedef struct _SVFR_WARNING_HANDLE {
|
---|
59 | EFI_VFR_WARNING_CODE mWarningCode;
|
---|
60 | CONST CHAR8 *mWarningMsg;
|
---|
61 | } SVFR_WARNING_HANDLE;
|
---|
62 |
|
---|
63 | struct SVfrFileScopeRecord {
|
---|
64 | CHAR8 *mFileName;
|
---|
65 | UINT32 mWholeScopeLine;
|
---|
66 | UINT32 mScopeLineStart;
|
---|
67 | SVfrFileScopeRecord *mNext;
|
---|
68 |
|
---|
69 | SVfrFileScopeRecord (IN CHAR8 *, IN UINT32);
|
---|
70 | ~SVfrFileScopeRecord();
|
---|
71 |
|
---|
72 | private:
|
---|
73 | SVfrFileScopeRecord (IN CONST SVfrFileScopeRecord&); // Prevent copy-construction
|
---|
74 | SVfrFileScopeRecord& operator= (IN CONST SVfrFileScopeRecord&); // Prevent assignment
|
---|
75 | };
|
---|
76 |
|
---|
77 | class CVfrErrorHandle {
|
---|
78 | private:
|
---|
79 | CHAR8 *mInputFileName;
|
---|
80 | SVFR_ERROR_HANDLE *mVfrErrorHandleTable;
|
---|
81 | SVFR_WARNING_HANDLE *mVfrWarningHandleTable;
|
---|
82 | SVfrFileScopeRecord *mScopeRecordListHead;
|
---|
83 | SVfrFileScopeRecord *mScopeRecordListTail;
|
---|
84 | BOOLEAN mWarningAsError;
|
---|
85 |
|
---|
86 | public:
|
---|
87 | CVfrErrorHandle (VOID);
|
---|
88 | ~CVfrErrorHandle (VOID);
|
---|
89 |
|
---|
90 | VOID SetWarningAsError (IN BOOLEAN);
|
---|
91 | VOID SetInputFile (IN CHAR8 *);
|
---|
92 | VOID ParseFileScopeRecord (IN CHAR8 *, IN UINT32);
|
---|
93 | VOID GetFileNameLineNum (IN UINT32, OUT CHAR8 **, OUT UINT32 *);
|
---|
94 | UINT8 HandleError (IN EFI_VFR_RETURN_CODE, IN UINT32 LineNum = 0, IN CHAR8 *TokName = NULL);
|
---|
95 | UINT8 HandleWarning (IN EFI_VFR_WARNING_CODE, IN UINT32 LineNum = 0, IN CHAR8 *TokName = NULL);
|
---|
96 | VOID PrintMsg (IN UINT32 LineNum = 0, IN CHAR8 *TokName = NULL, IN CONST CHAR8 *MsgType = "Error", IN CONST CHAR8 *ErrorMsg = "");
|
---|
97 |
|
---|
98 | private:
|
---|
99 | CVfrErrorHandle (IN CONST CVfrErrorHandle&); // Prevent copy-construction
|
---|
100 | CVfrErrorHandle& operator= (IN CONST CVfrErrorHandle&); // Prevent assignment
|
---|
101 | };
|
---|
102 |
|
---|
103 | #define CHECK_ERROR_RETURN(f, v) do { EFI_VFR_RETURN_CODE r; if ((r = (f)) != (v)) { return r; } } while (0)
|
---|
104 |
|
---|
105 | extern CVfrErrorHandle gCVfrErrorHandle;
|
---|
106 |
|
---|
107 | #endif
|
---|