Reviewed-by: Liming Gao <[email protected]> -----Original Message----- From: edk2-devel [mailto:[email protected]] On Behalf Of Dandan Bi Sent: Wednesday, August 26, 2015 4:46 PM To: Dong, Eric; Gao, Liming; [email protected] Subject: [edk2] [patch 1/2] BaseTools:To generate string default type correctly in VfrCompiler
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dandan Bi <[email protected]> --- BaseTools/Source/C/VfrCompile/VfrFormPkg.h | 1 + BaseTools/Source/C/VfrCompile/VfrSyntax.g | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/BaseTools/Source/C/VfrCompile/VfrFormPkg.h b/BaseTools/Source/C/VfrCompile/VfrFormPkg.h index 84300a7..644dfdd 100644 --- a/BaseTools/Source/C/VfrCompile/VfrFormPkg.h +++ b/BaseTools/Source/C/VfrCompile/VfrFormPkg.h @@ -602,10 +602,11 @@ public: }; static CIfrQuestionHeader *gCurrentQuestion = NULL; static CIfrMinMaxStepData *gCurrentMinMaxData = NULL; static BOOLEAN gIsOrderedList = FALSE; +static BOOLEAN gIsStringOp = FALSE; /* * The definition of all of the UEFI IFR Objects */ class CIfrFormSet : public CIfrObj, public CIfrOpHeader { diff --git a/BaseTools/Source/C/VfrCompile/VfrSyntax.g b/BaseTools/Source/C/VfrCompile/VfrSyntax.g index fba8967..ad839b2 100644 --- a/BaseTools/Source/C/VfrCompile/VfrSyntax.g +++ b/BaseTools/Source/C/VfrCompile/VfrSyntax.g @@ -1744,10 +1744,12 @@ vfrStatementDefault : Size += OFFSET_OF (EFI_IFR_DEFAULT, Value); DObj = new CIfrDefault ((UINT8)Size); DObj->SetLineNo(D->getLine()); if (ArrayType) { DObj->SetType (EFI_IFR_TYPE_BUFFER); + } else if (gIsStringOp) { + DObj->SetType + (EFI_IFR_TYPE_STRING); } else { DObj->SetType (_GET_CURRQEST_DATATYPE()); } DObj->SetValue(*Val); >> @@ -2817,11 +2819,11 @@ vfrStatementString : CIfrString SObj; UINT32 VarArraySize; UINT8 StringMinSize; UINT8 StringMaxSize; >> - L:String << SObj.SetLineNo(L->getLine()); >> + L:String << SObj.SetLineNo(L->getLine()); gIsStringOp = TRUE;>> vfrQuestionHeader[SObj] "," { F:FLAGS "=" vfrStringFlagsField[SObj, F->getLine()] "," } { Key "=" KN:Number "," << AssignQuestionKey (SObj, KN); >> } @@ -2845,11 +2847,11 @@ vfrStatementString : _PCATCH (VFR_RETURN_INVALID_PARAMETER, MAX->getLine(), "String MaxSize can't be less than String MinSize."); } SObj.SetMaxSize (StringMaxSize); >> vfrStatementQuestionOptionList - E:EndString << CRT_END_OP (E); >> + E:EndString << CRT_END_OP (E); gIsStringOp = FALSE;>> ";" ; vfrStringFlagsField [CIfrString & SObj, UINT32 LineNum] : << -- 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

