]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Add new “Modal form” opcode.
authorydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 8 Jun 2011 07:50:04 +0000 (07:50 +0000)
committerydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 8 Jun 2011 07:50:04 +0000 (07:50 +0000)
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

BaseTools/Source/C/Include/Common/UefiInternalFormRepresentation.h
BaseTools/Source/C/VfrCompile/VfrFormPkg.cpp
BaseTools/Source/C/VfrCompile/VfrFormPkg.h
BaseTools/Source/C/VfrCompile/VfrSyntax.g

index 61fc19161899a39280e4940c672c6b12ef0fa20e..282eb150c7baadea6d9edc4a7090cbd778b2e1ff 100644 (file)
@@ -681,6 +681,7 @@ typedef union {
 #define EFI_IFR_CATENATE_OP            0x5E\r
 #define EFI_IFR_GUID_OP                0x5F\r
 #define EFI_IFR_SECURITY_OP            0x60\r
+#define EFI_IFR_MODAL_TAG_OP           0x61\r
 \r
 \r
 typedef struct _EFI_IFR_OP_HEADER {\r
@@ -771,6 +772,10 @@ typedef struct _EFI_IFR_IMAGE {
   EFI_IMAGE_ID             Id;\r
 } EFI_IFR_IMAGE;\r
 \r
+typedef struct _EFI_IFR_MODAL {\r
+  EFI_IFR_OP_HEADER        Header;\r
+} EFI_IFR_MODAL;\r
+\r
 typedef struct _EFI_IFR_LOCKED {\r
   EFI_IFR_OP_HEADER        Header;\r
 } EFI_IFR_LOCKED;\r
index 571af91b0a93c70072d2b8bfdb63fe08c4ea3f86..3c82b53c79e759cf47de499e3ee9f74129db76cb 100644 (file)
@@ -1305,6 +1305,7 @@ static struct {
   { sizeof (EFI_IFR_CATENATE), 0 },            // EFI_IFR_CATENATE_OP\r
   { sizeof (EFI_IFR_GUID), 0 },                // EFI_IFR_GUID_OP\r
   { sizeof (EFI_IFR_SECURITY), 0 },            // EFI_IFR_SECURITY_OP - 0x60\r
+  { sizeof (EFI_IFR_MODAL), 0},                // EFI_IFR_MODAL_OP - 0x61\r
 };\r
 \r
 #ifdef CIFROBJ_DEUBG\r
@@ -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",\r
   "EFI_IFR_ONES",       "EFI_IFR_UNDEFINED",            "EFI_IFR_LENGTH",        "EFI_IFR_DUP",             "EFI_IFR_THIS",          "EFI_IFR_SPAN",\r
   "EFI_IFR_VALUE",      "EFI_IFR_DEFAULT",              "EFI_IFR_DEFAULTSTORE",  "EFI_IFR_FORM_MAP",        "EFI_IFR_CATENATE",      "EFI_IFR_GUID",\r
-  "EFI_IFR_SECURITY",\r
+  "EFI_IFR_SECURITY",   "EFI_IFR_MODAL",\r
 };\r
 \r
 VOID\r
index 4cdd1cc5db55c52dcef4a6455aab1423d06530fc..543852108fe7f02b86345cb5c8940feca5a33edc 100644 (file)
@@ -809,6 +809,16 @@ public:
   }\r
 };\r
 \r
+class CIfrModal : public CIfrObj, public CIfrOpHeader {\r
+private:\r
+  EFI_IFR_MODAL *mModal;\r
+\r
+public:\r
+  CIfrModal () : CIfrObj (EFI_IFR_MODAL_TAG_OP, (CHAR8 **)&mModal),\r
+                 CIfrOpHeader (EFI_IFR_MODAL_TAG_OP, &mModal->Header) {\r
+  }\r
+};\r
+\r
 class CIfrLocked : public CIfrObj, public CIfrOpHeader {\r
 private:\r
   EFI_IFR_LOCKED *mLocked;\r
index 02a7b5c1f4382752f44efb6b64afcd56e0fbcfb8..df09e9b655a95dd4f268b89e3e58cc7340facb7b 100644 (file)
@@ -237,6 +237,7 @@ VfrParserStart (
 #token EndGuidOp("endguidop")                   "endguidop"\r
 #token DataType("datatype")                     "datatype"\r
 #token Data("data")                             "data"\r
+#token Modal("modal")                           "modal"\r
 \r
 //\r
 // Define the class and subclass tokens\r
@@ -1251,7 +1252,8 @@ vfrFormDefinition :
     vfrStatementBanner                       |\r
     // Just for framework vfr compatibility\r
     vfrStatementInvalid                      |\r
-    vfrStatementExtension\r
+    vfrStatementExtension                    |\r
+    vfrStatementModal\r
   )*\r
   E:EndForm                                         <<\r
                                                       if (mCompatibleMode) {\r
@@ -1310,7 +1312,8 @@ vfrFormMapDefinition :
     vfrStatementConditional                  |\r
     vfrStatementLabel                        |\r
     vfrStatementBanner                       |\r
-    vfrStatementExtension\r
+    vfrStatementExtension                    |\r
+    vfrStatementModal\r
   )*\r
   E:EndForm                                         << CRT_END_OP (E); >>\r
   ";"\r
@@ -2490,6 +2493,11 @@ vfrLockedTag :
   L:Locked                                             << LObj.SetLineNo(L->getLine()); >>\r
   ;\r
 \r
+vfrModalTag :\r
+  << CIfrModal MObj; >>\r
+  L:Modal                                             << MObj.SetLineNo(L->getLine()); >>\r
+  ;\r
+\r
 vfrStatementStatTag :\r
   vfrImageTag  |\r
   vfrLockedTag\r
@@ -2504,6 +2512,11 @@ vfrStatementImage :
   ";"\r
   ;\r
 \r
+vfrStatementModal :\r
+  vfrModalTag\r
+  ";"\r
+  ;\r
+\r
 vfrStatementLocked :\r
   vfrLockedTag\r
   ";"\r