]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/C/VfrCompile/VfrSyntax.g
BaseTools/VfrCompile: VFR compiler supports REST_STYLE in HII option
[mirror_edk2.git] / BaseTools / Source / C / VfrCompile / VfrSyntax.g
index 127cb8b2b2715c951033e24fcf26a6deda11344d..3f896c6f1accb761ac34fa4635725fb87286a816 100644 (file)
@@ -192,6 +192,7 @@ VfrParserStart (
 #token LateCheckFlag("LATE_CHECK")              "LATE_CHECK"\r
 #token ReadOnlyFlag("READ_ONLY")                "READ_ONLY"\r
 #token OptionOnlyFlag("OPTIONS_ONLY")           "OPTIONS_ONLY"\r
+#token RestStyleFlag("REST_STYLE")              "REST_STYLE"\r
 #token Class("class")                           "class"\r
 #token Subclass("subclass")                     "subclass"\r
 #token ClassGuid("classguid")                   "classguid"\r
@@ -584,7 +585,7 @@ vfrFormSetDefinition :
   <<\r
      EFI_GUID    Guid;\r
      EFI_GUID    DefaultClassGuid = EFI_HII_PLATFORM_SETUP_FORMSET_GUID;\r
-     EFI_GUID    ClassGuid1, ClassGuid2, ClassGuid3;\r
+     EFI_GUID    ClassGuid1, ClassGuid2, ClassGuid3, ClassGuid4;\r
      UINT8       ClassGuidNum = 0;\r
      CIfrFormSet *FSObj = NULL;\r
      UINT16      C, SC;\r
@@ -600,13 +601,16 @@ vfrFormSetDefinition :
                      "\|" guidDefinition[ClassGuid2]  << ++ClassGuidNum; >>\r
                      {\r
                       "\|" guidDefinition[ClassGuid3]  << ++ClassGuidNum; >>\r
+                       {\r
+                         "\|" guidDefinition[ClassGuid4]  << ++ClassGuidNum; >>\r
+                       }\r
                      }\r
                   }\r
                   ","\r
   }\r
                                                     <<\r
-                                                      if (mOverrideClassGuid != NULL && ClassGuidNum >= 3) {\r
-                                                        _PCATCH (VFR_RETURN_INVALID_PARAMETER, L->getLine(), "Already has 3 class guids, can't add extra class guid!");\r
+                                                      if (mOverrideClassGuid != NULL && ClassGuidNum >= 4) {\r
+                                                        _PCATCH (VFR_RETURN_INVALID_PARAMETER, L->getLine(), "Already has 4 class guids, can't add extra class guid!");\r
                                                       }\r
                                                       switch (ClassGuidNum) {\r
                                                       case 0:\r
@@ -643,10 +647,23 @@ vfrFormSetDefinition :
                                                         }\r
                                                         break;\r
                                                       case 3:\r
+                                                        if (mOverrideClassGuid != NULL) {\r
+                                                          ClassGuidNum ++;\r
+                                                        }\r
+                                                        FSObj = new CIfrFormSet(sizeof(EFI_IFR_FORM_SET) + ClassGuidNum * sizeof(EFI_GUID));\r
+                                                        FSObj->SetClassGuid(&ClassGuid1);\r
+                                                        FSObj->SetClassGuid(&ClassGuid2);\r
+                                                        FSObj->SetClassGuid(&ClassGuid3);\r
+                                                        if (mOverrideClassGuid != NULL) {\r
+                                                          FSObj->SetClassGuid(mOverrideClassGuid);\r
+                                                        }\r
+                                                        break;\r
+                                                      case 4:\r
                                                         FSObj = new CIfrFormSet(sizeof(EFI_IFR_FORM_SET) + ClassGuidNum * sizeof(EFI_GUID));\r
                                                         FSObj->SetClassGuid(&ClassGuid1);\r
                                                         FSObj->SetClassGuid(&ClassGuid2);\r
                                                         FSObj->SetClassGuid(&ClassGuid3);\r
+                                                        FSObj->SetClassGuid(&ClassGuid4);\r
                                                         break;\r
                                                       default:\r
                                                         break;\r
@@ -1321,6 +1338,7 @@ questionheaderFlagsField[UINT8 & Flags] :
     ReadOnlyFlag                                    << $Flags |= 0x01; >>\r
   | InteractiveFlag                                 << $Flags |= 0x04; >>\r
   | ResetRequiredFlag                               << $Flags |= 0x10; >>\r
+  | RestStyleFlag                                   << $Flags |= 0x20; >>\r
   | ReconnectRequiredFlag                           << $Flags |= 0x40; >>\r
   | O:OptionOnlyFlag                                <<\r
                                                        gCVfrErrorHandle.HandleWarning (\r
@@ -3766,6 +3784,7 @@ oneofoptionFlagsField [UINT8 & HFlags, UINT8 & LFlags] :
   | "OPTION_DEFAULT_MFG"                               << $LFlags |= 0x20; >>\r
   | InteractiveFlag                                    << $HFlags |= 0x04; >>\r
   | ResetRequiredFlag                                  << $HFlags |= 0x10; >>\r
+  | RestStyleFlag                                      << $HFlags |= 0x20; >>\r
   | ReconnectRequiredFlag                              << $HFlags |= 0x40; >>\r
   | ManufacturingFlag                                  << $LFlags |= 0x20; >>\r
   | DefaultFlag                                        << $LFlags |= 0x10; >>\r