Add new “Modal form” opcode.

Signed-off-by: ydong10
Reviewed-by: lgao4


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11766 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
ydong10 2011-06-08 07:50:04 +00:00
parent dfc66bb938
commit 5b127d7565
4 changed files with 32 additions and 3 deletions

View File

@ -681,6 +681,7 @@ typedef union {
#define EFI_IFR_CATENATE_OP 0x5E
#define EFI_IFR_GUID_OP 0x5F
#define EFI_IFR_SECURITY_OP 0x60
#define EFI_IFR_MODAL_TAG_OP 0x61
typedef struct _EFI_IFR_OP_HEADER {
@ -771,6 +772,10 @@ typedef struct _EFI_IFR_IMAGE {
EFI_IMAGE_ID Id;
} EFI_IFR_IMAGE;
typedef struct _EFI_IFR_MODAL {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_MODAL;
typedef struct _EFI_IFR_LOCKED {
EFI_IFR_OP_HEADER Header;
} EFI_IFR_LOCKED;

View File

@ -1305,6 +1305,7 @@ static struct {
{ sizeof (EFI_IFR_CATENATE), 0 }, // EFI_IFR_CATENATE_OP
{ sizeof (EFI_IFR_GUID), 0 }, // EFI_IFR_GUID_OP
{ sizeof (EFI_IFR_SECURITY), 0 }, // EFI_IFR_SECURITY_OP - 0x60
{ sizeof (EFI_IFR_MODAL), 0}, // EFI_IFR_MODAL_OP - 0x61
};
#ifdef CIFROBJ_DEUBG
@ -1327,7 +1328,7 @@ static struct {
"EFI_IFR_STRING_REF1","EFI_IFR_STRING_REF2", "EFI_IFR_CONDITIONAL", "EFI_IFR_QUESTION_REF3", "EFI_IFR_ZERO", "EFI_IFR_ONE",
"EFI_IFR_ONES", "EFI_IFR_UNDEFINED", "EFI_IFR_LENGTH", "EFI_IFR_DUP", "EFI_IFR_THIS", "EFI_IFR_SPAN",
"EFI_IFR_VALUE", "EFI_IFR_DEFAULT", "EFI_IFR_DEFAULTSTORE", "EFI_IFR_FORM_MAP", "EFI_IFR_CATENATE", "EFI_IFR_GUID",
"EFI_IFR_SECURITY",
"EFI_IFR_SECURITY", "EFI_IFR_MODAL",
};
VOID

View File

@ -809,6 +809,16 @@ public:
}
};
class CIfrModal : public CIfrObj, public CIfrOpHeader {
private:
EFI_IFR_MODAL *mModal;
public:
CIfrModal () : CIfrObj (EFI_IFR_MODAL_TAG_OP, (CHAR8 **)&mModal),
CIfrOpHeader (EFI_IFR_MODAL_TAG_OP, &mModal->Header) {
}
};
class CIfrLocked : public CIfrObj, public CIfrOpHeader {
private:
EFI_IFR_LOCKED *mLocked;

View File

@ -237,6 +237,7 @@ VfrParserStart (
#token EndGuidOp("endguidop") "endguidop"
#token DataType("datatype") "datatype"
#token Data("data") "data"
#token Modal("modal") "modal"
//
// Define the class and subclass tokens
@ -1251,7 +1252,8 @@ vfrFormDefinition :
vfrStatementBanner |
// Just for framework vfr compatibility
vfrStatementInvalid |
vfrStatementExtension
vfrStatementExtension |
vfrStatementModal
)*
E:EndForm <<
if (mCompatibleMode) {
@ -1310,7 +1312,8 @@ vfrFormMapDefinition :
vfrStatementConditional |
vfrStatementLabel |
vfrStatementBanner |
vfrStatementExtension
vfrStatementExtension |
vfrStatementModal
)*
E:EndForm << CRT_END_OP (E); >>
";"
@ -2490,6 +2493,11 @@ vfrLockedTag :
L:Locked << LObj.SetLineNo(L->getLine()); >>
;
vfrModalTag :
<< CIfrModal MObj; >>
L:Modal << MObj.SetLineNo(L->getLine()); >>
;
vfrStatementStatTag :
vfrImageTag |
vfrLockedTag
@ -2504,6 +2512,11 @@ vfrStatementImage :
";"
;
vfrStatementModal :
vfrModalTag
";"
;
vfrStatementLocked :
vfrLockedTag
";"