]> git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Source/C/VfrCompile/VfrError.h
BaseTools: Clean up source files
[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 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_BIT_WIDTH_ERROR,
48 VFR_RETURN_CODEUNDEFINED
49 } EFI_VFR_RETURN_CODE;
50
51 typedef enum {
52 VFR_WARNING_DEFAULT_VALUE_REDEFINED = 0,
53 VFR_WARNING_STRING_TO_UINT_OVERFLOW,
54 VFR_WARNING_ACTION_WITH_TEXT_TWO,
55 VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE,
56 VFR_WARNING_CODEUNDEFINED
57 } EFI_VFR_WARNING_CODE;
58
59 typedef struct _SVFR_ERROR_HANDLE {
60 EFI_VFR_RETURN_CODE mErrorCode;
61 CONST CHAR8 *mErrorMsg;
62 } SVFR_ERROR_HANDLE;
63
64 typedef struct _SVFR_WARNING_HANDLE {
65 EFI_VFR_WARNING_CODE mWarningCode;
66 CONST CHAR8 *mWarningMsg;
67 } SVFR_WARNING_HANDLE;
68
69 struct SVfrFileScopeRecord {
70 CHAR8 *mFileName;
71 UINT32 mWholeScopeLine;
72 UINT32 mScopeLineStart;
73 SVfrFileScopeRecord *mNext;
74
75 SVfrFileScopeRecord (IN CHAR8 *, IN UINT32);
76 ~SVfrFileScopeRecord();
77
78 private:
79 SVfrFileScopeRecord (IN CONST SVfrFileScopeRecord&); // Prevent copy-construction
80 SVfrFileScopeRecord& operator= (IN CONST SVfrFileScopeRecord&); // Prevent assignment
81 };
82
83 class CVfrErrorHandle {
84 private:
85 CHAR8 *mInputFileName;
86 SVFR_ERROR_HANDLE *mVfrErrorHandleTable;
87 SVFR_WARNING_HANDLE *mVfrWarningHandleTable;
88 SVfrFileScopeRecord *mScopeRecordListHead;
89 SVfrFileScopeRecord *mScopeRecordListTail;
90 BOOLEAN mWarningAsError;
91
92 public:
93 CVfrErrorHandle (VOID);
94 ~CVfrErrorHandle (VOID);
95
96 VOID SetWarningAsError (IN BOOLEAN);
97 VOID SetInputFile (IN CHAR8 *);
98 VOID ParseFileScopeRecord (IN CHAR8 *, IN UINT32);
99 VOID GetFileNameLineNum (IN UINT32, OUT CHAR8 **, OUT UINT32 *);
100 UINT8 HandleError (IN EFI_VFR_RETURN_CODE, IN UINT32 LineNum = 0, IN CHAR8 *TokName = NULL);
101 UINT8 HandleWarning (IN EFI_VFR_WARNING_CODE, IN UINT32 LineNum = 0, IN CHAR8 *TokName = NULL);
102 VOID PrintMsg (IN UINT32 LineNum = 0, IN CHAR8 *TokName = NULL, IN CONST CHAR8 *MsgType = "Error", IN CONST CHAR8 *ErrorMsg = "");
103
104 private:
105 CVfrErrorHandle (IN CONST CVfrErrorHandle&); // Prevent copy-construction
106 CVfrErrorHandle& operator= (IN CONST CVfrErrorHandle&); // Prevent assignment
107 };
108
109 #define CHECK_ERROR_RETURN(f, v) do { EFI_VFR_RETURN_CODE r; if ((r = (f)) != (v)) { return r; } } while (0)
110
111 extern CVfrErrorHandle gCVfrErrorHandle;
112
113 #endif