]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/C/VfrCompile/VfrFormPkg.h
Sync BaseTools Branch (version r2271) to EDKII main trunk.
[mirror_edk2.git] / BaseTools / Source / C / VfrCompile / VfrFormPkg.h
index 38422e1332f85636b628fc491908834f16d229fe..f908718c029bfbf2d7f72b4d717cfb880a67fe76 100644 (file)
@@ -2,8 +2,8 @@
   \r
   The definition of CFormPkg's member function\r
 \r
-Copyright (c) 2004 - 2010, Intel Corporation                                                         \r
-All rights reserved. This program and the accompanying materials                          \r
+Copyright (c) 2004 - 2011, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials                          \r
 are licensed and made available under the terms and conditions of the BSD License         \r
 which accompanies this distribution.  The full text of the license may be found at        \r
 http://opensource.org/licenses/bsd-license.php                                            \r
@@ -96,6 +96,11 @@ struct SBufferNode {
   struct SBufferNode *mNext;\r
 };\r
 \r
+typedef struct {\r
+  BOOLEAN  CompatibleMode;\r
+  EFI_GUID *OverrideClassGuid;\r
+} INPUT_INFO_TO_SYNTAX;\r
+\r
 class CFormPkg {\r
 private:\r
   UINT32              mBufferSize;\r
@@ -144,7 +149,8 @@ public:
     );\r
 };\r
 \r
-extern CFormPkg gCFormPkg;\r
+extern CFormPkg       gCFormPkg;\r
+extern CVfrStringDB   gCVfrStringDB;\r
 \r
 struct SIfrRecord {\r
   UINT32     mLineNo;\r
@@ -233,6 +239,15 @@ public:
       return FALSE;\r
     }\r
   }\r
+\r
+  inline bool ShrinkObjBin (IN UINT8 Size) {\r
+    if ((mDelayEmit == TRUE) && (mObjBinLen > Size)) {\r
+      mObjBinLen -= Size;\r
+      return TRUE;\r
+    } else {\r
+      return FALSE;\r
+    }\r
+  }\r
 };\r
 \r
 /*\r
@@ -254,7 +269,7 @@ public:
 \r
   VOID DecLength (UINT8 Size) {\r
     if (mHeader->Length >= Size) {\r
-      mHeader -= Size;\r
+      mHeader->Length -= Size;\r
     }\r
   }\r
 \r
@@ -755,10 +770,12 @@ private:
   EFI_IFR_VARSTORE_EFI *mVarStoreEfi;\r
 \r
 public:\r
-  CIfrVarStoreEfi () : CIfrObj (EFI_IFR_VARSTORE_EFI_OP, (CHAR8 **)&mVarStoreEfi), \r
+  CIfrVarStoreEfi () : CIfrObj (EFI_IFR_VARSTORE_EFI_OP, (CHAR8 **)&mVarStoreEfi, sizeof (EFI_IFR_VARSTORE_EFI), TRUE),\r
                       CIfrOpHeader (EFI_IFR_VARSTORE_EFI_OP, &mVarStoreEfi->Header) {\r
     mVarStoreEfi->VarStoreId = EFI_VAROFFSET_INVALID;\r
+    mVarStoreEfi->Size       = 0;\r
     memset (&mVarStoreEfi->Guid, 0, sizeof (EFI_GUID));\r
+    mVarStoreEfi->Name[0]    = '\0';\r
   }\r
 \r
   VOID SetGuid (IN EFI_GUID *Guid) {\r
@@ -772,6 +789,36 @@ public:
   VOID SetAttributes (IN UINT32 Attributes) {\r
     mVarStoreEfi->Attributes = Attributes;\r
   }\r
+  VOID SetSize (IN UINT16 Size) {\r
+    mVarStoreEfi->Size = Size;\r
+  }\r
+\r
+  VOID SetName (IN CHAR8 *Name) {\r
+    UINT8 Len;\r
+\r
+    if (Name != NULL) {\r
+      Len = (UINT8) strlen (Name);\r
+      if (Len != 0) {\r
+        if (ExpendObjBin (Len) == TRUE) {\r
+          IncLength (Len);\r
+          strcpy ((CHAR8 *)(mVarStoreEfi->Name), Name);\r
+        }\r
+      }\r
+    }\r
+  }\r
+\r
+  VOID SetBinaryLength (IN UINT16 Size) {\r
+    UINT16 Len;\r
+\r
+    Len = sizeof (EFI_IFR_VARSTORE_EFI);\r
+    if (Size > Len) {\r
+      ExpendObjBin(Size - Len);\r
+      IncLength(Size - Len);\r
+    } else {\r
+      ShrinkObjBin(Len - Size);\r
+      DecLength(Len - Size);\r
+    }\r
+  }\r
 };\r
 \r
 class CIfrVarStoreNameValue : public CIfrObj, public CIfrOpHeader {\r
@@ -809,6 +856,17 @@ 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
+\r
 class CIfrLocked : public CIfrObj, public CIfrOpHeader {\r
 private:\r
   EFI_IFR_LOCKED *mLocked;\r
@@ -1043,8 +1101,8 @@ private:
   EFI_IFR_REF4 *mRef4;\r
 \r
 public:\r
-  CIfrRef4 () : CIfrObj (EFI_IFR_REF_OP, (CHAR8 **)&mRef4, sizeof(EFI_IFR_REF3)),\r
-               CIfrOpHeader (EFI_IFR_REF_OP, &mRef4->Header, sizeof (EFI_IFR_REF3)), \r
+  CIfrRef4 () : CIfrObj (EFI_IFR_REF_OP, (CHAR8 **)&mRef4, sizeof(EFI_IFR_REF4)),\r
+               CIfrOpHeader (EFI_IFR_REF_OP, &mRef4->Header, sizeof(EFI_IFR_REF4)), \r
                CIfrQuestionHeader (&mRef4->Question) {\r
     mRef4->FormId     = 0;\r
     mRef4->QuestionId = EFI_QUESTION_ID_INVALID;\r
@@ -1069,6 +1127,17 @@ public:
   }\r
 };\r
 \r
+class CIfrRef5 : public CIfrObj, public CIfrOpHeader, public CIfrQuestionHeader {\r
+private:\r
+  EFI_IFR_REF5 *mRef5;\r
+\r
+public:\r
+  CIfrRef5 () : CIfrObj (EFI_IFR_REF_OP, (CHAR8 **)&mRef5, sizeof (EFI_IFR_REF5)),\r
+              CIfrOpHeader (EFI_IFR_REF_OP, &mRef5->Header, sizeof (EFI_IFR_REF5)), \r
+              CIfrQuestionHeader (&mRef5->Question) {\r
+  }\r
+};\r
+\r
 class CIfrResetButton : public CIfrObj, public CIfrOpHeader, public CIfrStatementHeader {\r
 private:\r
   EFI_IFR_RESET_BUTTON *mResetButton;\r
@@ -1481,6 +1550,21 @@ public:
   }\r
 };\r
 \r
+class CIfrRefreshId : public CIfrObj, public CIfrOpHeader {\r
+private:\r
+  EFI_IFR_REFRESH_ID *mRefreshId;\r
+\r
+public:\r
+  CIfrRefreshId () : CIfrObj (EFI_IFR_REFRESH_ID_OP, (CHAR8 **)&mRefreshId),\r
+      CIfrOpHeader (EFI_IFR_REFRESH_ID_OP, &mRefreshId->Header) {\r
+    memset (&mRefreshId->RefreshEventGroupId, 0, sizeof (EFI_GUID));\r
+  }\r
+\r
+  VOID SetRefreshEventGroutId (IN EFI_GUID *RefreshEventGroupId) {\r
+    memcpy (&mRefreshId->RefreshEventGroupId, RefreshEventGroupId, sizeof (EFI_GUID));\r
+  }\r
+};\r
+\r
 class CIfrVarStoreDevice : public CIfrObj, public CIfrOpHeader {\r
 private:\r
   EFI_IFR_VARSTORE_DEVICE *mVarStoreDevice;\r
@@ -1697,6 +1781,25 @@ public:
   }\r
 };\r
 \r
+class CIfrGuid : public CIfrObj, public CIfrOpHeader {\r
+private:\r
+  EFI_IFR_GUID *mGuid;\r
+\r
+public:\r
+  CIfrGuid (UINT8 Size) : CIfrObj (EFI_IFR_GUID_OP, (CHAR8 **)&mGuid, sizeof (EFI_IFR_GUID)+Size),\r
+                  CIfrOpHeader (EFI_IFR_GUID_OP, &mGuid->Header, sizeof (EFI_IFR_GUID)+Size) {\r
+    memset (&mGuid->Guid, 0, sizeof (EFI_GUID));\r
+  }\r
+\r
+  VOID SetGuid (IN EFI_GUID *Guid) {\r
+    memcpy (&mGuid->Guid, Guid, sizeof (EFI_GUID));\r
+  }\r
+\r
+  VOID SetData (IN UINT8* DataBuff, IN UINT8 Size) {\r
+    memcpy ((UINT8 *)mGuid + sizeof (EFI_IFR_GUID), DataBuff, Size);\r
+  }\r
+};\r
+\r
 class CIfrDup : public CIfrObj, public CIfrOpHeader {\r
 private:\r
   EFI_IFR_DUP *mDup;\r