From b303ea726e1c8ed240dad2bce54821318567eab3 Mon Sep 17 00:00:00 2001 From: lgao4 Date: Mon, 9 Nov 2009 11:47:35 +0000 Subject: Sync tool code to BuildTools project r1739. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9397 6f19259b-4bc3-4df7-8a09-765794883524 --- BaseTools/Source/C/VfrCompile/VfrSyntax.g | 34 ++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) (limited to 'BaseTools/Source/C/VfrCompile/VfrSyntax.g') diff --git a/BaseTools/Source/C/VfrCompile/VfrSyntax.g b/BaseTools/Source/C/VfrCompile/VfrSyntax.g index c01f16e5d5..ea529a5e15 100644 --- a/BaseTools/Source/C/VfrCompile/VfrSyntax.g +++ b/BaseTools/Source/C/VfrCompile/VfrSyntax.g @@ -1911,7 +1911,7 @@ vfrStatementOrderedList : >> L:OrderedList << OLObj.SetLineNo(L->getLine()); >> vfrQuestionHeader[OLObj] "," - << OLObj.SetMaxContainers ((UINT8)_GET_CURRQEST_VARSIZE()); >> + << OLObj.SetMaxContainers ((UINT8) _GET_CURRQEST_ARRAY_SIZE()); >> { MaxContainers "=" M:Number "," << OLObj.SetMaxContainers (_STOU8(M->getText())); >> } @@ -3179,6 +3179,7 @@ private: UINT8 _GET_CURRQEST_DATATYPE (); UINT32 _GET_CURRQEST_VARSIZE (); + UINT32 _GET_CURRQEST_ARRAY_SIZE(); public: VOID _PCATCH (IN INTN, IN INTN, IN ANTLRTokenPtr, IN CHAR8 *); @@ -3286,6 +3287,37 @@ EfiVfrParser::_GET_CURRQEST_VARTINFO ( return mCurrQestVarInfo; } +UINT32 +EfiVfrParser::_GET_CURRQEST_ARRAY_SIZE ( + VOID + ) +{ + UINT8 Size = 1; + + switch (mCurrQestVarInfo.mVarType) { + case EFI_IFR_TYPE_NUM_SIZE_8: + Size = 1; + break; + + case EFI_IFR_TYPE_NUM_SIZE_16: + Size = 2; + break; + + case EFI_IFR_TYPE_NUM_SIZE_32: + Size = 4; + break; + + case EFI_IFR_TYPE_NUM_SIZE_64: + Size = 8; + break; + + default: + break; + } + + return (mCurrQestVarInfo.mVarTotalSize / Size); +} + UINT8 EfiVfrParser::_GET_CURRQEST_DATATYPE ( VOID -- cgit v1.2.3