From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 98A13740047 for ; Fri, 8 Mar 2024 14:30:14 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=Jux+kXHFPJZa3TYzFOAC3kF1rZjd/ezBUkMCm/icVW4=; c=relaxed/simple; d=groups.io; h=From:To:Cc:References:In-Reply-To:Subject:Date:Message-ID:MIME-Version:Thread-Index:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Type:Content-Transfer-Encoding:Content-Language; s=20240206; t=1709908213; v=1; b=eDHt86vwmgcSqiopif9tdmBO45j09NLgXlAqztnsVMoCq4OqBJ8j+RL8kVX2UWzZwgN8q3fR LXELO4V6mlfLt3EAXU6QblOKcUDjksRuXCixRKLMmlOjPDAshiE5dI8Z627jhJxDjTyBDG1inPb cW8LavIhOPJH1q+gcVki+oK8ZDlmjK4dcoARYsp2G+5r/KnhRahBbJWvvSrkDdw2trhABZuhV5j uiMoqs/XL7greOEHSZ2jlhCZlS40oU6L0HEuOVTTakVifK0W8iEwGzeC8oRo5cprF10taXQRaoE tf9DomGTRQjcpoLUwdaTgPGJGL8KQVbj+V5NgpsH8o4IA== X-Received: by 127.0.0.2 with SMTP id QvrrYY7687511xN9SaYo0KW4; Fri, 08 Mar 2024 06:30:13 -0800 X-Received: from cxsh.intel-email.com (cxsh.intel-email.com [121.46.250.151]) by mx.groups.io with SMTP id smtpd.web10.23205.1709908210583435721 for ; Fri, 08 Mar 2024 06:30:12 -0800 X-Received: from cxsh.intel-email.com (localhost [127.0.0.1]) by cxsh.intel-email.com (Postfix) with ESMTP id 9A096DDA79F for ; Fri, 8 Mar 2024 22:30:07 +0800 (CST) X-Received: from localhost (localhost [127.0.0.1]) by cxsh.intel-email.com (Postfix) with ESMTP id 94FA1DDA787 for ; Fri, 8 Mar 2024 22:30:07 +0800 (CST) X-Received: from mail.byosoft.com.cn (mail.byosoft.com.cn [58.240.74.242]) by cxsh.intel-email.com (Postfix) with SMTP id 91AEBDDA78D for ; Fri, 8 Mar 2024 22:30:04 +0800 (CST) X-Received: from DESKTOPS6D0PVI ([114.93.194.54]) (envelope-sender ) by 192.168.6.13 with ESMTP(SSL) for ; Fri, 08 Mar 2024 22:29:55 +0800 X-WM-Sender: gaoliming@byosoft.com.cn X-Originating-IP: 114.93.194.54 X-WM-AuthFlag: YES X-WM-AuthUser: gaoliming@byosoft.com.cn From: "gaoliming via groups.io" To: "'Yuting Yang'" , Cc: "'Rebecca Cran'" , "'Bob Feng'" , "'Christine Chen'" , "'Zifeng Zhang'" References: <20240126025341.149-1-yuting2.yang@intel.com> In-Reply-To: <20240126025341.149-1-yuting2.yang@intel.com> Subject: =?UTF-8?B?W2VkazItZGV2ZWxdIOWbnuWkjTogW1BhdGNoIFYzXSBCYXNlVG9vbHM6IFZmckNvbXBpbGVyIEFkZHMgRGVmYXVsdFZhbHVlRXJyb3I=?= Date: Fri, 08 Mar 2024 06:30:12 -0800 Message-ID: <03d701da7165$193f8600$4bbe9200$@byosoft.com.cn> MIME-Version: 1.0 Thread-Index: AQHXaPTXuswEHVv4J0cJFLtVuYCan7Ez95cg Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,gaoliming@byosoft.com.cn List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: 0Hz7Io5jGD619JThSTkpEXAOx7686176AA= Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: quoted-printable Content-Language: zh-cn X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20240206 header.b=eDHt86vw; dmarc=pass (policy=none) header.from=groups.io; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io Yuting: This patch also removes the trailing white space. If you want to do it, please separate them as the different commit. One is to remove the trailing white space, another is to add default value error support.=20 Thanks Liming > -----=D3=CA=BC=FE=D4=AD=BC=FE----- > =B7=A2=BC=FE=C8=CB: Yuting Yang > =B7=A2=CB=CD=CA=B1=BC=E4: 2024=C4=EA1=D4=C226=C8=D5 10:54 > =CA=D5=BC=FE=C8=CB: devel@edk2.groups.io > =B3=AD=CB=CD: Rebecca Cran ; Liming Gao > ; Bob Feng ; Christine > Chen ; Zifeng Zhang > =D6=F7=CC=E2: [Patch V3] BaseTools: VfrCompiler Adds DefaultValueError >=20 > Add --catch_default option to raise a DefaultValueError when > encountering VFR default definitions to help remove default variables. >=20 > Signed-off-by: Yuting Yang >=20 > Cc: Rebecca Cran > Cc: Liming Gao > Cc: Bob Feng > Cc: Christine Chen > Cc: Zifeng Zhang > Signed-off-by: Yuting Yang > --- > BaseTools/Source/C/VfrCompile/VfrCompiler.cpp | 8 +- > BaseTools/Source/C/VfrCompile/VfrCompiler.h | 1 + > BaseTools/Source/C/VfrCompile/VfrError.cpp | 3 +- > BaseTools/Source/C/VfrCompile/VfrError.h | 3 +- > BaseTools/Source/C/VfrCompile/VfrFormPkg.h | 1 + > BaseTools/Source/C/VfrCompile/VfrSyntax.g | 238 ++++++++++-------- > 6 files changed, 150 insertions(+), 104 deletions(-) >=20 > diff --git a/BaseTools/Source/C/VfrCompile/VfrCompiler.cpp > b/BaseTools/Source/C/VfrCompile/VfrCompiler.cpp > index 5f4d262d85..4031af6e39 100644 > --- a/BaseTools/Source/C/VfrCompile/VfrCompiler.cpp > +++ b/BaseTools/Source/C/VfrCompile/VfrCompiler.cpp > @@ -78,6 +78,7 @@ CVfrCompiler::OptionInitialization ( > mOptions.WarningAsError =3D FALSE; >=20 > mOptions.AutoDefault =3D FALSE; >=20 > mOptions.CheckDefault =3D FALSE; >=20 > + mOptions.IsCatchDefaultEnable =3D FALSE; >=20 > memset (&mOptions.OverrideClassGuid, 0, sizeof (EFI_GUID)); >=20 >=20 >=20 > if (Argc =3D=3D 1) { >=20 > @@ -95,6 +96,8 @@ CVfrCompiler::OptionInitialization ( > Version (); >=20 > SET_RUN_STATUS (STATUS_DEAD); >=20 > return; >=20 > + } else if (stricmp(Argv[Index], "--catch_default") =3D=3D 0){ >=20 > + mOptions.IsCatchDefaultEnable =3D TRUE; >=20 > } else if (stricmp(Argv[Index], "-l") =3D=3D 0) { >=20 > mOptions.CreateRecordListFile =3D TRUE; >=20 > gCIfrRecordInfoDB.TurnOn (); >=20 > @@ -179,7 +182,6 @@ CVfrCompiler::OptionInitialization ( > goto Fail; >=20 > } >=20 > strcpy (mOptions.VfrFileName, Argv[Index]); >=20 > - >=20 > if (mOptions.OutputDirectory =3D=3D NULL) { >=20 > mOptions.OutputDirectory =3D (CHAR8 *) malloc (1); >=20 > if (mOptions.OutputDirectory =3D=3D NULL) { >=20 > @@ -679,7 +681,7 @@ CVfrCompiler::Compile ( > DebugError (NULL, 0, 0001, "Error opening the input file", "%s", > InFileName); >=20 > goto Fail; >=20 > } >=20 > - >=20 > + InputInfo.IsCatchDefaultEnable =3D mOptions.IsCatchDefaultEnable; >=20 > if (mOptions.HasOverrideClassGuid) { >=20 > InputInfo.OverrideClassGuid =3D &mOptions.OverrideClassGuid; >=20 > } else { >=20 > @@ -937,5 +939,3 @@ main ( >=20 >=20 > return GetUtilityStatus (); >=20 > } >=20 > - >=20 > - >=20 > diff --git a/BaseTools/Source/C/VfrCompile/VfrCompiler.h > b/BaseTools/Source/C/VfrCompile/VfrCompiler.h > index b6e207d2ce..974f37c4eb 100644 > --- a/BaseTools/Source/C/VfrCompile/VfrCompiler.h > +++ b/BaseTools/Source/C/VfrCompile/VfrCompiler.h > @@ -52,6 +52,7 @@ typedef struct { > BOOLEAN WarningAsError; >=20 > BOOLEAN AutoDefault; >=20 > BOOLEAN CheckDefault; >=20 > + BOOLEAN IsCatchDefaultEnable; >=20 > } OPTIONS; >=20 >=20 >=20 > typedef enum { >=20 > diff --git a/BaseTools/Source/C/VfrCompile/VfrError.cpp > b/BaseTools/Source/C/VfrCompile/VfrError.cpp > index 65bb8e34fd..8a706f929b 100644 > --- a/BaseTools/Source/C/VfrCompile/VfrError.cpp > +++ b/BaseTools/Source/C/VfrCompile/VfrError.cpp > @@ -49,7 +49,8 @@ static SVFR_WARNING_HANDLE > VFR_WARNING_HANDLE_TABLE [] =3D { > { VFR_WARNING_DEFAULT_VALUE_REDEFINED, ": default value > re-defined with different value"}, >=20 > { VFR_WARNING_ACTION_WITH_TEXT_TWO, ": Action opcode should not > have TextTwo part"}, >=20 > { VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE, ": Not > recommend to use obsoleted framework opcode"}, >=20 > - { VFR_WARNING_CODEUNDEFINED, ": undefined Warning Code" } >=20 > + { VFR_WARNING_CODEUNDEFINED, ": undefined Warning Code" }, >=20 > + { VFR_WARNING_UNSUPPORTED, ": pls remove the default values if > necessary" } >=20 > }; >=20 >=20 >=20 > CVfrErrorHandle::CVfrErrorHandle ( >=20 > diff --git a/BaseTools/Source/C/VfrCompile/VfrError.h > b/BaseTools/Source/C/VfrCompile/VfrError.h > index 7d16bd5f74..1b4bc173d2 100644 > --- a/BaseTools/Source/C/VfrCompile/VfrError.h > +++ b/BaseTools/Source/C/VfrCompile/VfrError.h > @@ -47,7 +47,8 @@ typedef enum { > VFR_WARNING_DEFAULT_VALUE_REDEFINED =3D 0, >=20 > VFR_WARNING_ACTION_WITH_TEXT_TWO, >=20 > VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE, >=20 > - VFR_WARNING_CODEUNDEFINED >=20 > + VFR_WARNING_CODEUNDEFINED, >=20 > + VFR_WARNING_UNSUPPORTED >=20 > } EFI_VFR_WARNING_CODE; >=20 >=20 >=20 > typedef struct _SVFR_ERROR_HANDLE { >=20 > diff --git a/BaseTools/Source/C/VfrCompile/VfrFormPkg.h > b/BaseTools/Source/C/VfrCompile/VfrFormPkg.h > index 9ef6f07787..d8fada3bcb 100644 > --- a/BaseTools/Source/C/VfrCompile/VfrFormPkg.h > +++ b/BaseTools/Source/C/VfrCompile/VfrFormPkg.h > @@ -96,6 +96,7 @@ struct SBufferNode { >=20 >=20 > typedef struct { >=20 > EFI_GUID *OverrideClassGuid; >=20 > + BOOLEAN IsCatchDefaultEnable; >=20 > } INPUT_INFO_TO_SYNTAX; >=20 >=20 >=20 > class CFormPkg { >=20 > diff --git a/BaseTools/Source/C/VfrCompile/VfrSyntax.g > b/BaseTools/Source/C/VfrCompile/VfrSyntax.g > index 55fd067f8a..5daf1c423c 100644 > --- a/BaseTools/Source/C/VfrCompile/VfrSyntax.g > +++ b/BaseTools/Source/C/VfrCompile/VfrSyntax.g > @@ -50,6 +50,7 @@ VfrParserStart ( > { >=20 > ParserBlackBox VfrParser(File)= ; >=20 > VfrParser.parser()->SetOverrideClassGuid (InputInfo->OverrideClassGuid); >=20 > + > VfrParser.parser()->SetIsCatchDefaultEnable(InputInfo->IsCatchDefaultEnable > ); >=20 > return VfrParser.parser()->vfrProgram(); >=20 > } >=20 > >> >=20 > @@ -386,8 +387,8 @@ dataStructField32 [BOOLEAN FieldInUnion]: > ; >=20 >=20 >=20 > dataStructField16 [BOOLEAN FieldInUnion]: >=20 > - << >=20 > - UINT32 ArrayNum =3D 0; >=20 > + << >=20 > + UINT32 ArrayNum =3D 0; >=20 > >> >=20 > ("UINT16" | "CHAR16") >=20 > N:StringIdentifier >=20 > @@ -737,7 +738,7 @@ vfrFormSetList : > ; >=20 >=20 >=20 > vfrStatementExtension: >=20 > - << >=20 > + << >=20 > EFI_GUID Guid; >=20 > CIfrGuid *GuidObj =3D NULL; >=20 > CHAR8 *TypeName =3D NULL; >=20 > @@ -751,7 +752,7 @@ vfrStatementExtension: > >> >=20 > L:GuidOp >=20 > Uuid "=3D" guidDefinition[Guid] >=20 > - {"," DataType "=3D" >=20 > + {"," DataType "=3D" >=20 > ( >=20 > U64:"UINT64" {OpenBracket AN1:Number CloseBracket > <getText(), AN1->getLine());>>} >=20 > << > TypeName =3D U64->getText(); LineNum =3D U64->getLine(); >> >=20 > @@ -770,7 +771,7 @@ vfrStatementExtension: > | T:"EFI_HII_TIME" {OpenBracket AN8:Number CloseBracket > <getText(), AN8->getLine());>>} >=20 > << > TypeName =3D T->getText(); LineNum =3D T->getLine(); IsStruct =3D TRUE;>> >=20 > | R:"EFI_HII_REF" {OpenBracket AN9:Number CloseBracket > <getText(), AN9->getLine());>>} >=20 > - << > TypeName =3D R->getText(); LineNum =3D R->getLine(); IsStruct =3D TRUE;>> >=20 > + << > TypeName =3D R->getText(); LineNum =3D R->getLine(); IsStruct =3D TRUE;>> >=20 > | TN:StringIdentifier {OpenBracket AN10:Number CloseBracket > <getText(), AN10->getLine());>>} >=20 > << > TypeName =3D TN->getText(); LineNum =3D TN->getLine(); IsStruct =3D TRUE;= >> >=20 > ) >=20 > @@ -875,19 +876,19 @@ vfrExtensionData[UINT8 *DataBuff, UINT32 Size, > CHAR8 *TypeName, UINT32 TypeSize, > memcpy (ByteOffset, &Data_U64, TypeSize); >=20 > }else if (strcmp ("UINT32", TypeName) =3D=3D 0) { >=20 > Data_U32 =3D _STOU32(RD->getText(), RD->getLine()); >=20 > - memcpy (ByteOffset, &Data_U32, TypeSize); >=20 > + memcpy (ByteOffset, &Data_U32, TypeSize); >=20 > }else if (strcmp ("UINT16", TypeName) =3D=3D 0) { >=20 > Data_U16 =3D _STOU16(RD->getText(), RD->getLine()); >=20 > - memcpy (ByteOffset, &Data_U16, TypeSize); >=20 > + memcpy (ByteOffset, &Data_U16, TypeSize); >=20 > }else if (strcmp ("UINT8", TypeName) =3D=3D 0) { >=20 > Data_U8 =3D _STOU8(RD->getText(), RD->getLine()); >=20 > - memcpy (ByteOffset, &Data_U8, TypeSize); >=20 > + memcpy (ByteOffset, &Data_U8, TypeSize); >=20 > }else if (strcmp ("BOOLEAN", TypeName)=3D=3D 0) { >=20 > Data_BL =3D _STOU8(RD->getText(), RD->getLine()); >=20 > - memcpy (ByteOffset, &Data_BL, TypeSize); >=20 > + memcpy (ByteOffset, &Data_BL, TypeSize); >=20 > }else if (strcmp ("EFI_STRING_ID", TypeName) =3D=3D 0) { >=20 > Data_SID =3D _STOSID(RD->getText(), RD->getLine()); >=20 > - memcpy (ByteOffset, &Data_SID, TypeSize); >=20 > + memcpy (ByteOffset, &Data_SID, TypeSize); >=20 > } >=20 > } else { >=20 > gCVfrVarDataTypeDB.GetDataFieldInfo(TFName, > FieldOffset, FieldType, FieldSize, BitField); >=20 > @@ -975,7 +976,15 @@ vfrExtensionData[UINT8 *DataBuff, UINT32 Size, > CHAR8 *TypeName, UINT32 TypeSize, >=20 >=20 > vfrStatementDefaultStore : >=20 > << UINT16 DefaultId =3D EFI_HII_DEFAULT_CLASS_STANDARD; >> >=20 > - D:DefaultStore N:StringIdentifier "," >=20 > + D:DefaultStore N:StringIdentifier "," << >=20 > + if > (mIsCatchDefaultEnable) { >=20 > + > gCVfrErrorHandle.HandleWarning ( >=20 > + > VFR_WARNING_UNSUPPORTED, >=20 > + > D->getLine(), >=20 > + > D->getText() >=20 > + ); >=20 > + } >=20 > + >> >=20 > Prompt "=3D" "STRING_TOKEN" "\(" S:Number "\)" >=20 > { >=20 > "," Attribute "=3D" A:Number << DefaultId =3D > _STOU16(A->getText(), A->getLine()); >> >=20 > @@ -1074,7 +1083,7 @@ vfrStatementVarStoreEfi : > | U64:"UINT64" "," << TypeName > =3D U64->getText(); LineNum =3D U64->getLine(); >> >=20 > | D:"EFI_HII_DATE" "," << TypeName =3D > D->getText(); LineNum =3D D->getLine(); >> >=20 > | T:"EFI_HII_TIME" "," << TypeName =3D > T->getText(); LineNum =3D T->getLine(); >> >=20 > - | R:"EFI_HII_REF" "," << TypeName =3D > R->getText(); LineNum =3D R->getLine(); >> >=20 > + | R:"EFI_HII_REF" "," << TypeName =3D > R->getText(); LineNum =3D R->getLine(); >> >=20 > ) >=20 > { >=20 > VarId "=3D" ID:Number "," << >=20 > @@ -1092,8 +1101,8 @@ vfrStatementVarStoreEfi : > ( >=20 > Name "=3D" SN:StringIdentifier "," << StoreName =3D > SN->getText(); >> >=20 > | >=20 > - Name "=3D" "STRING_TOKEN" "\(" VN:Number "\)" "," >=20 > - VarSize "=3D" N:Number "," << >=20 > + Name "=3D" "STRING_TOKEN" "\(" VN:Number "\)" "," >=20 > + VarSize "=3D" N:Number "," << >=20 >=20 > IsUEFI23EfiVarstore =3D FALSE; >=20 >=20 > StoreName =3D > gCVfrStringDB.GetVarStoreNameFormStringId(_STOSID(VN->getText(), > VN->getLine())); >=20 > if > (StoreName =3D=3D NULL) { >=20 > @@ -1116,7 +1125,7 @@ vfrStatementVarStoreEfi : > break; >=20 > case 8: >=20 >=20 > TypeName =3D (CHAR8 *) "UINT64"; >=20 > - break; >=20 > + break; >=20 > default: >=20 >=20 > _PCATCH (VFR_RETURN_UNSUPPORTED, N); >=20 > break; >=20 > @@ -1124,7 +1133,7 @@ vfrStatementVarStoreEfi : > >> >=20 > ) >=20 >=20 >=20 > - Uuid "=3D" guidDefinition[Guid] << >=20 > + Uuid "=3D" guidDefinition[Guid] << >=20 > if > (IsUEFI23EfiVarstore) { >=20 >=20 > _PCATCH(gCVfrDataStorage.DeclareBufferVarStore ( >=20 >=20 > StoreName, >=20 > @@ -1150,7 +1159,7 @@ vfrStatementVarStoreEfi : > } >=20 >=20 > VSEObj.SetGuid (&Guid); >=20 >=20 > VSEObj.SetVarStoreId (VarStoreId); >=20 > - >=20 > + >=20 >=20 > VSEObj.SetSize ((UINT16) Size); >=20 >=20 > VSEObj.SetName (StoreName); >=20 > if > (IsUEFI23EfiVarstore =3D=3D FALSE && StoreName !=3D NULL) { >=20 > @@ -1184,7 +1193,7 @@ vfrStatementVarStoreNameValue : > >> >=20 > } >=20 > ( >=20 > - Name "=3D" "STRING_TOKEN" "\(" N:Number "\)" "," << >=20 > + Name "=3D" "STRING_TOKEN" "\(" N:Number "\)" "," << >=20 > if > (!Created) { >=20 >=20 > _PCATCH(gCVfrDataStorage.DeclareNameVarStoreBegin (SN->getText(), > VarStoreId), SN); >=20 >=20 > Created =3D TRUE; >=20 > @@ -1245,12 +1254,12 @@ vfrStatementDisableIfFormSet : > vfrStatementSuppressIfFormSet : >=20 > << CIfrSuppressIf SIObj;>> >=20 > L:SuppressIf << >=20 > - > SIObj.SetLineNo(L->getLine()); >=20 > + > SIObj.SetLineNo(L->getLine()); >=20 > >> >=20 > { FLAGS "=3D" flagsField ( "\|" flagsField )* "," } >=20 > vfrStatementExpression[0] ";" >=20 > vfrFormSetList >=20 > - E: EndIf >=20 > + E: EndIf >=20 > ";" << > CRT_END_OP (E); >> >=20 > ; >=20 >=20 >=20 > @@ -1491,7 +1500,7 @@ vfrQuestionDataFieldName [EFI_QUESTION_ID > &QId, UINT32 &Mask, CHAR8 *&VarIdStr, > ( >=20 > SN2:StringIdentifier << _STRCAT > (&VarIdStr, SN2->getText()); LineNo =3D SN2->getLine(); >> >=20 > ( >=20 > - "." << >=20 > + "." << >=20 >=20 > _STRCAT (&VarIdStr, "."); >=20 > if > (mConstantOnlyInExpression) { >=20 >=20 > _PCATCH(VFR_RETURN_CONSTANT_ONLY, LineNo); >=20 > @@ -1518,7 +1527,7 @@ vfrQuestionDataFieldName [EFI_QUESTION_ID > &QId, UINT32 &Mask, CHAR8 *&VarIdStr, > ; >=20 >=20 >=20 > vfrConstantValueField[UINT8 Type, EFI_IFR_TYPE_VALUE &Value, BOOLEAN > &ListType] : >=20 > - << >=20 > + << >=20 > EFI_GUID Guid; >=20 > BOOLEAN Negative =3D FALSE; >=20 > BOOLEAN IntDecStyle =3D FALSE; >=20 > @@ -1634,11 +1643,11 @@ vfrConstantValueField[UINT8 Type, > EFI_IFR_TYPE_VALUE &Value, BOOLEAN &ListType] > | Z:Zero << $Value.u8 > =3D _STOU8(Z->getText(), Z->getLine()); >> >=20 > | HOUR:Number ":" MINUTE:Number ":" SECOND:Number << > $Value.time =3D _STOT(HOUR->getText(), > MINUTE->getText(),SECOND->getText(), HOUR->getLine()); >> >=20 > | YEAR:Number "/" MONTH:Number "/" DAY:Number << > $Value.date =3D _STOD(YEAR->getText(), MONTH->getText(), DAY->getText()= , > YEAR->getLine()); >> >=20 > - | QI:Number";" FI:Number";" guidDefinition[Guid] ";" "STRING_TOKEN" > "\(" DP:Number "\)" >=20 > + | QI:Number";" FI:Number";" guidDefinition[Guid] ";" "STRING_TOKEN" > "\(" DP:Number "\)" >=20 > << > $Value.ref =3D _STOR(QI->getText(), FI->getText(), &Guid, DP->getText(= ), > QI->getLine()); >> >=20 > | "STRING_TOKEN" "\(" S1:Number "\)" << $Value.string > =3D _STOSID(S1->getText(), S1->getLine()); >> >=20 > | "\{" << ListType =3D > TRUE; >> >=20 > - L1:Number << >=20 > + L1:Number << >=20 > switch > (Type) { >=20 > case > EFI_IFR_TYPE_NUM_SIZE_8 : >=20 >=20 > Type8[Index] =3D _STOU8(L1->getText(), L1->getLine()); >=20 > @@ -1658,8 +1667,8 @@ vfrConstantValueField[UINT8 Type, > EFI_IFR_TYPE_VALUE &Value, BOOLEAN &ListType] >=20 > Index++; >=20 > >> >=20 > ( >=20 > - "," >=20 > - L2:Number << >=20 > + "," >=20 > + L2:Number << >=20 > switch > (Type) { >=20 > case > EFI_IFR_TYPE_NUM_SIZE_8 : >=20 >=20 > Type8[Index] =3D _STOU8(L2->getText(), L2->getLine()); >=20 > @@ -1679,7 +1688,7 @@ vfrConstantValueField[UINT8 Type, > EFI_IFR_TYPE_VALUE &Value, BOOLEAN &ListType] >=20 > Index++; >=20 > >> >=20 > )* >=20 > - "\}" >=20 > + "\}" >=20 > ; >=20 >=20 >=20 >=20 > //************************************************************ > ***************** >=20 > @@ -1714,7 +1723,7 @@ vfrFormDefinition : > ; >=20 >=20 >=20 > vfrFormMapDefinition : >=20 > - << >=20 > + << >=20 > CIfrFormMap *FMapObj =3D NULL; >=20 > UINT32 FormMapMethodNumber =3D 0; >=20 > EFI_GUID Guid; >=20 > @@ -1775,11 +1784,15 @@ vfrStatementDefault : > CIfrNumeric *NumericQst =3D NULL; >=20 >=20 >=20 > >> >=20 > - D:Default >=20 > + D:Default << >=20 > + if > (mIsCatchDefaultEnable) { >=20 > + > DefaultValueError(VFR_RETURN_UNSUPPORTED, D->getLine()); >=20 > + } >=20 > + >> >=20 > ( >=20 > ( >=20 > - "=3D" vfrConstantValueField[_GET_CURRQEST_DATATYPE(), *Val, > ArrayType] "," >=20 > - << >=20 > + "=3D" vfrConstantValueField[_GET_CURRQEST_DATATYPE(), *Val, > ArrayType] "," >=20 > + << >=20 > if > (gCurrentMinMaxData !=3D NULL && > gCurrentMinMaxData->IsNumericOpcode()) { >=20 >=20 > //check default value is valid for Numeric Opcode >=20 >=20 > NumericQst =3D (CIfrNumeric *) gCurrentQuestion; >=20 > @@ -1888,14 +1901,14 @@ vfrStatementDefault : > vfrStatementValue "," << CIfrEnd > EndObj1; EndObj1.SetLineNo(D->getLine()); >> >=20 > ) >=20 > { >=20 > - DefaultStore "=3D" SN:StringIdentifier "," << >=20 > + DefaultStore "=3D" SN:StringIdentifier "," << >=20 >=20 > _PCATCH(gCVfrDefaultStore.GetDefaultId (SN->getText(), &DefaultId), SN); >=20 > if > (DObj !=3D NULL) { >=20 > - > DObj->SetDefaultId (DefaultId); >=20 > - } >=20 > + > DObj->SetDefaultId (DefaultId); >=20 > + } >=20 >=20 >=20 > if > (DObj2 !=3D NULL) { >=20 > - > DObj2->SetDefaultId (DefaultId); >=20 > + > DObj2->SetDefaultId (DefaultId); >=20 > } >=20 > >> >=20 > } >=20 > @@ -1917,8 +1930,8 @@ vfrStatementDefault : >=20 > ); >=20 > } >=20 > } >=20 > - if > (DObj !=3D NULL) {delete DObj;} >=20 > - if > (DObj2 !=3D NULL) {delete DObj2;} >=20 > + if > (DObj !=3D NULL) {delete DObj;} >=20 > + if > (DObj2 !=3D NULL) {delete DObj2;} >=20 > >> >=20 > ) >=20 > ; >=20 > @@ -1970,11 +1983,15 @@ vfrStatementInvalid : > ; >=20 >=20 >=20 > flagsField : >=20 > - Number >=20 > - | InteractiveFlag >=20 > - | ManufacturingFlag >=20 > - | DefaultFlag >=20 > - | ResetRequiredFlag >=20 > + Number >=20 > + | InteractiveFlag >=20 > + | ManufacturingFlag >=20 > + | D:DefaultFlag << >=20 > + if > (mIsCatchDefaultEnable) { >=20 > + > DefaultValueError(VFR_RETURN_UNSUPPORTED, D->getLine()); >=20 > + } >=20 > + >> >=20 > + | ResetRequiredFlag >=20 > | ReconnectRequiredFlag >=20 > | N:NVAccessFlag << >=20 >=20 > gCVfrErrorHandle.HandleWarning ( >=20 > @@ -1989,7 +2006,7 @@ flagsField : >=20 > L->getLine(), >=20 >=20 > L->getText() >=20 > ); >=20 > - >> >=20 > + >> >=20 > ; >=20 >=20 >=20 > vfrStatementValue : >=20 > @@ -2001,13 +2018,13 @@ vfrStatementValue : > vfrStatementRead : >=20 > << CIfrRead RObj; >> >=20 > R:Read << > RObj.SetLineNo(R->getLine()); >> >=20 > - vfrStatementExpression[0] ";" >=20 > + vfrStatementExpression[0] ";" >=20 > ; >=20 >=20 >=20 > vfrStatementWrite : >=20 > << CIfrWrite WObj; >> >=20 > W:Write << > WObj.SetLineNo(W->getLine()); >> >=20 > - vfrStatementExpression[0] ";" >=20 > + vfrStatementExpression[0] ";" >=20 > ; >=20 >=20 >=20 > vfrStatementSubTitle : >=20 > @@ -2140,7 +2157,7 @@ vfrStatementGoto : > FormId "=3D" F3:Number "," << RefType > =3D 2; FId =3D _STOFID(F3->getText(), F3->getLine()); >> >=20 > Question "=3D" >=20 > ( >=20 > - QN3:StringIdentifier "," << >=20 > + QN3:StringIdentifier "," << >=20 >=20 > mCVfrQuestionDB.GetQuestionId (QN3->getText (), NULL, QId, BitMask); >=20 > if > (QId =3D=3D EFI_QUESTION_ID_INVALID) { >=20 >=20 > _PCATCH(VFR_RETURN_UNDEFINED, QN3); >=20 > @@ -2222,7 +2239,7 @@ vfrStatementGoto : > "," Key "=3D" KN:Number << > AssignQuestionKey (*QHObj, KN); >> >=20 > } >=20 > { >=20 > - E:"," >=20 > + E:"," >=20 > vfrStatementQuestionOptionList << > OHObj->SetScope(1); CRT_END_OP (E);>> >=20 > } >=20 > ";" << if > (R1Obj !=3D NULL) {delete R1Obj;} if (R2Obj !=3D NULL) {delete R2Obj;} if > (R3Obj !=3D NULL) {delete R3Obj;} if (R4Obj !=3D NULL) {delete R4Obj;} if > (R5Obj !=3D NULL) {delete R5Obj;}>> >=20 > @@ -2511,20 +2528,20 @@ minMaxDateStepDefault[EFI_HII_DATE & D, > UINT8 KeyValue] : > { >=20 > "default" "=3D" N:Number "," << >=20 >=20 > switch (KeyValue) { >=20 > - case > 0: >=20 > + > case 0: >=20 >=20 > D.Year =3D _STOU16(N->getText(), N->getLine()); >=20 > if > (D.Year < _STOU16 (MinN->getText(), MinN->getLine()) || D.Year > _STOU16 > (MaxN->getText(), MaxN->getLine())) { >=20 >=20 > _PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Year default > value must be between Min year and Max year."); >=20 > } >=20 >=20 > break; >=20 > - case > 1: >=20 > - > D.Month =3D _STOU8(N->getText(), N->getLine()); >=20 > + > case 1: >=20 > + > D.Month =3D _STOU8(N->getText(), N->getLine()); >=20 > if > (D.Month < 1 || D.Month > 12) { >=20 >=20 > _PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Month default > value must be between 1 and 12."); >=20 > } >=20 >=20 > break; >=20 > - case > 2: >=20 > - > D.Day =3D _STOU8(N->getText(), N->getLine()); >=20 > + > case 2: >=20 > + > D.Day =3D _STOU8(N->getText(), N->getLine()); >=20 > if > (D.Day < 1 || D.Day > 31) { >=20 >=20 > _PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Day default > value must be between 1 and 31."); >=20 > } >=20 > @@ -2570,7 +2587,7 @@ vfrSetMinMaxStep[CIfrMinMaxStepData & > MMSDObj] : > BOOLEAN MinNegative =3D FALSE; >=20 > BOOLEAN MaxNegative =3D FALSE; >=20 > >> >=20 > - Minimum "=3D" >=20 > + Minimum "=3D" >=20 > { >=20 > "\-" << > MinNegative =3D TRUE; >> >=20 > } >=20 > @@ -2659,8 +2676,8 @@ vfrSetMinMaxStep[CIfrMinMaxStepData & > MMSDObj] : > } >=20 > } >=20 > >> >=20 > - Maximum "=3D" >=20 > - { >=20 > + Maximum "=3D" >=20 > + { >=20 > "\-" << > MaxNegative =3D TRUE; >> >=20 > } >=20 > A:Number "," << >=20 > @@ -2889,7 +2906,7 @@ vfrStatementNumeric : > } >=20 > >> >=20 > vfrStatementQuestionOptionList >=20 > - E:EndNumeric << >=20 > + E:EndNumeric << >=20 >=20 > CRT_END_OP (E); >=20 > if > (GuidObj !=3D NULL) { >=20 >=20 > GuidObj->SetScope(1); >=20 > @@ -3131,7 +3148,7 @@ vfrStatementString : > { >=20 > Key "=3D" KN:Number "," << > AssignQuestionKey (SObj, KN); >> >=20 > } >=20 > - MinSize "=3D" MIN:Number "," << >=20 > + MinSize "=3D" MIN:Number "," << >=20 >=20 > VarArraySize =3D _GET_CURRQEST_ARRAY_SIZE(); >=20 >=20 > StringMinSize =3D _STOU8(MIN->getText(), MIN->getLine()); >=20 > if > (_STOU64(MIN->getText(), MIN->getLine()) > StringMinSize) { >=20 > @@ -3141,7 +3158,7 @@ vfrStatementString : > } >=20 >=20 > SObj.SetMinSize (StringMinSize); >=20 > >> >=20 > - MaxSize "=3D" MAX:Number "," << >=20 > + MaxSize "=3D" MAX:Number "," << >=20 >=20 > StringMaxSize =3D _STOU8(MAX->getText(), MAX->getLine()); >=20 > if > (_STOU64(MAX->getText(), MAX->getLine()) > StringMaxSize) { >=20 >=20 > _PCATCH (VFR_RETURN_INVALID_PARAMETER, MAX->getLine(), "String > MaxSize takes only one byte, which can't be larger than 0xFF."); >=20 > @@ -3185,7 +3202,7 @@ vfrStatementPassword : > { >=20 > Key "=3D" KN:Number "," << > AssignQuestionKey (PObj, KN); >> >=20 > } >=20 > - MinSize "=3D" MIN:Number "," << >=20 > + MinSize "=3D" MIN:Number "," << >=20 >=20 > VarArraySize =3D _GET_CURRQEST_ARRAY_SIZE(); >=20 >=20 > PasswordMinSize =3D _STOU16(MIN->getText(), MIN->getLine()); >=20 > if > (_STOU64(MIN->getText(), MIN->getLine()) > PasswordMinSize) { >=20 > @@ -3195,7 +3212,7 @@ vfrStatementPassword : > } >=20 >=20 > PObj.SetMinSize (PasswordMinSize); >=20 > >> >=20 > - MaxSize "=3D" MAX:Number "," << >=20 > + MaxSize "=3D" MAX:Number "," << >=20 >=20 > PasswordMaxSize =3D _STOU16(MAX->getText(), MAX->getLine()); >=20 > if > (_STOU64(MAX->getText(), MAX->getLine()) > PasswordMaxSize) { >=20 >=20 > _PCATCH (VFR_RETURN_INVALID_PARAMETER, MAX->getLine(), "Password > MaxSize takes only two byte, which can't be larger than 0xFFFF."); >=20 > @@ -3230,12 +3247,12 @@ vfrStatementOrderedList : > >> >=20 > L:OrderedList << > OLObj.SetLineNo(L->getLine()); gIsOrderedList =3D TRUE;>> >=20 > vfrQuestionHeader[OLObj] "," >=20 > - << >=20 > + << >=20 >=20 > VarArraySize =3D _GET_CURRQEST_ARRAY_SIZE(); >=20 >=20 > OLObj.SetMaxContainers ((UINT8) (VarArraySize > 0xFF ? 0xFF : > VarArraySize)); >=20 > >> >=20 > { >=20 > - MaxContainers "=3D" M:Number "," << >=20 > + MaxContainers "=3D" M:Number "," << >=20 > if > (_STOU64(M->getText(), M->getLine()) > _STOU8(M->getText(), M->getLine())= ) > { >=20 >=20 > _PCATCH (VFR_RETURN_INVALID_PARAMETER, M->getLine(), "OrderedList > MaxContainers takes only one byte, which can't be larger than 0xFF."); >=20 > } > else if (VarArraySize !=3D 0 && _STOU8(M->getText(), M->getLine()) > > VarArraySize) { >=20 > @@ -3328,19 +3345,19 @@ minMaxTimeStepDefault[EFI_HII_TIME & T, > UINT8 KeyValue] : > { >=20 > "default" "=3D" N:Number "," << >=20 >=20 > switch (KeyValue) { >=20 > - case > 0: >=20 > - > T.Hour =3D _STOU8(N->getText(), N->getLine()); >=20 > + > case 0: >=20 > + > T.Hour =3D _STOU8(N->getText(), N->getLine()); >=20 > if > (T.Hour > 23) { >=20 >=20 > _PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Hour default > value must be between 0 and 23."); >=20 > } >=20 >=20 > break; >=20 > - case > 1: >=20 > - > T.Minute =3D _STOU8(N->getText(), N->getLine()); >=20 > + > case 1: >=20 > + > T.Minute =3D _STOU8(N->getText(), N->getLine()); >=20 > if > (T.Minute > 59) { >=20 >=20 > _PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Minute > default value must be between 0 and 59."); >=20 > } >=20 >=20 > break; >=20 > - case > 2: >=20 > + > case 2: >=20 >=20 > T.Second =3D _STOU8(N->getText(), N->getLine()); >=20 > if > (T.Second > 59) { >=20 >=20 > _PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Second default > value must be between 0 and 59."); >=20 > @@ -3419,11 +3436,11 @@ vfrStatementStatListOld : > ; >=20 >=20 >=20 > vfrStatementDisableIfStat : >=20 > - << >=20 > - CIfrDisableIf DIObj; >=20 > + << >=20 > + CIfrDisableIf DIObj; >=20 > >> >=20 > L:DisableIf << > DIObj.SetLineNo(L->getLine()); >> >=20 > - vfrStatementExpression[0] ";" >=20 > + vfrStatementExpression[0] ";" >=20 > ( vfrStatementStatList )* >=20 > E:EndIf << > CRT_END_OP (E); >> >=20 > ";" >=20 > @@ -3548,8 +3565,8 @@ vfrStatementWarningIf : > ; >=20 >=20 >=20 > vfrStatementDisableIfQuest : >=20 > - << >=20 > - CIfrDisableIf DIObj; >=20 > + << >=20 > + CIfrDisableIf DIObj; >=20 > >> >=20 > L:DisableIf << > DIObj.SetLineNo(L->getLine()); >> >=20 > vfrStatementExpression[0] ";" >=20 > @@ -3616,15 +3633,15 @@ vfrStatementOneOfOption : > UINT32 *Type32 =3D (UINT32 *) ValueList; >=20 > UINT64 *Type64 =3D (UINT64 *) ValueList; >=20 > >> >=20 > - L:Option << >=20 > + L:Option << >=20 > if > (_GET_CURRQEST_DATATYPE() =3D=3D EFI_IFR_TYPE_OTHER) { >=20 >=20 > _PCATCH (VFR_RETURN_FATAL_ERROR, L->getLine(), "Get data type error."); >=20 > } >=20 >=20 >=20 > >> >=20 > - Text "=3D" "STRING_TOKEN" "\(" S:Number "\)" "," >=20 > + Text "=3D" "STRING_TOKEN" "\(" S:Number "\)" "," >=20 > Value "=3D" vfrConstantValueField[_GET_CURRQEST_DATATYPE(), *Val, > ArrayType] "," >=20 > - << >=20 > + << >=20 > if > (gCurrentMinMaxData !=3D NULL) { >=20 >=20 > //set min/max value for oneof opcode >=20 >=20 > UINT64 Step =3D > gCurrentMinMaxData->GetStepData(_GET_CURRQEST_DATATYPE(), > _GET_CURRQEST_VARTINFO().mIsBitVar); >=20 > @@ -3696,7 +3713,7 @@ vfrStatementOneOfOption : > Size > +=3D OFFSET_OF (EFI_IFR_ONE_OF_OPTION, Value); >=20 >=20 > OOOObj =3D new CIfrOneOfOption((UINT8)Size); >=20 >=20 > OOOObj->SetLineNo(L->getLine()); >=20 > - > OOOObj->SetOption (_STOSID(S->getText(), S->getLine())); >=20 > + > OOOObj->SetOption (_STOSID(S->getText(), S->getLine())); >=20 > if > (ArrayType) { >=20 >=20 > OOOObj->SetType (EFI_IFR_TYPE_BUFFER); >=20 > } > else { >=20 > @@ -3706,7 +3723,7 @@ vfrStatementOneOfOption : >=20 > OOOObj->SetType (_GET_CURRQEST_DATATYPE()); >=20 > } >=20 > } >=20 > - > OOOObj->SetValue (*Val); >=20 > + > OOOObj->SetValue (*Val); >=20 > >> >=20 > F:FLAGS "=3D" vfrOneOfOptionFlags[*OOOObj, F->getLine()] >=20 > << >=20 > @@ -3790,7 +3807,12 @@ oneofoptionFlagsField [UINT8 & HFlags, UINT8 & > LFlags] : > | RestStyleFlag << $HFlags > |=3D 0x20; >> >=20 > | ReconnectRequiredFlag << $HFlags > |=3D 0x40; >> >=20 > | ManufacturingFlag << $LFlags > |=3D 0x20; >> >=20 > - | DefaultFlag << $LFlags > |=3D 0x10; >> >=20 > + | D:DefaultFlag << >=20 > + > $LFlags |=3D 0x10; >=20 > + if > (mIsCatchDefaultEnable) { >=20 > + > DefaultValueError(VFR_RETURN_UNSUPPORTED, D->getLine()); >=20 > + } >=20 > + >> >=20 > | A:NVAccessFlag << >=20 >=20 > gCVfrErrorHandle.HandleWarning ( >=20 >=20 > VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE, >=20 > @@ -3963,7 +3985,7 @@ vfrStatementExpression [UINT32 RootLevel, > UINT32 ExpOpCount =3D 0] : >=20 > } >=20 > } >=20 > } >=20 > - >=20 > + >=20 > if > ($RootLevel =3D=3D 0) { >=20 >=20 > _CLEAR_SAVED_OPHDR (); >=20 >=20 > mCIfrOpHdrIndex --; >=20 > @@ -4405,10 +4427,10 @@ ideqvallistExp[UINT32 & RootLevel, UINT32 & > ExpOpCount] : >=20 > for (Index =3D 0; Index < ListLen; Index++) { >=20 >=20 > EILObj.SetValueList (Index, ValueList[Index]); >=20 > } >=20 > - >=20 > + >=20 >=20 > EILObj.UpdateIfrBuffer(); >=20 > - > _SAVE_OPHDR_COND (EILObj, ($ExpOpCount =3D=3D 0), L->getLine()); >=20 > - >=20 > + > _SAVE_OPHDR_COND (EILObj, ($ExpOpCount =3D=3D 0), L->getLine()); >=20 > + >=20 > if > (QId =3D=3D EFI_QUESTION_ID_INVALID) { >=20 >=20 > EILObj.SetQuestionId (QId, VarIdStr, LineNo); >=20 > } >=20 > @@ -4458,9 +4480,9 @@ stringref1Exp[UINT32 & RootLevel, UINT32 & > ExpOpCount] : > >> >=20 > L:StringRef >=20 > "\(" >=20 > - ( >=20 > + ( >=20 > "STRING_TOKEN" >=20 > - "\(" >=20 > + "\(" >=20 > S:Number << RefStringId =3D _STOSID(S->getText(), > S->getLine()); >> >=20 > "\)" >=20 > | I:Number << RefStringId =3D _STOSID(I->getText(), I->getLine()= ); >> >=20 > @@ -4499,10 +4521,10 @@ getExp[UINT32 & RootLevel, UINT32 & > ExpOpCount] : > Info.mVarStoreId =3D 0; >=20 > >> >=20 > L:Get >=20 > - "\(" >=20 > + "\(" >=20 > vfrStorageVarId[Info, VarIdStr, FALSE] >=20 > {"\|" FLAGS "=3D" numericVarStoreType [VarType] } >=20 > - "\)" << >=20 > + "\)" << >=20 > { >=20 > if > (Info.mVarStoreId =3D=3D 0) { >=20 >=20 > // support Date/Time question >=20 > @@ -4549,9 +4571,9 @@ getExp[UINT32 & RootLevel, UINT32 & > ExpOpCount] : >=20 > _PCATCH(VFR_RETURN_UNSUPPORTED, L->getLine(), "Get/Set opcode don't > support data array"); >=20 >=20 > } >=20 > } >=20 > - > CIfrGet GObj(L->getLine()); >=20 > - > _SAVE_OPHDR_COND (GObj, ($ExpOpCount =3D=3D 0), L->getLine()); >=20 > - > GObj.SetVarInfo (&Info); >=20 > + > CIfrGet GObj(L->getLine()); >=20 > + > _SAVE_OPHDR_COND (GObj, ($ExpOpCount =3D=3D 0), L->getLine()); >=20 > + > GObj.SetVarInfo (&Info); >=20 >=20 > delete[] VarIdStr; >=20 >=20 > $ExpOpCount++; >=20 > } >=20 > @@ -4608,7 +4630,7 @@ question23refExp[UINT32 & RootLevel, UINT32 & > ExpOpCount] : > { >=20 > Uuid "=3D" guidDefinition[Guid] "," << > Type =3D 0x3; >> >=20 > } >=20 > - vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] >=20 > + vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] >=20 > "\)" >=20 > << >=20 >=20 > switch (Type) { >=20 > @@ -4675,9 +4697,9 @@ setExp[UINT32 & RootLevel, UINT32 & > ExpOpCount] : > "\(" >=20 > vfrStorageVarId[Info, VarIdStr, FALSE] >=20 > {"\|" FLAG "=3D" numericVarStoreType [VarType] } >=20 > - "," vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] >=20 > + "," vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] >=20 > "\)" >=20 > - << >=20 > + << >=20 > { >=20 > if > (Info.mVarStoreId =3D=3D 0) { >=20 >=20 > // support Date/Time question >=20 > @@ -4724,8 +4746,8 @@ setExp[UINT32 & RootLevel, UINT32 & > ExpOpCount] : >=20 > _PCATCH(VFR_RETURN_UNSUPPORTED, L->getLine(), "Get/Set opcode don't > support data array"); >=20 >=20 > } >=20 > } >=20 > - > CIfrSet TSObj(L->getLine()); >=20 > - > TSObj.SetVarInfo (&Info); >=20 > + > CIfrSet TSObj(L->getLine()); >=20 > + > TSObj.SetVarInfo (&Info); >=20 >=20 > delete[] VarIdStr; >=20 >=20 > $ExpOpCount++; >=20 > } >=20 > @@ -4808,9 +4830,9 @@ spanExp[UINT32 & RootLevel, UINT32 & > ExpOpCount] : > ; >=20 >=20 >=20 > vfrExpressionMap [UINT32 & RootLevel, UINT32 & ExpOpCount]: >=20 > - L:Map >=20 > - "\(" >=20 > - vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] >=20 > + L:Map >=20 > + "\(" >=20 > + vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] >=20 > ":" << > { CIfrMap MObj(L->getLine()); } >> >=20 > ( >=20 > vfrStatementExpression[0] >=20 > @@ -4837,6 +4859,7 @@ spanFlags [UINT8 & Flags] : > class EfiVfrParser { >=20 > << >=20 > private: >=20 > + BOOLEAN mIsCatchDefaultEnable; >=20 > UINT8 mParserStatus; >=20 > BOOLEAN mConstantOnlyInExpression; >=20 >=20 >=20 > @@ -4880,6 +4903,7 @@ public: > VOID _PCATCH (IN EFI_VFR_RETURN_CODE, IN > ANTLRTokenPtr); >=20 > VOID _PCATCH (IN EFI_VFR_RETURN_CODE, IN > UINT32); >=20 > VOID _PCATCH (IN EFI_VFR_RETURN_CODE, IN > UINT32, IN CONST CHAR8 *); >=20 > + VOID DefaultValueError (IN EFI_VFR_RETURN_CODE, > IN UINT32); >=20 >=20 >=20 > VOID syn (ANTLRAbstractToken *, ANTLRChar > *, SetWordType *, ANTLRTokenType, INT32); >=20 >=20 >=20 > @@ -4909,6 +4933,7 @@ public: > VOID IdEqIdDoSpecial (IN UINT32 &, IN > UINT32, IN EFI_QUESTION_ID, IN CHAR8 *, IN UINT32, IN EFI_QUESTION_ID, > IN CHAR8 *, IN UINT32, IN EFI_COMPARE_TYPE); >=20 > VOID IdEqListDoSpecial (IN UINT32 &, IN > UINT32, IN EFI_QUESTION_ID, IN CHAR8 *, IN UINT32, IN UINT16, IN > UINT16 *); >=20 > VOID SetOverrideClassGuid (IN EFI_GUID *); >=20 > + VOID SetIsCatchDefaultEnable (BOOLEAN > IsCatchDefaultEnable); >=20 > >> >=20 > } >=20 >=20 >=20 > @@ -5086,6 +5111,17 @@ EfiVfrParser::_PCATCH ( > mParserStatus =3D mParserStatus + gCVfrErrorHandle.HandleError > (ReturnCode, LineNum, (CHAR8 *) ErrorMsg); >=20 > } >=20 >=20 >=20 > +VOID >=20 > +EfiVfrParser::DefaultValueError ( >=20 > + IN EFI_VFR_RETURN_CODE ReturnCode, >=20 > + IN UINT32 LineNum >=20 > + ) >=20 > +{ >=20 > + CHAR8 ErrorMsg[100]; >=20 > + sprintf(ErrorMsg, "please remove the default value / defaultstore in > line %d", LineNum); >=20 > + mParserStatus =3D mParserStatus + gCVfrErrorHandle.HandleError > (ReturnCode, LineNum, ErrorMsg); >=20 > +} >=20 > + >=20 > VOID >=20 > EfiVfrParser::syn ( >=20 > ANTLRAbstractToken *Tok, >=20 > @@ -5682,12 +5718,18 @@ EfiVfrParser::IdEqListDoSpecial ( > } >=20 > } >=20 >=20 >=20 > -VOID >=20 > +VOID >=20 > EfiVfrParser::SetOverrideClassGuid (IN EFI_GUID *OverrideClassGuid) >=20 > { >=20 > mOverrideClassGuid =3D OverrideClassGuid; >=20 > } >=20 >=20 >=20 > +VOID >=20 > +EfiVfrParser::SetIsCatchDefaultEnable (BOOLEAN IsCatchDefaultEnable) >=20 > +{ >=20 > + mIsCatchDefaultEnable =3D IsCatchDefaultEnable; >=20 > +} >=20 > + >=20 > VOID >=20 > EfiVfrParser::CheckDuplicateDefaultValue ( >=20 > IN EFI_DEFAULT_ID DefaultId, >=20 > -- > 2.39.1.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#116521): https://edk2.groups.io/g/devel/message/116521 Mute This Topic: https://groups.io/mt/104809230/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-