4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCopyright (c) 2004 - 2011, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThis program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncare licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncwhich accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncModule Name:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VfrSyntax.g
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SET_LINE_INFO(Obj, L) {(Obj).SetLineNo((L)->getLine());} while (0)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define CRT_END_OP(Obj) {CIfrEnd EObj; if (Obj != NULL) EObj.SetLineNo ((Obj)->getLine());} while (0)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ParserBlackBox<CVfrDLGLexer, EfiVfrParser, ANTLRToken> VfrParser(File);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VfrParser.parser()->SetCompatibleMode (InputInfo->CompatibleMode);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VfrParser.parser()->SetOverrideClassGuid (InputInfo->OverrideClassGuid);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Define a lexical class for parsing quoted strings. Basically
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// starts with a double quote, and ends with a double quote that
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// is not preceeded with a backslash.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Define a lexclass for skipping over C++ style comments
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#token "\n" << skip (); mode (START); newline (); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Standard lexclass is START
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Find start of C++ style comments
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Skip whitespace
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Skip over newlines, but count them
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Skip over 'extern' in any included .H file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Tokens for the different keywords. Syntax is:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// TokenName("ErrorMessageText") "TokenString"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// TokenName is the token name (must be capitalized) that is used in the rules
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// ErrorMessageText is the string the compiler emits when it detects a syntax error
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// TokenString is the actual matching string used in the user script
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#token LineDefinition "#line\ [0-9]+\ \"~[\"]+\"[\ \t]*\n" << gCVfrErrorHandle.ParseFileScopeRecord (begexpr (), line ()); skip (); newline (); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#token MaxContainers("maxcontainers") "maxcontainers"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#token NonNvDataMap("_NON_NV_DATA_MAP") "_NON_NV_DATA_MAP"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#token InconsistentIf("inconsistentif") "inconsistentif"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#token ManufacturingFlag("MANUFACTURING") "MANUFACTURING"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#token ResetRequiredFlag("RESET_REQUIRED") "RESET_REQUIRED"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#token OptionOnlyFlag("OPTIONS_ONLY") "OPTIONS_ONLY"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#token EndResetButton("endresetbutton") "endresetbutton"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#token NameValueVarStore("namevaluevarstore") "namevaluevarstore"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#token VarstoreDevice("varstoredevice") "varstoredevice"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Define the class and subclass tokens
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#token ClassVideoDevice("VIDEO_DEVICE") "VIDEO_DEVICE"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#token ClassNetworkDevice("NETWORK_DEVICE") "NETWORK_DEVICE"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#token ClassInputDevice("INPUT_DEVICE") "INPUT_DEVICE"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#token ClassOnBoardDevice("ONBOARD_DEVICE") "ONBOARD_DEVICE"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#token ClassOtherDevice("OTHER_DEVICE") "OTHER_DEVICE"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#token SubclassSetupApplication("SETUP_APPLICATION") "SETUP_APPLICATION"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#token SubclassGeneralApplication("GENERAL_APPLICATION") "GENERAL_APPLICATION"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// This is the overall definition of a VFR form definition script.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L:"show" << gCVfrVarDataTypeDB.Pack (L->getLine(), VFR_PACK_SHOW); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L1:"push" << LineNum = L1->getLine(); PackAction = VFR_PACK_PUSH; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | L2:"pop" << LineNum = L2->getLine(); PackAction = VFR_PACK_POP; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "," ID:StringIdentifier << Identifier = ID->getText(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "," N:Number << PackAction |= VFR_PACK_ASSIGN; PackNumber = _STOU32(N->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << gCVfrVarDataTypeDB.Pack (LineNum, PackAction, Identifier, PackNumber); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync N:Number << LineNum = N->getLine(); PackNumber = _STOU32(N->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << gCVfrVarDataTypeDB.Pack (LineNum, VFR_PACK_ASSIGN, NULL, PackNumber); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "\#pragma" "pack" "\("
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { TypeDef } Struct << gCVfrVarDataTypeDB.DeclareDataTypeBegin (); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync N1:StringIdentifier << _PCATCH(gCVfrVarDataTypeDB.SetNewTypeName (N1->getText()), N1); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync N2:StringIdentifier << _PCATCH(gCVfrVarDataTypeDB.SetNewTypeName (N2->getText()), N2); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ";" << gCVfrVarDataTypeDB.DeclareDataTypeEnd (); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ";" << _PCATCH(gCVfrVarDataTypeDB.DataTypeAddField (N->getText(), D->getText(), ArrayNum), N); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ";" << _PCATCH(gCVfrVarDataTypeDB.DataTypeAddField (N->getText(), D->getText(), ArrayNum), N); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ";" << _PCATCH(gCVfrVarDataTypeDB.DataTypeAddField (N->getText(), (CHAR8 *) "UINT16", ArrayNum), N); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ";" << _PCATCH(gCVfrVarDataTypeDB.DataTypeAddField (N->getText(), D->getText(), ArrayNum), N); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync D:"BOOLEAN"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ";" << _PCATCH(gCVfrVarDataTypeDB.DataTypeAddField (N->getText(), D->getText(), ArrayNum), N); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync D:"EFI_STRING_ID"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ";" << _PCATCH(gCVfrVarDataTypeDB.DataTypeAddField (N->getText(), D->getText(), ArrayNum), N); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync D:"EFI_HII_DATE"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ";" << _PCATCH(gCVfrVarDataTypeDB.DataTypeAddField (N->getText(), D->getText(), ArrayNum), N); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync D:"EFI_HII_TIME"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ";" << _PCATCH(gCVfrVarDataTypeDB.DataTypeAddField (N->getText(), D->getText(), ArrayNum), N); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync D:"EFI_HII_REF"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ";" << _PCATCH(gCVfrVarDataTypeDB.DataTypeAddField (N->getText(), D->getText(), ArrayNum), N); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OpenBracket I:Number CloseBracket << ArrayNum = _STOU32(I->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ";" << _PCATCH(gCVfrVarDataTypeDB.DataTypeAddField (N->getText(), T->getText(), ArrayNum), T); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//*****************************************************************************
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// the syntax of GUID definition
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync G4:Number "," G5:Number "," G6:Number "," G7:Number "," G8:Number "," G9:Number "," G10:Number "," G11:Number
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//*****************************************************************************
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// the syntax of form set definition
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_GUID DefaultClassGuid = EFI_HII_PLATFORM_SETUP_FORMSET_GUID;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ClassGuid "=" guidDefinition[ClassGuid1] << ++ClassGuidNum; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "\|" guidDefinition[ClassGuid2] << ++ClassGuidNum; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "\|" guidDefinition[ClassGuid3] << ++ClassGuidNum; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (mOverrideClassGuid != NULL && ClassGuidNum >= 3) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, L->getLine(), "Already has 3 class guids, can't add extra class guid!");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync FSObj = new CIfrFormSet(sizeof(EFI_IFR_FORM_SET) + ClassGuidNum * sizeof(EFI_GUID));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync FSObj = new CIfrFormSet(sizeof(EFI_IFR_FORM_SET) + ClassGuidNum * sizeof(EFI_GUID));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync FSObj = new CIfrFormSet(sizeof(EFI_IFR_FORM_SET) + ClassGuidNum * sizeof(EFI_GUID));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync FSObj = new CIfrFormSet(sizeof(EFI_IFR_FORM_SET) + ClassGuidNum * sizeof(EFI_GUID));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // for framework vfr to store formset guid used by varstore and efivarstore
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync FC:Class "=" classDefinition[C] "," << {CIfrClass CObj;SET_LINE_INFO (CObj, FC); CObj.SetClass(C);} >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync FSC:Subclass "=" subclassDefinition[SC] "," << {CIfrSubClass SCObj; SET_LINE_INFO (SCObj, FSC); SCObj.SetSubClass(SC);} >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // declare all undefined varstore and efivarstore
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync U64:"UINT64" {OpenBracket AN1:Number CloseBracket <<ArrayNum = _STOU32(AN1->getText());>>}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << TypeName = U64->getText(); LineNum = U64->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | U32:"UINT32" {OpenBracket AN2:Number CloseBracket <<ArrayNum = _STOU32(AN2->getText());>>}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << TypeName = U32->getText(); LineNum = U32->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | U16:"UINT16" {OpenBracket AN3:Number CloseBracket <<ArrayNum = _STOU32(AN3->getText());>>}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << TypeName = U16->getText(); LineNum = U16->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | U8:"UINT8" {OpenBracket AN4:Number CloseBracket <<ArrayNum = _STOU32(AN4->getText());>>}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << TypeName = U8->getText(); LineNum = U8->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | BL:"BOOLEAN" {OpenBracket AN5:Number CloseBracket <<ArrayNum = _STOU32(AN5->getText());>>}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << TypeName = BL->getText(); LineNum = BL->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | SI:"EFI_STRING_ID" {OpenBracket AN6:Number CloseBracket <<ArrayNum = _STOU32(AN6->getText());>>}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << TypeName = SI->getText(); LineNum = SI->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | D:"EFI_HII_DATE" {OpenBracket AN7:Number CloseBracket <<ArrayNum = _STOU32(AN7->getText());>>}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << TypeName = D->getText(); LineNum = D->getLine(); IsStruct = TRUE;>>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | T:"EFI_HII_TIME" {OpenBracket AN8:Number CloseBracket <<ArrayNum = _STOU32(AN8->getText());>>}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << TypeName = T->getText(); LineNum = T->getLine(); IsStruct = TRUE;>>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | R:"EFI_HII_REF" {OpenBracket AN9:Number CloseBracket <<ArrayNum = _STOU32(AN9->getText());>>}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << TypeName = R->getText(); LineNum = R->getLine(); IsStruct = TRUE;>>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | TN:StringIdentifier {OpenBracket AN10:Number CloseBracket <<ArrayNum = _STOU32(AN10->getText());>>}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << TypeName = TN->getText(); LineNum = TN->getLine(); IsStruct = TRUE;>>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(gCVfrVarDataTypeDB.GetDataTypeSize(TypeName, &TypeSize), LineNum);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrExtensionData [DataBuff, Size, TypeName, TypeSize, IsStruct, ArrayNum]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync E:EndGuidOp << GuidObj->SetScope(1); CRT_END_OP (E); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvfrExtensionData[UINT8 *DataBuff, UINT32 Size, CHAR8 *TypeName, UINT32 TypeSize, BOOLEAN IsStruct, UINT32 ArrayNum]:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ("," "data" {OpenBracket IDX1:Number CloseBracket <<IsArray = TRUE;>>}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }else if (strcmp ("EFI_STRING_ID", TypeName) == 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync gCVfrVarDataTypeDB.GetDataFieldInfo(TFName, FieldOffset, FieldType, FieldSize);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync memcpy (ByteOffset + FieldOffset, &Data_U8, FieldSize);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync memcpy (ByteOffset + FieldOffset, &Data_U16, FieldSize);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync memcpy (ByteOffset + FieldOffset, &Data_U32, FieldSize);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync memcpy (ByteOffset + FieldOffset, &Data_U64, FieldSize);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync memcpy (ByteOffset + FieldOffset, &Data_BL, FieldSize);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync memcpy (ByteOffset + FieldOffset, &Data_SID, FieldSize);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (TFName != NULL) { delete TFName; TFName = NULL; }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << UINT16 DefaultId = EFI_HII_DEFAULT_CLASS_STANDARD; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "," Attribute "=" A:Number << DefaultId = _STOU16(A->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (mCVfrDefaultStore.DefaultIdRegistered (DefaultId) == FALSE) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(mCVfrDefaultStore.RegisterDefaultStore (DSObj.GetObjBinAddr(), N->getText(), _STOSID(S->getText()), DefaultId)), D->getLine();
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(mCVfrDefaultStore.ReRegisterDefaultStoreById (DefaultId, N->getText(), _STOSID(S->getText()))), D->getLine();
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_VARSTORE_ID VarStoreId = EFI_VARSTORE_ID_INVALID;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync TN:StringIdentifier "," << TypeName = TN->getText(); LineNum = TN->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | U8:"UINT8" "," << TypeName = U8->getText(); LineNum = U8->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | U16:"UINT16" "," << TypeName = U16->getText(); LineNum = U16->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | C16:"CHAR16" "," << TypeName = (CHAR8 *) "UINT16"; LineNum = C16->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | U32:"UINT32" "," << TypeName = U32->getText(); LineNum = U32->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | U64:"UINT64" "," << TypeName = U64->getText(); LineNum = U64->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | D:"EFI_HII_DATE" "," << TypeName = D->getText(); LineNum = D->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | T:"EFI_HII_TIME" "," << TypeName = T->getText(); LineNum = T->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | R:"EFI_HII_REF" "," << TypeName = R->getText(); LineNum = R->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { Key "=" FID:Number "," << // Key is used to assign Varid in Framework VFR but no use in UEFI2.1 VFR
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "varid 0 is not allowed."
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(mCVfrDataStorage.GetVarStoreId(StoreName, &VarStoreId), SN);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(gCVfrVarDataTypeDB.GetDataTypeSize(TypeName, &Size), LineNum);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_VARSTORE_ID VarStoreId = EFI_VARSTORE_ID_INVALID;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync E:Efivarstore << VSEObj.SetLineNo(E->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync TN:StringIdentifier "," << TypeName = TN->getText(); LineNum = TN->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | U8:"UINT8" "," << TypeName = U8->getText(); LineNum = U8->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | U16:"UINT16" "," << TypeName = U16->getText(); LineNum = U16->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | C16:"CHAR16" "," << TypeName = (CHAR8 *) "UINT16"; LineNum = C16->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | U32:"UINT32" "," << TypeName = U32->getText(); LineNum = U32->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | U64:"UINT64" "," << TypeName = U64->getText(); LineNum = U64->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | D:"EFI_HII_DATE" "," << TypeName = D->getText(); LineNum = D->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | T:"EFI_HII_TIME" "," << TypeName = T->getText(); LineNum = T->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | R:"EFI_HII_REF" "," << TypeName = R->getText(); LineNum = R->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "varid 0 is not allowed."
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Attribute "=" vfrVarStoreEfiAttr[Attr] ( "\|" vfrVarStoreEfiAttr[Attr] )* ","
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Name "=" SN:StringIdentifier "," << StoreName = SN->getText(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync StoreName = gCVfrStringDB.GetVarStoreNameFormStringId(_STOSID(VN->getText()));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_UNSUPPORTED, VN->getLine(), "Can't get varstore name for this StringId!");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(mCVfrDataStorage.GetVarStoreId(StoreName, &VarStoreId), SN);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(gCVfrVarDataTypeDB.GetDataTypeSize(TypeName, &Size), LineNum);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(mCVfrDataStorage.GetVarStoreId(TN->getText(), &VarStoreId), VN);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(gCVfrVarDataTypeDB.GetDataTypeSize(TypeName, &Size), N->getLine());
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (IsUEFI23EfiVarstore == FALSE && StoreName != NULL) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L:NameValueVarStore << VSNVObj.SetLineNo(L->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SN:StringIdentifier "," << _PCATCH(mCVfrDataStorage.DeclareNameVarStoreBegin (SN->getText()), SN); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Name "=" "STRING_TOKEN" "\(" N:Number "\)" "," << _PCATCH(mCVfrDataStorage.NameTableAddItem (_STOSID(N->getText())), SN); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Uuid "=" guidDefinition[Guid] << _PCATCH(mCVfrDataStorage.DeclareNameVarStoreEnd (&Guid), SN); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(mCVfrDataStorage.GetVarStoreId(SN->getText(), &VarStoreId), SN);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// keep classDeinition and validClassNames for compatibility but not generate
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// any IFR object
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync validClassNames[$Class] ( "\|" validClassNames[$Class] )*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ClassNonDevice << $Class |= EFI_NON_DEVICE_CLASS; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | ClassDiskDevice << $Class |= EFI_DISK_DEVICE_CLASS; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | ClassVideoDevice << $Class |= EFI_VIDEO_DEVICE_CLASS; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | ClassNetworkDevice << $Class |= EFI_NETWORK_DEVICE_CLASS; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | ClassInputDevice << $Class |= EFI_INPUT_DEVICE_CLASS; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | ClassOnBoardDevice << $Class |= EFI_ON_BOARD_DEVICE_CLASS; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | ClassOtherDevice << $Class |= EFI_OTHER_DEVICE_CLASS; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SubclassSetupApplication << $SubClass |= EFI_SETUP_APPLICATION_SUBCLASS; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | SubclassGeneralApplication << $SubClass |= EFI_GENERAL_APPLICATION_SUBCLASS; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | SubclassFrontPage << $SubClass |= EFI_FRONT_PAGE_SUBCLASS; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | SubclassSingleUse << $SubClass |= EFI_SINGLE_USE_SUBCLASS; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | N:Number << $SubClass |= _STOU16(N->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementExpression[0] ";" << mConstantOnlyInExpression = FALSE; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//*****************************************************************************
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// the syntax of question header and statement header
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Prompt "=" "STRING_TOKEN" "\(" S1:Number "\)" "," << $SHObj->SetPrompt (_STOSID(S1->getText())); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Help "=" "STRING_TOKEN" "\(" S2:Number "\)" << $SHObj->SetHelp (_STOSID(S2->getText())); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvfrQuestionHeader[CIfrQuestionHeader & QHObj, EFI_QUESION_TYPE QType = QUESTION_NORMAL]:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(mCVfrQuestionDB.FindQuestion (QName), VFR_RETURN_UNDEFINED, QN, "has already been used please used anther name");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { V:VarId "=" vfrStorageVarId[Info, VarIdStr] "," }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(mCVfrQuestionDB.FindQuestion (QId), VFR_RETURN_UNDEFINED, ID, "has already been used please assign another number");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mCVfrQuestionDB.RegisterQuestion (QName, VarIdStr, QId);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mCVfrQuestionDB.RegisterNewDateQuestion (QName, VarIdStr, QId);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mCVfrQuestionDB.RegisterNewTimeQuestion (QName, VarIdStr, QId);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // VarIdStr != NULL stand for question with storagae.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mCVfrQuestionDB.RegisterRefQuestion (QName, VarIdStr, QId);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mCVfrQuestionDB.RegisterQuestion (QName, NULL, QId);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvfrStorageVarId[EFI_VARSTORE_INFO & Info, CHAR8 *&QuestVarIdStr, BOOLEAN CheckFlag = TRUE] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_VFR_VARSTORE_TYPE VarStoreType = EFI_VFR_VARSTORE_INVALID;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_VFR_RETURN_CODE VfrReturnCode = VFR_RETURN_SUCCESS;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SN1:StringIdentifier << SName = SN1->getText(); _STRCAT(&VarIdStr, SN1->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VfrReturnCode = mCVfrDataStorage.GetVarStoreType (SName, VarStoreType);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (mCompatibleMode && VfrReturnCode == VFR_RETURN_UNDEFINED) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VfrReturnCode = mCVfrDataStorage.GetVarStoreType (SName, VarStoreType);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (CheckFlag || VfrReturnCode == VFR_RETURN_SUCCESS) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(mCVfrDataStorage.GetVarStoreId (SName, &$Info.mVarStoreId), SN1);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(mCVfrDataStorage.GetNameVarStoreInfo (&$Info, Idx), SN1);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SN2:StringIdentifier << SName = SN2->getText(); _STRCAT(&VarIdStr, SName); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VfrReturnCode = mCVfrDataStorage.GetVarStoreType (SName, VarStoreType);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (mCompatibleMode && VfrReturnCode == VFR_RETURN_UNDEFINED) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VfrReturnCode = mCVfrDataStorage.GetVarStoreType (SName, VarStoreType);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (CheckFlag || VfrReturnCode == VFR_RETURN_SUCCESS) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(mCVfrDataStorage.GetVarStoreId (SName, &$Info.mVarStoreId), SN2);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(mCVfrDataStorage.GetBufferVarStoreDataTypeName(SName, &TName), SN2);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (CheckFlag || VfrReturnCode == VFR_RETURN_SUCCESS) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(((VarStoreType != EFI_VFR_VARSTORE_BUFFER) ? VFR_RETURN_EFIVARSTORE_USE_ERROR : VFR_RETURN_SUCCESS), SN2);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SF:StringIdentifier << _STRCAT(&VarIdStr, SF->getText()); _STRCAT(&VarStr, SF->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Idx == 0, [0] can be ignored.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Array[0] is same to Array for unify the varid name to cover [0]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(mCVfrDataStorage.GetEfiVarStoreInfo (&$Info), SN2);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(gCVfrVarDataTypeDB.GetDataFieldInfo (VarStr, $Info.mInfo.mVarOffset, $Info.mVarType, $Info.mVarTotalSize), SN2->getLine(), VarStr);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH((EFI_VFR_RETURN_CODE)gCVfrBufferConfig.Register (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH((EFI_VFR_RETURN_CODE)gCVfrBufferConfig.Write (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync default: break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvfrQuestionDataFieldName [EFI_QUESTION_ID &QId, UINT32 &Mask, CHAR8 *&VarIdStr, UINT32 &LineNo] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SN1:StringIdentifier << _STRCAT(&VarIdStr, SN1->getText()); LineNo = SN1->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mCVfrQuestionDB.GetQuestionId (NULL, VarIdStr, $QId, $Mask);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SN2:StringIdentifier << _STRCAT (&VarIdStr, SN2->getText()); LineNo = SN2->getLine(); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SF:StringIdentifier << _STRCAT (&VarIdStr, SF->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Idx == 0, [0] can be ignored.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Array[0] is same to Array
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << mCVfrQuestionDB.GetQuestionId (NULL, VarIdStr, $QId, $Mask); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvfrConstantValueField[UINT8 Type] > [EFI_IFR_TYPE_VALUE Value] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync switch ($Type) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | O2:Ones << $Value.u64 = _STOU64(O2->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | HOUR:Number ":" MINUTE:Number ":" SECOND:Number << $Value.time = _STOT(HOUR->getText(), MINUTE->getText(), SECOND->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | YEAR:Number "/" MONTH:Number "/" DAY:Number << $Value.date = _STOD(YEAR->getText(), MONTH->getText(), DAY->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | QI:Number";" FI:Number";" guidDefinition[Guid] ";" "STRING_TOKEN" "\(" DP:Number "\)"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << $Value.ref = _STOR(QI->getText(), FI->getText(), &Guid, DP->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | "STRING_TOKEN" "\(" S1:Number "\)" << $Value.string = _STOSID(S1->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//*****************************************************************************
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// the syntax of form definition
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync FormId "=" S1:Number "," << _PCATCH(FObj.SetFormId (_STOFID(S1->getText())), S1); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Title "=" "STRING_TOKEN" "\(" S2:Number "\)" ";" << FObj.SetFormTitle (_STOSID(S2->getText())); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Just for framework vfr compatibility
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Add Label for Framework Vfr
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LObj1.SetNumber (0xffff); //add end label for UEFI, label number hardcode 0xffff
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LObj2.SetNumber (0x0); //add dummy label for UEFI, label number hardcode 0x0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LObj3.SetNumber (0xffff); //add end label for UEFI, label number hardcode 0xffff
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Declare undefined Question so that they can be used in expression.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // mCVfrQuestionDB.PrintAllQuestion();
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync F:FormMap << FMapObj = new CIfrFormMap(); FMapObj->SetLineNo(F->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync FormId "=" S1:Number "," << _PCATCH(FMapObj->SetFormId (_STOFID(S1->getText())), S1); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync MapTitle "=" "STRING_TOKEN" "\(" S2:Number "\)" ";"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync MapGuid "=" guidDefinition[Guid] ";" << FMapObj->SetFormMapMethod (_STOFID(S2->getText()), &Guid); FormMapMethodNumber ++; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )* << if (FormMapMethodNumber == 0) {_PCATCH (VFR_RETURN_INVALID_PARAMETER, F->getLine(), "No MapMethod is set for FormMap!");} delete FMapObj;>>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync RObj.SetRuleId (mCVfrRulesDB.GetRuleId(S1->getText()));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_DEFAULT_ID DefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_VFR_VARSTORE_TYPE VarStoreType = EFI_VFR_VARSTORE_INVALID;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementValue "," << IsExp = TRUE; DObj.SetScope (1); CIfrEnd EndObj1; EndObj1.SetLineNo(D->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | "=" vfrConstantValueField[_GET_CURRQEST_DATATYPE()] > [Val] "," <<
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (gCurrentMinMaxData != NULL && gCurrentMinMaxData->IsNumericOpcode()) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //check default value is valid for Numeric Opcode
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (Val.u64 < gCurrentMinMaxData->GetMinData(_GET_CURRQEST_DATATYPE()) || Val.u64 > gCurrentMinMaxData->GetMaxData(_GET_CURRQEST_DATATYPE())) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "Numeric default value must be between MinValue and MaxValue.");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DefaultStore "=" SN:StringIdentifier "," << _PCATCH(mCVfrDefaultStore.GetDefaultId (SN->getText(), &DefaultId), SN); DObj.SetDefaultId (DefaultId); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(mCVfrDataStorage.GetVarStoreName (_GET_CURRQEST_VARTINFO().mVarStoreId, &VarStoreName), D->getLine());
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(mCVfrDataStorage.GetVarStoreType (VarStoreName, VarStoreType), D->getLine());
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ((IsExp == FALSE) && (VarStoreType == EFI_VFR_VARSTORE_BUFFER)) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(mCVfrDefaultStore.BufferVarStoreAltConfigAdd (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementSuppressIfStat | //enhance to be compatible for framework endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementInconsistentIfStat //to be compatible for framework
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementInconsistentIfStat //to be compatible for framework
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Number | InteractiveFlag | ManufacturingFlag | DefaultFlag |
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "=" vfrStatementExpression[0] << {CIfrEnd EndObj; EndObj.SetLineNo(V->getLine());} >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Text "=" "STRING_TOKEN" "\(" S:Number "\)" << SObj.SetPrompt (_STOSID(S->getText())); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync subtitleFlagsField[LFlags] ( "\|" subtitleFlagsField[LFlags] )*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "," Text "=" "STRING_TOKEN" "\(" S3:Number "\)" << TxtTwo = _STOSID(S3->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "," F:FLAGS "=" staticTextFlagsField[Flags] ( "\|" staticTextFlagsField[Flags] )*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mCVfrQuestionDB.RegisterQuestion (NULL, NULL, QId);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync N:Number << _PCATCH(_STOU8(N->getText()) == 0 ? VFR_RETURN_SUCCESS : VFR_RETURN_UNSUPPORTED, N->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DevicePath "=" "STRING_TOKEN" "\(" P:Number "\)" ","
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync FormId "=" F3:Number "," << RefType = 2; FId = _STOFID(F3->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mCVfrQuestionDB.GetQuestionId (QN3->getText (), NULL, QId, BitMask);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | QN4:Number "," << QId = _STOQID(QN4->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync default: break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { "," F:FLAGS "=" vfrGotoFlags[QHObj, F->getLine()] }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "," Key "=" KN:Number << AssignQuestionKey (*QHObj, KN); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementQuestionOptionList << OHObj->SetScope(1); CRT_END_OP (E);>>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ";" << if (R1Obj != NULL) {delete R1Obj;} if (R2Obj != NULL) {delete R2Obj;} if (R3Obj != NULL) {delete R3Obj;} if (R4Obj != NULL) {delete R4Obj;} if (R5Obj != NULL) {delete R5Obj;}>>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvfrGotoFlags [CIfrQuestionHeader *QHObj, UINT32 LineNum] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync gotoFlagsField[HFlags] ( "\|" gotoFlagsField[HFlags] )*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync N:Number << _PCATCH(_STOU8(N->getText()) == 0 ? VFR_RETURN_SUCCESS : VFR_RETURN_UNSUPPORTED, N->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "STRING_TOKEN" "\("
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(mCVfrDefaultStore.GetDefaultId (N->getText(), &DefaultId), N->getLine());
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//*****************************************************
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Syntax of checkbox
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// varid = MySTestData.mField1,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// prompt = STRING_TOKEN(STR_CHECK_BOX_PROMPT),
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// help = STRING_TOKEN(STR_CHECK_BOX_HELP),
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// flags = CHECKBOX_DEFAULT | CALLBACK,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// default value = TRUE, defaultstore = MyDefaultStore,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// endcheckbox;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (gCVfrVarDataTypeDB.GetDataTypeSize (_GET_CURRQEST_DATATYPE(), &DataTypeSize), L->getLine(), "CheckBox varid is not the valid data type");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (DataTypeSize != 0 && DataTypeSize != _GET_CURRQEST_VARSIZE()) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, L->getLine(), "CheckBox varid doesn't support array");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else if ((mCVfrDataStorage.GetVarStoreType (_GET_CURRQEST_VARTINFO().mVarStoreId) == EFI_VFR_VARSTORE_BUFFER) &&
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, L->getLine(), "CheckBox varid only support BOOLEAN data type");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync F:FLAGS "=" vfrCheckBoxFlags[CBObj, F->getLine()] ","
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(mCVfrDataStorage.GetVarStoreName (_GET_CURRQEST_VARTINFO().mVarStoreId, &VarStoreName), VFR_RETURN_SUCCESS, L, "Failed to retrieve varstore name");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "No standard default storage found"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "No manufacturing default storage found"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Key "=" KN:Number "," << AssignQuestionKey (CBObj, KN); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvfrCheckBoxFlags [CIfrCheckBox & CBObj, UINT32 LineNum] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync checkboxFlagsField[LFlags, HFlags] ( "\|" checkboxFlagsField[LFlags, HFlags] )*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << _PCATCH(CBObj.SetFlags (HFlags, LFlags), LineNum); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynccheckboxFlagsField[UINT8 & LFlags, UINT8 & HFlags] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // set question flag
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(_STOU8(N->getText()) == 0 ? VFR_RETURN_SUCCESS : VFR_RETURN_UNSUPPORTED, N->getLine());
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | D:"DEFAULT" <<
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // set question Default flag
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | M:"MANUFACTURING" <<
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // set question MFG flag
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//*****************************************************
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Syntax of action
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// prompt = STRING_TOKEN(STR_ACTION_PROMPT),
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// help = STRING_TOKEN(STR_ACTION_HELP),
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// flags = CALLBACK,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// config = STRING_TOKEN(STR_ACTION_CONFIG),
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// endaction;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { F:FLAGS "=" vfrActionFlags[AObj, F->getLine()] "," }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Config "=" "STRING_TOKEN" "\(" S:Number "\)" "," << AObj.SetQuestionConfig (_STOSID(S->getText())); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync actionFlagsField[HFlags] ( "\|" actionFlagsField[HFlags] )*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync N:Number << _PCATCH(_STOU8(N->getText()) == 0 ? VFR_RETURN_SUCCESS : VFR_RETURN_UNSUPPORTED, N->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { F:FLAGS "=" vfrDateFlags[DObj, F->getLine()] "," }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Year VarId "=" D1:StringIdentifier "." D1Y:StringIdentifier ","
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << _STRCAT(&VarIdStr[0], D1->getText()); _STRCAT(&VarIdStr[0], "."); _STRCAT(&VarIdStr[0], D1Y->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Month VarId "=" D2:StringIdentifier "." D2M:StringIdentifier ","
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << _STRCAT(&VarIdStr[1], D2->getText()); _STRCAT(&VarIdStr[1], "."); _STRCAT(&VarIdStr[1], D2M->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Day VarId "=" D3:StringIdentifier "." D3D:StringIdentifier ","
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << _STRCAT(&VarIdStr[2], D3->getText()); _STRCAT(&VarIdStr[2], "."); _STRCAT(&VarIdStr[2], D3D->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { G:FLAGS "=" vfrDateFlags[DObj, G->getLine()] "," }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mCVfrQuestionDB.RegisterOldDateQuestion (VarIdStr[0], VarIdStr[1], VarIdStr[2], QId);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DObj.SetFlags (EFI_IFR_QUESTION_FLAG_DEFAULT, QF_DATE_STORAGE_TIME);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (VarIdStr[0] != NULL) { delete VarIdStr[0]; } if (VarIdStr[1] != NULL) { delete VarIdStr[1]; } if (VarIdStr[2] != NULL) { delete VarIdStr[2]; }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << {CIfrDefault DefaultObj(EFI_HII_DEFAULT_CLASS_STANDARD, EFI_IFR_TYPE_DATE, Val); DefaultObj.SetLineNo(L->getLine());} >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncminMaxDateStepDefault[EFI_HII_DATE & D, UINT8 KeyValue] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (D.Year < _STOU16 (MinN->getText()) || D.Year > _STOU16 (MaxN->getText())) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Year default value must be between Min year and Max year.");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Month default value must be between 1 and 12.");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Day default value must be between 1 and 31.");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync dateFlagsField[LFlags] ( "\|" dateFlagsField[LFlags] )*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << _PCATCH(DObj.SetFlags (EFI_IFR_QUESTION_FLAG_DEFAULT, LFlags), LineNum); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case EFI_IFR_TYPE_NUM_SIZE_64 : MinU8 = _STOU64(I->getText()); break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case EFI_IFR_TYPE_NUM_SIZE_32 : MinU4 = _STOU32(I->getText()); break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case EFI_IFR_TYPE_NUM_SIZE_16 : MinU2 = _STOU16(I->getText()); break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case EFI_IFR_TYPE_NUM_SIZE_8 : MinU1 = _STOU8(I->getText()); break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, A->getLine(), "Maximum can't be less than Minimum");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, A->getLine(), "Maximum can't be less than Minimum");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, A->getLine(), "Maximum can't be less than Minimum");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, A->getLine(), "Maximum can't be less than Minimum");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case EFI_IFR_TYPE_NUM_SIZE_64 : StepU8 = _STOU64(S->getText()); break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case EFI_IFR_TYPE_NUM_SIZE_32 : StepU4 = _STOU32(S->getText()); break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case EFI_IFR_TYPE_NUM_SIZE_16 : StepU2 = _STOU16(S->getText()); break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case EFI_IFR_TYPE_NUM_SIZE_8 : StepU1 = _STOU8(S->getText()); break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case EFI_IFR_TYPE_NUM_SIZE_64 : $MMSDObj.SetMinMaxStepData (MinU8, MaxU8, StepU8); break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case EFI_IFR_TYPE_NUM_SIZE_32 : $MMSDObj.SetMinMaxStepData (MinU4, MaxU4, StepU4); break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case EFI_IFR_TYPE_NUM_SIZE_16 : $MMSDObj.SetMinMaxStepData (MinU2, MaxU2, StepU2); break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case EFI_IFR_TYPE_NUM_SIZE_8 : $MMSDObj.SetMinMaxStepData (MinU1, MaxU1, StepU1); break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (gCVfrVarDataTypeDB.GetDataTypeSize (_GET_CURRQEST_DATATYPE(), &DataTypeSize), L->getLine(), "Numeric varid is not the valid data type");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (DataTypeSize != 0 && DataTypeSize != _GET_CURRQEST_VARSIZE()) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, L->getLine(), "Numeric varid doesn't support array");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(NObj.SetFlags (NObj.FLAGS(), _GET_CURRQEST_DATATYPE()), L->getLine());
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { F:FLAGS "=" vfrNumericFlags[NObj, F->getLine()] "," }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Key "=" KN:Number "," << AssignQuestionKey (NObj, KN); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, L->getLine(), "Numeric question only support UINT8, UINT16, UINT32 and UINT64 data type.");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvfrNumericFlags [CIfrNumeric & NObj, UINT32 LineNum] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 LFlags = _GET_CURRQEST_DATATYPE() & EFI_IFR_NUMERIC_SIZE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_VFR_VARSTORE_TYPE VarStoreType = EFI_VFR_VARSTORE_INVALID;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync numericFlagsField[HFlags, LFlags] ( "\|" numericFlagsField[HFlags, LFlags] )*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //check data type flag
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VarStoreType = mCVfrDataStorage.GetVarStoreType (_GET_CURRQEST_VARTINFO().mVarStoreId);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (VarStoreType == EFI_VFR_VARSTORE_BUFFER || VarStoreType == EFI_VFR_VARSTORE_EFI) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (_GET_CURRQEST_DATATYPE() != (LFlags & EFI_IFR_NUMERIC_SIZE)) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(VFR_RETURN_INVALID_PARAMETER, LineNum, "Numeric Flag is not same to Numeric VarData type");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // update data type for name/value store
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _GET_CURRQEST_VARTINFO().mVarType = LFlags & EFI_IFR_NUMERIC_SIZE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync gCVfrVarDataTypeDB.GetDataTypeSize (_GET_CURRQEST_DATATYPE(), &DataTypeSize);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _GET_CURRQEST_VARTINFO().mVarTotalSize = DataTypeSize;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncnumericFlagsField [UINT8 & HFlags, UINT8 & LFlags] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync N:Number << _PCATCH(_STOU8(N->getText()) == 0 ? VFR_RETURN_SUCCESS : VFR_RETURN_UNSUPPORTED, N->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | "NUMERIC_SIZE_1" << $LFlags = ($LFlags & ~EFI_IFR_NUMERIC_SIZE) | EFI_IFR_NUMERIC_SIZE_1; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | "NUMERIC_SIZE_2" << $LFlags = ($LFlags & ~EFI_IFR_NUMERIC_SIZE) | EFI_IFR_NUMERIC_SIZE_2; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | "NUMERIC_SIZE_4" << $LFlags = ($LFlags & ~EFI_IFR_NUMERIC_SIZE) | EFI_IFR_NUMERIC_SIZE_4; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | "NUMERIC_SIZE_8" << $LFlags = ($LFlags & ~EFI_IFR_NUMERIC_SIZE) | EFI_IFR_NUMERIC_SIZE_8; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | "DISPLAY_INT_DEC" << $LFlags = ($LFlags & ~EFI_IFR_DISPLAY) | EFI_IFR_DISPLAY_INT_DEC; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | "DISPLAY_UINT_DEC" << $LFlags = ($LFlags & ~EFI_IFR_DISPLAY) | EFI_IFR_DISPLAY_UINT_DEC; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | "DISPLAY_UINT_HEX" << $LFlags = ($LFlags & ~EFI_IFR_DISPLAY) | EFI_IFR_DISPLAY_UINT_HEX; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (gCVfrVarDataTypeDB.GetDataTypeSize (_GET_CURRQEST_DATATYPE(), &DataTypeSize), L->getLine(), "OneOf varid is not the valid data type");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (DataTypeSize != 0 && DataTypeSize != _GET_CURRQEST_VARSIZE()) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, L->getLine(), "OneOf varid doesn't support array");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(OObj.SetFlags (OObj.FLAGS(), _GET_CURRQEST_DATATYPE()), L->getLine());
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { F:FLAGS "=" vfrOneofFlagsField[OObj, F->getLine()] "," }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, L->getLine(), "OneOf question only support UINT8, UINT16, UINT32 and UINT64 data type.");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvfrOneofFlagsField [CIfrOneOf & OObj, UINT32 LineNum] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT8 LFlags = _GET_CURRQEST_DATATYPE() & EFI_IFR_NUMERIC_SIZE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_VFR_VARSTORE_TYPE VarStoreType = EFI_VFR_VARSTORE_INVALID;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync numericFlagsField[HFlags, LFlags] ( "\|" numericFlagsField[HFlags, LFlags] )*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //check data type flag
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VarStoreType = mCVfrDataStorage.GetVarStoreType (_GET_CURRQEST_VARTINFO().mVarStoreId);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (VarStoreType == EFI_VFR_VARSTORE_BUFFER || VarStoreType == EFI_VFR_VARSTORE_EFI) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (_GET_CURRQEST_DATATYPE() != (LFlags & EFI_IFR_NUMERIC_SIZE)) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(VFR_RETURN_INVALID_PARAMETER, LineNum, "Numeric Flag is not same to Numeric VarData type");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // update data type for Name/Value store
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _GET_CURRQEST_VARTINFO().mVarType = LFlags & EFI_IFR_NUMERIC_SIZE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync gCVfrVarDataTypeDB.GetDataTypeSize (_GET_CURRQEST_DATATYPE(), &DataTypeSize);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _GET_CURRQEST_VARTINFO().mVarTotalSize = DataTypeSize;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { F:FLAGS "=" vfrStringFlagsField[SObj, F->getLine()] "," }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Key "=" KN:Number "," << AssignQuestionKey (SObj, KN); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, MIN->getLine(), "String MinSize takes only one byte, which can't be larger than 0xFF.");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else if (VarArraySize != 0 && StringMinSize > VarArraySize) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, MIN->getLine(), "String MinSize can't be larger than the max number of elements in string array.");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, MAX->getLine(), "String MaxSize takes only one byte, which can't be larger than 0xFF.");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else if (VarArraySize != 0 && StringMaxSize > VarArraySize) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, MAX->getLine(), "String MaxSize can't be larger than the max number of elements in string array.");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, MAX->getLine(), "String MaxSize can't be less than String MinSize.");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvfrStringFlagsField [CIfrString & SObj, UINT32 LineNum] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync stringFlagsField[HFlags, LFlags] ( "\|" stringFlagsField[HFlags, LFlags] )*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << _PCATCH(SObj.SetFlags (HFlags, LFlags), LineNum); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync N:Number << _PCATCH(_STOU8(N->getText()) == 0 ? VFR_RETURN_SUCCESS : VFR_RETURN_UNSUPPORTED, N->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { F:FLAGS "=" vfrPasswordFlagsField[PObj, F->getLine()] "," }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Key "=" KN:Number "," << AssignQuestionKey (PObj, KN); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, MIN->getLine(), "Password MinSize takes only two byte, which can't be larger than 0xFFFF.");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else if (VarArraySize != 0 && PasswordMinSize > VarArraySize) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, MIN->getLine(), "Password MinSize can't be larger than the max number of elements in password array.");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, MAX->getLine(), "Password MaxSize takes only two byte, which can't be larger than 0xFFFF.");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else if (VarArraySize != 0 && PasswordMaxSize > VarArraySize) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, MAX->getLine(), "Password MaxSize can't be larger than the max number of elements in password array.");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, MAX->getLine(), "Password MaxSize can't be less than Password MinSize.");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvfrPasswordFlagsField [CIfrPassword & PObj, UINT32 LineNum] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync passwordFlagsField[HFlags] ( "\|" passwordFlagsField[HFlags] )*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync N:Number << _PCATCH(_STOU8(N->getText()) == 0 ? VFR_RETURN_SUCCESS : VFR_RETURN_UNSUPPORTED, N->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OLObj.SetMaxContainers ((UINT8) (VarArraySize > 0xFF ? 0xFF : VarArraySize));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (_STOU64(M->getText()) > _STOU8(M->getText())) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, M->getLine(), "OrderedList MaxContainers takes only one byte, which can't be larger than 0xFF.");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else if (VarArraySize != 0 && _STOU8(M->getText()) > VarArraySize) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, M->getLine(), "OrderedList MaxContainers can't be larger than the max number of elements in array.");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { F:FLAGS "=" vfrOrderedListFlags[OLObj, F->getLine()] }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvfrOrderedListFlags [CIfrOrderedList & OLObj, UINT32 LineNum] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync orderedlistFlagsField[HFlags, LFlags] ( "\|" orderedlistFlagsField[HFlags, LFlags] )*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << _PCATCH(OLObj.SetFlags (HFlags, LFlags), LineNum); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncorderedlistFlagsField [UINT8 & HFlags, UINT8 & LFlags] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync N:Number << _PCATCH(_STOU8(N->getText()) == 0 ? VFR_RETURN_SUCCESS : VFR_RETURN_UNSUPPORTED, N->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { F:FLAGS "=" vfrTimeFlags[TObj, F->getLine()] "," }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Hour VarId "=" T1:StringIdentifier "." T1H:StringIdentifier ","
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << _STRCAT(&VarIdStr[0], T1->getText()); _STRCAT(&VarIdStr[0], "."); _STRCAT(&VarIdStr[0], T1H->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Minute VarId "=" T2:StringIdentifier "." T2M:StringIdentifier ","
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << _STRCAT(&VarIdStr[1], T2->getText()); _STRCAT(&VarIdStr[1], "."); _STRCAT(&VarIdStr[1], T2M->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Second VarId "=" T3:StringIdentifier "." T3S:StringIdentifier ","
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << _STRCAT(&VarIdStr[2], T3->getText()); _STRCAT(&VarIdStr[2], "."); _STRCAT(&VarIdStr[2], T3S->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { G:FLAGS "=" vfrTimeFlags[TObj, G->getLine()] "," }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mCVfrQuestionDB.RegisterOldTimeQuestion (VarIdStr[0], VarIdStr[1], VarIdStr[2], QId);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync TObj.SetFlags (EFI_IFR_QUESTION_FLAG_DEFAULT, QF_TIME_STORAGE_TIME);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (VarIdStr[0] != NULL) { delete VarIdStr[0]; } if (VarIdStr[1] != NULL) { delete VarIdStr[1]; } if (VarIdStr[2] != NULL) { delete VarIdStr[2]; }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << {CIfrDefault DefaultObj(EFI_HII_DEFAULT_CLASS_STANDARD, EFI_IFR_TYPE_TIME, Val); DefaultObj.SetLineNo(L->getLine());} >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncminMaxTimeStepDefault[EFI_HII_TIME & T, UINT8 KeyValue] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Hour default value must be between 0 and 23.");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Minute default value must be between 0 and 59.");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Second default value must be between 0 and 59.");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync timeFlagsField[LFlags] ( "\|" timeFlagsField[LFlags] )*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << _PCATCH(TObj.SetFlags(EFI_IFR_QUESTION_FLAG_DEFAULT, LFlags), LineNum); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Just for framework vfr compatibility
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Just for framework vfr compatibility
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Prompt "=" "STRING_TOKEN" "\(" S:Number "\)" "," << IIObj.SetError (_STOSID(S->getText())); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Compatible for framework vfr file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync E: EndIf ";" << if (GrayOutExist) CRT_END_OP (E); CRT_END_OP (E);>>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync E: EndIf ";" << if (SuppressExist) CRT_END_OP (E); CRT_END_OP (E); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L:Image "=" "IMAGE_TOKEN" "\(" S1:Number "\)" << IObj.SetImageId (_STOSID(S1->getText())); IObj.SetLineNo(L->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L:InconsistentIf << IIObj.SetLineNo(L->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Prompt "=" "STRING_TOKEN" "\(" S:Number "\)" "," << IIObj.SetError (_STOSID(S->getText())); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Prompt "=" "STRING_TOKEN" "\(" S:Number "\)" "," << NSIObj.SetError (_STOSID(S->getText())); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Interval "=" I:Number << RObj.SetRefreshInterval (_STOU8(I->getText())); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "=" guidDefinition[Guid] "," << RiObj.SetRefreshEventGroutId (&Guid); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L:VarstoreDevice << VDObj.SetLineNo(L->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "=" "STRING_TOKEN" "\(" S:Number "\)" "," << VDObj.SetDevicePath (_STOSID(S->getText())); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Text "=" "STRING_TOKEN" "\(" S:Number "\)" "," << OOOObj.SetOption (_STOSID(S->getText())); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Value "=" vfrConstantValueField[_GET_CURRQEST_DATATYPE()] >[Val] ","
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //set min/max value for oneof opcode
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT64 Step = gCurrentMinMaxData->GetStepData(_GET_CURRQEST_DATATYPE());
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync gCurrentMinMaxData->SetMinMaxStepData(Val.u64, Val.u64, Step);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync gCurrentMinMaxData->SetMinMaxStepData(Val.u32, Val.u32, (UINT32) Step);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync gCurrentMinMaxData->SetMinMaxStepData(Val.u16, Val.u16, (UINT16) Step);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync gCurrentMinMaxData->SetMinMaxStepData(Val.u8, Val.u8, (UINT8) Step);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync F:FLAGS "=" vfrOneOfOptionFlags[OOOObj, F->getLine()]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(mCVfrDataStorage.GetVarStoreName (_GET_CURRQEST_VARTINFO().mVarStoreId, &VarStoreName), L->getLine());
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(mCVfrDefaultStore.BufferVarStoreAltConfigAdd (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(mCVfrDefaultStore.BufferVarStoreAltConfigAdd (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Guid Option Key
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync T:"," vfrImageTag << OOOObj.SetScope (1); CRT_END_OP (T); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvfrOneOfOptionFlags [CIfrOneOfOption & OOOObj, UINT32 LineNum] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync oneofoptionFlagsField[HFlags, LFlags] ( "\|" oneofoptionFlagsField[HFlags, LFlags] )*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << _PCATCH(gCurrentQuestion->SetFlags(HFlags), LineNum); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynconeofoptionFlagsField [UINT8 & HFlags, UINT8 & LFlags] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Add end Label for Framework Vfr
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LObj1.SetNumber (0xffff); //add end label for UEFI, label number hardcode 0xffff
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync B:Banner { "," } << BObj.SetLineNo(B->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Title "=" "STRING_TOKEN" "\(" S:Number "\)" "," << BObj.SetTitle (_STOSID(S->getText())); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Line L:Number "," << BObj.SetLine (_STOU16(L->getText())); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Timeout "=" T:Number ";" << {CIfrTimeout TObj(_STOU16(T->getText()));} >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//******************************************************************************
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// keep some syntax for compatibility but not generate any IFR object
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//******************************************************************************
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// The syntax of expression
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#token QuestionRefVal("questionrefval") "questionrefval"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Root expression extension function called by other function.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvfrStatementExpression [UINT32 RootLevel, UINT32 ExpOpCount = 0] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << if ($RootLevel == 0) {mCIfrOpHdrIndex ++; if (mCIfrOpHdrIndex >= MAX_IFR_EXPRESSION_DEPTH) _PCATCH (VFR_RETURN_INVALID_PARAMETER, 0, "The depth of expression exceeds the max supported level 8!"); _CLEAR_SAVED_OPHDR ();} >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L:OR andTerm[$RootLevel, $ExpOpCount] << $ExpOpCount++; CIfrOr OObj(L->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Extend OpCode Scope only for the root expression.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EObj.SetLineNo (mCIfrOpHdrLineNo[mCIfrOpHdrIndex]);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Add new sub function for the sub expression extension to remember the ExpOpCount
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// This funciton is only called by sub expression.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvfrStatementExpressionSub [UINT32 RootLevel, UINT32 & ExpOpCount] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L:OR andTerm[$RootLevel, $ExpOpCount] << $ExpOpCount++; CIfrOr OObj(L->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L:AND bitwiseorTerm [$RootLevel, $ExpOpCount] << $ExpOpCount++; CIfrAnd AObj(L->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncbitwiseorTerm [UINT32 & RootLevel, UINT32 & ExpOpCount]:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L:"\|" bitwiseandTerm[$RootLevel, $ExpOpCount] << $ExpOpCount++; CIfrBitWiseOr BWOObj(L->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncbitwiseandTerm [UINT32 & RootLevel, UINT32 & ExpOpCount]:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L:"&" equalTerm[$RootLevel, $ExpOpCount] << $ExpOpCount++; CIfrBitWiseAnd BWAObj(L->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncequalTerm [UINT32 & RootLevel, UINT32 & ExpOpCount]:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L1:"==" compareTerm[$RootLevel, $ExpOpCount] << $ExpOpCount++; CIfrEqual EObj(L1->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L2:"!=" compareTerm[$RootLevel, $ExpOpCount] << $ExpOpCount++; CIfrNotEqual NEObj(L2->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynccompareTerm [UINT32 & RootLevel, UINT32 & ExpOpCount]:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L1:"<" shiftTerm[$RootLevel, $ExpOpCount] << $ExpOpCount++; CIfrLessThan LTObj(L1->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L2:"<=" shiftTerm[$RootLevel, $ExpOpCount] << $ExpOpCount++; CIfrLessEqual LEObj(L2->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L3:">" shiftTerm[$RootLevel, $ExpOpCount] << $ExpOpCount++; CIfrGreaterThan GTObj(L3->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L4:">=" shiftTerm[$RootLevel, $ExpOpCount] << $ExpOpCount++; CIfrGreaterEqual GEObj(L4->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncshiftTerm [UINT32 & RootLevel, UINT32 & ExpOpCount]:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L1:"\<<" addMinusTerm[$RootLevel, $ExpOpCount] << $ExpOpCount++; CIfrShiftLeft SLObj(L1->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L2:"\>>" addMinusTerm[$RootLevel, $ExpOpCount] << $ExpOpCount++; CIfrShiftRight SRObj(L2->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncaddMinusTerm [UINT32 & RootLevel, UINT32 & ExpOpCount]:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L1:"\+" multdivmodTerm[$RootLevel, $ExpOpCount] << $ExpOpCount++; CIfrAdd AObj(L1->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L2:"\-" multdivmodTerm[$RootLevel, $ExpOpCount] << $ExpOpCount++; CIfrSubtract SObj(L2->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncmultdivmodTerm [UINT32 & RootLevel, UINT32 & ExpOpCount]:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L1:"\*" castTerm[$RootLevel, $ExpOpCount] << $ExpOpCount++; CIfrMultiply MObj(L1->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L2:"/" castTerm[$RootLevel, $ExpOpCount] << $ExpOpCount++; CIfrDivide DObj(L2->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L3:"%" castTerm[$RootLevel, $ExpOpCount] << $ExpOpCount++; CIfrModulo MObj(L3->getLine()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 0: { CIfrToBoolean TBObj(L->getLine()); $ExpOpCount++; } break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 1: { CIfrToUint TUObj(L->getLine()); $ExpOpCount++; } break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | vfrExpressionBuildInFunction[$RootLevel, $ExpOpCount]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync atomTerm[$RootLevel, $ExpOpCount] << { CIfrNot NObj(L->getLine()); $ExpOpCount++; } >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvfrExpressionCatenate [UINT32 & RootLevel, UINT32 & ExpOpCount]:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "\)" << { CIfrCatenate CObj(L->getLine()); $ExpOpCount++; } >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvfrExpressionMatch [UINT32 & RootLevel, UINT32 & ExpOpCount]:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "\)" << { CIfrMatch MObj(L->getLine()); $ExpOpCount++; } >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvfrExpressionParen [UINT32 & RootLevel, UINT32 & ExpOpCount]:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvfrExpressionBuildInFunction [UINT32 & RootLevel, UINT32 & ExpOpCount] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | vareqvalExp[$RootLevel, $ExpOpCount] //Compatible for Framework vareqval
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L:Dup << { CIfrDup DObj(L->getLine()); _SAVE_OPHDR_COND(DObj, ($ExpOpCount == 0), L->getLine()); $ExpOpCount++; } >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvareqvalExp [UINT32 & RootLevel, UINT32 & ExpOpCount] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_VFR_VARSTORE_TYPE VarStoreType = EFI_VFR_VARSTORE_INVALID;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_VFR_RETURN_CODE VfrReturnCode = VFR_RETURN_SUCCESS;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VarIdStr = NULL; _STRCAT(&VarIdStr, VK->getText()); _STRCAT(&VarIdStr, VN->getText());
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VfrReturnCode = mCVfrDataStorage.GetVarStoreType (VarIdStr, VarStoreType);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mCVfrQuestionDB.GetQuestionId (NULL, VarIdStr, QId, Mask);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _SAVE_OPHDR_COND (EIVObj, ($ExpOpCount == 0), L->getLine());
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IdEqValDoSpecial ($ExpOpCount, L->getLine(), QId, VarIdStr, Mask, ConstVal, EQUAL);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << IdEqValDoSpecial ($ExpOpCount, L->getLine(), QId, VarIdStr, Mask, ConstVal, LESS_EQUAL); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << IdEqValDoSpecial ($ExpOpCount, L->getLine(), QId, VarIdStr, Mask, ConstVal, LESS_THAN); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << IdEqValDoSpecial ($ExpOpCount, L->getLine(), QId, VarIdStr, Mask, ConstVal, GREATER_EQUAL); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << IdEqValDoSpecial ($ExpOpCount, L->getLine(), QId, VarIdStr, Mask, ConstVal, GREATER_THAN); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncideqvalExp [UINT32 & RootLevel, UINT32 & ExpOpCount] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrQuestionDataFieldName[QId, Mask, VarIdStr, LineNo]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _SAVE_OPHDR_COND (EIVObj, ($ExpOpCount == 0), L->getLine());
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IdEqValDoSpecial ($ExpOpCount, L->getLine(), QId, VarIdStr, Mask, ConstVal, EQUAL);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << IdEqValDoSpecial ($ExpOpCount, L->getLine(), QId, VarIdStr, Mask, ConstVal, LESS_EQUAL); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << IdEqValDoSpecial ($ExpOpCount, L->getLine(), QId, VarIdStr, Mask, ConstVal, LESS_THAN); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << IdEqValDoSpecial ($ExpOpCount, L->getLine(), QId, VarIdStr, Mask, ConstVal, GREATER_EQUAL); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << IdEqValDoSpecial ($ExpOpCount, L->getLine(), QId, VarIdStr, Mask, ConstVal, GREATER_THAN); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncideqidExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrQuestionDataFieldName[QId[0], Mask[0], VarIdStr[0], LineNo[0]]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrQuestionDataFieldName[QId[1], Mask[1], VarIdStr[1], LineNo[1]]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IdEqIdDoSpecial ($ExpOpCount, L->getLine(), QId[0], VarIdStr[0], Mask[0], QId[1], VarIdStr[1], Mask[1], EQUAL);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _SAVE_OPHDR_COND (EIIObj, ($ExpOpCount == 0), L->getLine());
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EIIObj.SetQuestionId1 (QId[0], VarIdStr[0], LineNo[0]);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EIIObj.SetQuestionId2 (QId[1], VarIdStr[1], LineNo[1]);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrQuestionDataFieldName[QId[1], Mask[1], VarIdStr[1], LineNo[1]]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << IdEqIdDoSpecial ($ExpOpCount, L->getLine(), QId[0], VarIdStr[0], Mask[0], QId[1], VarIdStr[1], Mask[1], LESS_EQUAL); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrQuestionDataFieldName[QId[1], Mask[1], VarIdStr[1], LineNo[1]]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << IdEqIdDoSpecial ($ExpOpCount, L->getLine(), QId[0], VarIdStr[0], Mask[0], QId[1], VarIdStr[1], Mask[1], LESS_THAN); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrQuestionDataFieldName[QId[1], Mask[1], VarIdStr[1], LineNo[1]]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << IdEqIdDoSpecial ($ExpOpCount, L->getLine(), QId[0], VarIdStr[0], Mask[0], QId[1], VarIdStr[1], Mask[1], GREATER_EQUAL); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrQuestionDataFieldName[QId[1], Mask[1], VarIdStr[1], LineNo[1]]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << IdEqIdDoSpecial ($ExpOpCount, L->getLine(), QId[0], VarIdStr[0], Mask[0], QId[1], VarIdStr[1], Mask[1], GREATER_THAN); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncideqvallistExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrQuestionDataFieldName[QId, Mask, VarIdStr, LineNo]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync V:Number << ValueList[ListLen] = _STOU16(V->getText()); ListLen++; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IdEqListDoSpecial ($ExpOpCount, LineNo, QId, VarIdStr, Mask, ListLen, ValueList);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _SAVE_OPHDR_COND (EILObj, ($ExpOpCount == 0), L->getLine());
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncquestionref1Exp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mCVfrQuestionDB.GetQuestionId (QN->getText(), NULL, QId, BitMask);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { CIfrQuestionRef1 QR1Obj(L->getLine()); _SAVE_OPHDR_COND (QR1Obj, ($ExpOpCount == 0), L->getLine()); QR1Obj.SetQuestionId (QId, QName, LineNo); } $ExpOpCount++; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncrulerefExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "\(" RN:StringIdentifier "\)" << { CIfrRuleRef RRObj(L->getLine()); _SAVE_OPHDR_COND (RRObj, ($ExpOpCount == 0), L->getLine()); RRObj.SetRuleId (mCVfrRulesDB.GetRuleId (RN->getText())); } $ExpOpCount++; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//******************************************************
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// stringref (STR_FORM_SET_TITLE)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstringref1Exp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "STRING_TOKEN"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync S:Number << RefStringId = _STOSID(S->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | I:Number << RefStringId = _STOSID(I->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "\)" << { CIfrStringRef1 SR1Obj(L->getLine()); _SAVE_OPHDR_COND (SR1Obj, ($ExpOpCount == 0), L->getLine()); SR1Obj.SetStringId (RefStringId); $ExpOpCount++; } >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncpushthisExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L:PushThis << { CIfrThis TObj(L->getLine()); _SAVE_OPHDR_COND (TObj, ($ExpOpCount == 0), L->getLine()); $ExpOpCount++; } >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncsecurityExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "\(" guidDefinition[Guid] "\)" << { CIfrSecurity SObj(L->getLine()); _SAVE_OPHDR_COND (SObj, ($ExpOpCount == 0), L->getLine()); SObj.SetPermissions (&Guid); } $ExpOpCount++; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "NUMERIC_SIZE_1" << $VarType = EFI_IFR_NUMERIC_SIZE_1; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | "NUMERIC_SIZE_2" << $VarType = EFI_IFR_NUMERIC_SIZE_2; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | "NUMERIC_SIZE_4" << $VarType = EFI_IFR_NUMERIC_SIZE_4; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | "NUMERIC_SIZE_8" << $VarType = EFI_IFR_NUMERIC_SIZE_8; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // support Date/Time question
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mCVfrQuestionDB.GetQuestionId (NULL, VarIdStr, QId, Mask, &QType);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (QId == EFI_QUESTION_ID_INVALID || Mask == 0 || QType == QUESTION_NORMAL) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(VFR_RETURN_UNSUPPORTED, L->getLine(), "Get/Set opcode can't get the enough varstore information");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(VFR_RETURN_UNSUPPORTED, L->getLine(), "Get/Set opcode can't get the enough varstore information");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ((mCVfrDataStorage.GetVarStoreType(Info.mVarStoreId) == EFI_VFR_VARSTORE_NAME) && (VarType == EFI_IFR_TYPE_UNDEFINED)) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(VFR_RETURN_UNSUPPORTED, L->getLine(), "Get/Set opcode don't support name string");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(gCVfrVarDataTypeDB.GetDataTypeSize (Info.mVarType, &VarSize), L->getLine(), "Get/Set opcode can't get var type size");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(gCVfrVarDataTypeDB.GetDataTypeSize (Info.mVarType, &VarSize), L->getLine(), "Get/Set opcode can't get var type size");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(VFR_RETURN_UNSUPPORTED, L->getLine(), "Get/Set opcode don't support data array");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _SAVE_OPHDR_COND (GObj, ($ExpOpCount == 0), L->getLine());
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvfrExpressionConstant[UINT32 & RootLevel, UINT32 & ExpOpCount] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L1:True << CIfrTrue TObj(L1->getLine()); _SAVE_OPHDR_COND (TObj, ($ExpOpCount == 0), L1->getLine()); $ExpOpCount++; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | L2:False << CIfrFalse FObj(L2->getLine()); _SAVE_OPHDR_COND (FObj, ($ExpOpCount == 0), L2->getLine()); $ExpOpCount++; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | L3:One << CIfrOne OObj(L3->getLine()); _SAVE_OPHDR_COND (OObj, ($ExpOpCount == 0), L3->getLine()); $ExpOpCount++; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | L4:Ones << CIfrOnes OObj(L4->getLine()); _SAVE_OPHDR_COND (OObj, ($ExpOpCount == 0), L4->getLine()); $ExpOpCount++; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | L5:Zero << CIfrZero ZObj(L5->getLine()); _SAVE_OPHDR_COND (ZObj, ($ExpOpCount == 0), L5->getLine()); $ExpOpCount++; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | L6:Undefined << CIfrUndefined UObj(L6->getLine()); _SAVE_OPHDR_COND (UObj, ($ExpOpCount == 0), L6->getLine()); $ExpOpCount++; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | L7:Version << CIfrVersion VObj(L7->getLine()); _SAVE_OPHDR_COND (VObj, ($ExpOpCount == 0), L7->getLine()); $ExpOpCount++; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync | V:Number << CIfrUint64 U64Obj(V->getLine()); U64Obj.SetValue (_STOU64(V->getText())); _SAVE_OPHDR_COND (U64Obj, ($ExpOpCount == 0), V->getLine()); $ExpOpCount++; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvfrExpressionUnaryOp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynclengthExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "\(" vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] "\)"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << { CIfrLength LObj(L->getLine()); $ExpOpCount++; } >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncbitwisenotExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "\(" vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] "\)"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << { CIfrBitWiseNot BWNObj(L->getLine()); $ExpOpCount++; } >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncquestion23refExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DevicePath "=" "STRING_TOKEN" "\(" S:Number "\)" "," << Type = 0x2; DevPath = _STOSID(S->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Uuid "=" guidDefinition[Guid] "," << Type = 0x3; >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 0x1: {CIfrQuestionRef2 QR2Obj(L->getLine()); _SAVE_OPHDR_COND (QR2Obj, ($ExpOpCount == 0), L->getLine()); break;}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 0x2: {CIfrQuestionRef3_2 QR3_2Obj(L->getLine()); _SAVE_OPHDR_COND (QR3_2Obj, ($ExpOpCount == 0), L->getLine()); QR3_2Obj.SetDevicePath (DevPath); break;}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 0x3: {CIfrQuestionRef3_3 QR3_3Obj(L->getLine()); _SAVE_OPHDR_COND (QR3_3Obj, ($ExpOpCount == 0), L->getLine()); QR3_3Obj.SetDevicePath (DevPath); QR3_3Obj.SetGuid (&Guid); break;}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstringref2Exp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "\(" vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] "\)"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << { CIfrStringRef2 SR2Obj(L->getLine()); $ExpOpCount++; } >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctoboolExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "\(" vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] "\)"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << { CIfrToBoolean TBObj(L->getLine()); $ExpOpCount++; } >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctostringExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Format "=" F:Number "," << Fmt = _STOU8(F->getText()); >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "\(" vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] "\)"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << { CIfrToString TSObj(L->getLine()); TSObj.SetFormat (Fmt); $ExpOpCount++; } >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "\(" vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] "\)"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << { CIfrToUint TUObj(L->getLine()); $ExpOpCount++; } >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctoupperExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "\(" vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] "\)"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << { CIfrToUpper TUObj(L->getLine()); $ExpOpCount++; } >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctolwerExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "\(" vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] "\)"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync << { CIfrToLower TLObj(L->getLine()); $ExpOpCount++; } >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "," vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // support Date/Time question
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mCVfrQuestionDB.GetQuestionId (NULL, VarIdStr, QId, Mask, &QType);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (QId == EFI_QUESTION_ID_INVALID || Mask == 0 || QType == QUESTION_NORMAL) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(VFR_RETURN_UNSUPPORTED, L->getLine(), "Get/Set opcode can't get the enough varstore information");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(VFR_RETURN_UNSUPPORTED, L->getLine(), "Get/Set opcode can't get the enough varstore information");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ((mCVfrDataStorage.GetVarStoreType(Info.mVarStoreId) == EFI_VFR_VARSTORE_NAME) && (VarType == EFI_IFR_TYPE_UNDEFINED)) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(VFR_RETURN_UNSUPPORTED, L->getLine(), "Get/Set opcode don't support name string");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(gCVfrVarDataTypeDB.GetDataTypeSize (Info.mVarType, &VarSize), L->getLine(), "Get/Set opcode can't get var type size");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(gCVfrVarDataTypeDB.GetDataTypeSize (Info.mVarType, &VarSize), L->getLine(), "Get/Set opcode can't get var type size");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(VFR_RETURN_UNSUPPORTED, L->getLine(), "Get/Set opcode don't support data array");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvfrExpressionTernaryOp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncconditionalExp[UINT32 & RootLevel, UINT32 & ExpOpCount] :
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "\)" << { CIfrConditional CObj(L->getLine()); $ExpOpCount++; } >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "\)" << { CIfrFind FObj(L->getLine()); FObj.SetFormat (Format); $ExpOpCount++; } >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "\)" << { CIfrMid MObj(L->getLine()); $ExpOpCount++; } >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "\)" << { CIfrToken TObj(L->getLine()); $ExpOpCount++; } >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync FLAGS "=" spanFlags[Flags] ( "\|" spanFlags[Flags] )*
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync "\)" << { CIfrSpan SObj(S->getLine()); SObj.SetFlags(Flags); $ExpOpCount++; } >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncvfrExpressionMap [UINT32 & RootLevel, UINT32 & ExpOpCount]:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync E:"\)" << { CIfrEnd EObj; EObj.SetLineNo(E->getLine()); $ExpOpCount++; } >>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#token StringIdentifier("string identifier") "[A-Za-z_][A-Za-z_0-9]*"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#token Number("numeric value") "(0x[0-9A-Fa-f]+) | [0-9]+"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//******************************************************************************
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Parser class definition.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CIfrOpHeader * mCIfrOpHdr[MAX_IFR_EXPRESSION_DEPTH];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID _SAVE_OPHDR_COND (IN CIfrOpHeader &, IN BOOLEAN, UINT32 LineNo = 0);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// For framework vfr compatibility
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID _SAVE_CURRQEST_VARINFO (IN EFI_VARSTORE_INFO &);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID _PCATCH (IN INTN, IN INTN, IN ANTLRTokenPtr, IN CONST CHAR8 *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID _PCATCH (IN EFI_VFR_RETURN_CODE, IN ANTLRTokenPtr);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID _PCATCH (IN EFI_VFR_RETURN_CODE, IN UINT32, IN CONST CHAR8 *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID syn (ANTLRAbstractToken *, ANTLRChar *, SetWordType *, ANTLRTokenType, INT32);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_HII_DATE _STOD (IN CHAR8 *, IN CHAR8 *, IN CHAR8 *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_HII_TIME _STOT (IN CHAR8 *, IN CHAR8 *, IN CHAR8 *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_HII_REF _STOR (IN CHAR8 *, IN CHAR8 *, IN EFI_GUID *, IN CHAR8 *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID AssignQuestionKey (IN CIfrQuestionHeader &, IN ANTLRTokenPtr);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID ConvertIdExpr (IN UINT32 &, IN UINT32, IN EFI_QUESTION_ID, IN CHAR8 *, IN UINT32);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID IdEqValDoSpecial (IN UINT32 &, IN UINT32, IN EFI_QUESTION_ID, IN CHAR8 *, IN UINT32, IN UINT16, IN EFI_COMPARE_TYPE);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 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);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID IdEqListDoSpecial (IN UINT32 &, IN UINT32, IN EFI_QUESTION_ID, IN CHAR8 *, IN UINT32, IN UINT16, IN UINT16 *);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// For framework vfr compatibility
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mCIfrOpHdr[mCIfrOpHdrIndex] = new CIfrOpHeader(OpHdr);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // IfrOpHdr is not set, FALSE is return.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync gCVfrErrorHandle.PrintMsg (Tok->getLine(), Tok->getText(), "Error", ErrorMsg);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mParserStatus = mParserStatus + gCVfrErrorHandle.HandleError (ReturnCode);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mParserStatus = mParserStatus + gCVfrErrorHandle.HandleError (ReturnCode, Tok->getLine(), Tok->getText());
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mParserStatus = mParserStatus + gCVfrErrorHandle.HandleError (ReturnCode, LineNum);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mParserStatus = mParserStatus + gCVfrErrorHandle.HandleError (ReturnCode, LineNum, (CHAR8 *) ErrorMsg);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync gCVfrErrorHandle.HandleError (VFR_RETURN_MISMATCHED, Tok->getLine(), Tok->getText());
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // BUG: does not handle overflow here
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // BUG: does not handle overflow here
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // BUG: does not handle overflow here
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // BUG: does not handle overflow here
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync memcpy (&Ref.FormSetGuid, FormSetGuid, sizeof (EFI_GUID));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// framework vfr to default declare varstore for each structure
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (pNode == NULL && gCVfrVarDataTypeDB.mFirstNewDataTypeName != NULL) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Create the default Buffer Var Store when no VarStore is defined.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // its name should be "Setup"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync gCVfrVarDataTypeDB.GetDataTypeSize (gCVfrVarDataTypeDB.mFirstNewDataTypeName, &TypeSize);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VSObj.SetVarStoreId (0x1); //the first and only one Buffer Var Store
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //VSObj.SetName (gCVfrVarDataTypeDB.mFirstNewDataTypeName);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync printf ("Create the default VarStoreName is %s\n", gCVfrVarDataTypeDB.mFirstNewDataTypeName);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // create the default varstore opcode for not declared varstore
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // the first varstore name should be "Setup"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VSObj.SetSize ((UINT16) pNode->mStorageInfo.mDataType->mTotalSize);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync printf ("undefined VarStoreName is %s and Id is 0x%x\n", pNode->mVarStoreName, pNode->mVarStoreId);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // create the default efi varstore opcode for not exist varstore
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VSEObj.SetAttributes (0x00000002); //hardcode EFI_VARIABLE_BOOTSERVICE_ACCESS attribute
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Generate old efi varstore storage structure for compatiable with old "VarEqVal" opcode,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // which is 3 bytes less than new structure define in UEFI Spec 2.3.1.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VSEObj.SetBinaryLength (sizeof (EFI_IFR_VARSTORE_EFI) - 3);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync printf ("undefined Efi VarStoreName is %s and Id is 0x%x\n", pNode->mVarStoreName, pNode->mVarStoreId);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync gCVfrVarDataTypeDB.GetUserDefinedTypeNameList (&TypeNameList, &ListSize);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mCVfrDataStorage.GetVarStoreId(TypeNameList[Index], &VarStoreId);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync gCVfrVarDataTypeDB.GetDataTypeSize(TypeNameList[Index], &Size);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// not required to declare Date and Time VarStore,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// because code to support old format Data and Time
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (gCVfrVarDataTypeDB.IsTypeNameDefined ((CHAR8 *) DateName) == FALSE) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mCVfrDataStorage.GetVarStoreId((CHAR8 *) DateName, &VarStoreId);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync gCVfrVarDataTypeDB.GetDataTypeSize((CHAR8 *) DateType, &Size);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (gCVfrVarDataTypeDB.IsTypeNameDefined ((CHAR8 *) TimeName) == FALSE) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mCVfrDataStorage.GetVarStoreId((CHAR8 *) TimeName, &VarStoreId);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync gCVfrVarDataTypeDB.GetDataTypeSize((CHAR8 *) TimeType, &Size);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Default Store is declared.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mCVfrDefaultStore.RegisterDefaultStore (DSObj.GetObjBinAddr(), (CHAR8 *) "Standard Defaults", EFI_STRING_ID_INVALID, EFI_HII_DEFAULT_CLASS_STANDARD);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DSObj.SetDefaultId (EFI_HII_DEFAULT_CLASS_STANDARD);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Default MANUFACTURING Store is declared.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync mCVfrDefaultStore.RegisterDefaultStore (DSObjMF.GetObjBinAddr(), (CHAR8 *) "Standard ManuFacturing", EFI_STRING_ID_INVALID, EFI_HII_DEFAULT_CLASS_MANUFACTURING);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DSObjMF.SetDefaultId (EFI_HII_DEFAULT_CLASS_MANUFACTURING);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync * if the question is not CALLBACK ignore the key.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync _PCATCH(mCVfrQuestionDB.UpdateQuestionId (QHObj.QUESTION_ID(), KeyValue), KeyTok);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case DATE_YEAR_BITMASK : U8Obj.SetValue (0); break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case TIME_SECOND_BITMASK : U8Obj.SetValue (0x10); break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case DATE_DAY_BITMASK : U8Obj.SetValue (0x18); break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case TIME_HOUR_BITMASK : U8Obj.SetValue (0); break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case TIME_MINUTE_BITMASK : U8Obj.SetValue (0x8); break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ConvertIdExpr (ExpOpCount, LineNo, QId, VarIdStr, BitMask);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ConvertIdExpr (ExpOpCount, LineNo, QId1, VarId1Str, BitMask1);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ConvertIdExpr (ExpOpCount, LineNo, QId2, VarId2Str, BitMask2);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IdEqValDoSpecial (ExpOpCount, LineNo, QId, VarIdStr, BitMask, ValueList[0], EQUAL);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IdEqValDoSpecial (ExpOpCount, LineNo, QId, VarIdStr, BitMask, ValueList[Index], EQUAL);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEfiVfrParser::SetOverrideClassGuid (IN EFI_GUID *OverrideClassGuid)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// For framework vfr compatibility