]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/C/VfrCompile/VfrFormPkg.h
BaseTools: Add reconnect request flag for question.
[mirror_edk2.git] / BaseTools / Source / C / VfrCompile / VfrFormPkg.h
index 25280def9bbc779315cf320edf93e09bdaee11d2..84300a75841b39a10ce85a0edc451563b8dd6173 100644 (file)
@@ -2,7 +2,7 @@
   \r
   The definition of CFormPkg's member function\r
 \r
-Copyright (c) 2004 - 2013, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2004 - 2015, 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
@@ -124,7 +124,7 @@ private:
   SPendingAssign      *PendingAssignList;\r
 \r
 public:\r
-  CFormPkg (IN UINT32 BufferSize);\r
+  CFormPkg (IN UINT32 BufferSize = 4096);\r
   ~CFormPkg ();\r
 \r
   CHAR8             * IfrBinBufferGet (IN UINT32);\r
@@ -310,6 +310,10 @@ public:
   VOID UpdateHeader (IN EFI_IFR_OP_HEADER *Header) {\r
     mHeader = Header;\r
   }\r
+\r
+  UINT8 GetOpCode () {\r
+    return mHeader->OpCode;\r
+  }\r
 };\r
 \r
 extern UINT8 gScopeCount;\r
@@ -368,7 +372,7 @@ public:
   VOID VARSTORE_INFO (OUT EFI_VARSTORE_INFO *Info) {\r
     if (Info != NULL) {\r
       Info->mVarStoreId   = mHeader->VarStoreId;\r
-      memcpy (&Info->mVarStoreId, &mHeader->VarStoreInfo, sizeof (Info->mVarStoreId));\r
+      memmove (&Info->mVarStoreId, &mHeader->VarStoreInfo, sizeof (Info->mVarStoreId));\r
     }\r
   }\r
 \r
@@ -418,7 +422,11 @@ public:
     if (_FLAG_TEST_AND_CLEAR (Flags, EFI_IFR_FLAG_RESET_REQUIRED)) {\r
       mHeader->Flags |= EFI_IFR_FLAG_RESET_REQUIRED;\r
     }\r
-    \r
+\r
+    if (_FLAG_TEST_AND_CLEAR (Flags, EFI_IFR_FLAG_RECONNECT_REQUIRED)) {\r
+      mHeader->Flags |= EFI_IFR_FLAG_RECONNECT_REQUIRED;\r
+    }\r
+\r
     //\r
     //  Set LateCheck Flag to compatible for framework flag\r
     //  but it uses 0x20 as its flag, if in the future UEFI may take this flag\r
@@ -595,6 +603,7 @@ public:
 \r
 static CIfrQuestionHeader *gCurrentQuestion  = NULL;\r
 static CIfrMinMaxStepData *gCurrentMinMaxData = NULL;\r
+static BOOLEAN            gIsOrderedList = FALSE;\r
 \r
 /*\r
  * The definition of all of the UEFI IFR Objects\r
@@ -615,7 +624,7 @@ public:
   }\r
 \r
   VOID SetGuid (IN EFI_GUID *Guid) {\r
-    memcpy (&mFormSet->Guid, Guid, sizeof (EFI_GUID));\r
+    memmove (&mFormSet->Guid, Guid, sizeof (EFI_GUID));\r
   }\r
 \r
   VOID SetFormSetTitle (IN EFI_STRING_ID FormSetTitle) {\r
@@ -627,7 +636,7 @@ public:
   }\r
 \r
   VOID SetClassGuid (IN EFI_GUID *Guid) {\r
-    memcpy (&(mClassGuid[mFormSet->Flags++]), Guid, sizeof (EFI_GUID));\r
+    memmove (&(mClassGuid[mFormSet->Flags++]), Guid, sizeof (EFI_GUID));\r
   }\r
 \r
   UINT8 GetFlags() {\r
@@ -749,7 +758,7 @@ public:
       IncLength (sizeof (EFI_IFR_FORM_MAP_METHOD));\r
 \r
       mMethodMap->MethodTitle = MethodTitle;\r
-      memcpy (&(mMethodMap->MethodIdentifier), MethodGuid, sizeof (EFI_GUID));\r
+      memmove (&(mMethodMap->MethodIdentifier), MethodGuid, sizeof (EFI_GUID));\r
       mMethodMap ++;\r
     }\r
   }\r
@@ -769,7 +778,7 @@ public:
   }\r
 \r
   VOID SetGuid (IN EFI_GUID *Guid) {\r
-    memcpy (&mVarStore->Guid, Guid, sizeof (EFI_GUID));\r
+    memmove (&mVarStore->Guid, Guid, sizeof (EFI_GUID));\r
   }\r
 \r
   VOID SetVarStoreId (IN EFI_VARSTORE_ID VarStoreId) {\r
@@ -809,7 +818,7 @@ public:
   }\r
 \r
   VOID SetGuid (IN EFI_GUID *Guid) {\r
-    memcpy (&mVarStoreEfi->Guid, Guid, sizeof (EFI_GUID));\r
+    memmove (&mVarStoreEfi->Guid, Guid, sizeof (EFI_GUID));\r
   }\r
 \r
   VOID SetVarStoreId (IN UINT16 VarStoreId) {\r
@@ -863,7 +872,7 @@ public:
   }\r
 \r
   VOID SetGuid (IN EFI_GUID *Guid) {\r
-    memcpy (&mVarStoreNameValue->Guid, Guid, sizeof (EFI_GUID));\r
+    memmove (&mVarStoreNameValue->Guid, Guid, sizeof (EFI_GUID));\r
   }\r
 \r
   VOID SetVarStoreId (IN UINT16 VarStoreId) {\r
@@ -938,7 +947,7 @@ public:
         CIfrOpHeader (EFI_IFR_DEFAULT_OP, &mDefault->Header, Size) {\r
     mDefault->Type      = Type;\r
     mDefault->DefaultId = DefaultId;\r
-    memcpy (&(mDefault->Value), &Value, Size - OFFSET_OF (EFI_IFR_DEFAULT, Value));\r
+    memmove (&(mDefault->Value), &Value, Size - OFFSET_OF (EFI_IFR_DEFAULT, Value));\r
   }\r
 \r
   VOID SetDefaultId (IN UINT16 DefaultId) {\r
@@ -950,7 +959,7 @@ public:
   }\r
 \r
   VOID SetValue (IN EFI_IFR_TYPE_VALUE Value) {\r
-    memcpy (&mDefault->Value, &Value, mDefault->Header.Length - OFFSET_OF (EFI_IFR_DEFAULT, Value));\r
+    memmove (&mDefault->Value, &Value, mDefault->Header.Length - OFFSET_OF (EFI_IFR_DEFAULT, Value));\r
   }\r
 };\r
 \r
@@ -1343,7 +1352,7 @@ public:
     UpdateCIfrMinMaxStepData(&mNumeric->data);\r
   }\r
 \r
-  EFI_VFR_RETURN_CODE SetFlags (IN UINT8 HFlags, IN UINT8 LFlags) {\r
+  EFI_VFR_RETURN_CODE SetFlags (IN UINT8 HFlags, IN UINT8 LFlags, BOOLEAN DisplaySettingsSpecified = FALSE) {\r
     EFI_VFR_RETURN_CODE Ret;\r
 \r
     Ret = CIfrQuestionHeader::SetFlags (HFlags);\r
@@ -1351,13 +1360,17 @@ public:
       return Ret;\r
     }\r
 \r
-    if (LFlags & EFI_IFR_DISPLAY) {\r
-      mNumeric->Flags = LFlags;\r
-    } else {\r
+    if (DisplaySettingsSpecified == FALSE) {\r
       mNumeric->Flags = LFlags | EFI_IFR_DISPLAY_UINT_DEC;\r
+    } else {\r
+      mNumeric->Flags = LFlags;\r
     }\r
     return VFR_RETURN_SUCCESS;\r
   }\r
+\r
+  UINT8 GetNumericFlags () {\r
+    return mNumeric->Flags;\r
+  }\r
 };\r
 \r
 class CIfrOneOf : public CIfrObj, public CIfrOpHeader, public CIfrQuestionHeader, public CIfrMinMaxStepData {\r
@@ -1673,7 +1686,7 @@ public:
   }\r
 \r
   VOID SetRefreshEventGroutId (IN EFI_GUID *RefreshEventGroupId) {\r
-    memcpy (&mRefreshId->RefreshEventGroupId, RefreshEventGroupId, sizeof (EFI_GUID));\r
+    memmove (&mRefreshId->RefreshEventGroupId, RefreshEventGroupId, sizeof (EFI_GUID));\r
   }\r
 };\r
 \r
@@ -1710,6 +1723,7 @@ public:
   }\r
 \r
   EFI_VFR_RETURN_CODE SetFlags (IN UINT8 LFlags) {\r
+    mOneOfOption->Flags = 0;\r
     if (_FLAG_TEST_AND_CLEAR (LFlags, EFI_IFR_OPTION_DEFAULT)) {\r
       mOneOfOption->Flags |= EFI_IFR_OPTION_DEFAULT;\r
     }\r
@@ -1755,7 +1769,7 @@ public:
   }\r
 \r
   VOID SetValue (IN EFI_IFR_TYPE_VALUE Value) {\r
-    memcpy (&mOneOfOption->Value, &Value, mOneOfOption->Header.Length - OFFSET_OF (EFI_IFR_ONE_OF_OPTION, Value));\r
+    memmove (&mOneOfOption->Value, &Value, mOneOfOption->Header.Length - OFFSET_OF (EFI_IFR_ONE_OF_OPTION, Value));\r
   }\r
 \r
   UINT8 GetFlags (VOID) {\r
@@ -1904,11 +1918,11 @@ public:
   }\r
 \r
   VOID SetGuid (IN EFI_GUID *Guid) {\r
-    memcpy (&mGuid->Guid, Guid, sizeof (EFI_GUID));\r
+    memmove (&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
+    memmove ((UINT8 *)mGuid + sizeof (EFI_IFR_GUID), DataBuff, Size);\r
   }\r
 };\r
 \r
@@ -2214,7 +2228,7 @@ public:
   }\r
 \r
   VOID SetPermissions (IN EFI_GUID *Permissions) {\r
-    memcpy (&mSecurity->Permissions, Permissions, sizeof (EFI_GUID));\r
+    memmove (&mSecurity->Permissions, Permissions, sizeof (EFI_GUID));\r
   }\r
 };\r
 \r
@@ -2654,6 +2668,21 @@ public:
   }\r
 };\r
 \r
+class CIfrMatch2 : public CIfrObj, public CIfrOpHeader {\r
+private:\r
+  EFI_IFR_MATCH2 *mMatch2;\r
+\r
+public:\r
+  CIfrMatch2 (\r
+  IN UINT32   LineNo,\r
+  IN EFI_GUID *Guid\r
+  ) : CIfrObj (EFI_IFR_MATCH2_OP, (CHAR8 **)&mMatch2),\r
+      CIfrOpHeader (EFI_IFR_MATCH2_OP, &mMatch2->Header) {\r
+    SetLineNo (LineNo);\r
+    memmove (&mMatch2->SyntaxType, Guid, sizeof (EFI_GUID));\r
+  }\r
+};\r
+\r
 class CIfrMultiply : public CIfrObj, public CIfrOpHeader {\r
 private:\r
   EFI_IFR_MULTIPLY *mMultiply;\r