]> git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Source/C/VfrCompile/VfrError.h
BaseTools: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / BaseTools / Source / C / VfrCompile / VfrError.h
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