]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/C/VfrCompile/VfrFormPkg.h
BaseTools/VfrCompile: Add assignment operator definition for some classes
[mirror_edk2.git] / BaseTools / Source / C / VfrCompile / VfrFormPkg.h
index d2ff72c15551d10e9b34d48e4ead8f4e4b66e1eb..3c7964ac4294051a125777722c73bb13f3c042d7 100644 (file)
@@ -2,7 +2,7 @@
   \r
   The definition of CFormPkg's member function\r
 \r
-Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2004 - 2016, 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
@@ -154,7 +154,8 @@ public:
     );\r
   EFI_VFR_RETURN_CODE AdjustDynamicInsertOpcode (\r
     IN CHAR8              *LastFormEndAddr,\r
-    IN CHAR8              *InsertOpcodeAddr\r
+    IN CHAR8              *InsertOpcodeAddr,\r
+    IN BOOLEAN            CreateOpcodeAfterParsingVfr\r
     );\r
   CHAR8 *             GetBufAddrBaseOnOffset (\r
     IN UINT32             Offset\r
@@ -177,8 +178,23 @@ struct SIfrRecord {
   ~SIfrRecord (VOID);\r
 };\r
 \r
+\r
 #define EFI_IFR_RECORDINFO_IDX_INVALUD 0xFFFFFF\r
 #define EFI_IFR_RECORDINFO_IDX_START   0x0\r
+#define EFI_HII_MAX_SUPPORT_DEFAULT_TYPE  0x08\r
+\r
+struct QuestionDefaultRecord {\r
+  BOOLEAN     mIsDefaultIdExist[EFI_HII_MAX_SUPPORT_DEFAULT_TYPE]; // Record the default id in mAllDefaultIdArray[EFI_HII_MAX_SUPPORT_DEFAULT_TYPE]\r
+                                                                   // whether exists in current question.\r
+\r
+  SIfrRecord  *mDefaultValueRecord;   // Point to the default value record in RecordList which has smallest default Id.\r
+                                      // (for checkbox it may be NULL, because the dedault value is always true when the flag is set.)\r
+\r
+  BOOLEAN     mIsDefaultOpcode;       // whether the default value with smallest default id is given by default opcode.\r
+                                      // (for oneof and checkbox default info may be given by flag.)\r
+\r
+  UINT16      mDefaultNumber;         // The default number of this question.\r
+};\r
 \r
 class CIfrRecordInfoDB {\r
 private:\r
@@ -186,6 +202,8 @@ private:
   UINT32     mRecordCount;\r
   SIfrRecord *mIfrRecordListHead;\r
   SIfrRecord *mIfrRecordListTail;\r
+  UINT8      mAllDefaultTypeCount;\r
+  UINT16     mAllDefaultIdArray[EFI_HII_MAX_SUPPORT_DEFAULT_TYPE];\r
 \r
   SIfrRecord * GetRecordInfoFromIdx (IN UINT32);\r
   BOOLEAN          CheckQuestionOpCode (IN UINT8);\r
@@ -205,13 +223,20 @@ public:
 \r
   SIfrRecord * GetRecordInfoFromOffset (IN UINT32);\r
   VOID        IfrAdjustOffsetForRecord (VOID);\r
-  BOOLEAN     IfrAdjustDynamicOpcodeInRecords (VOID);\r
+  BOOLEAN     IfrAdjustDynamicOpcodeInRecords (IN BOOLEAN);\r
 \r
   UINT32      IfrRecordRegister (IN UINT32, IN CHAR8 *, IN UINT8, IN UINT32);\r
   VOID        IfrRecordInfoUpdate (IN UINT32, IN UINT32, IN CHAR8*, IN UINT8, IN UINT32);\r
   VOID        IfrRecordOutput (IN FILE *, IN UINT32 LineNo);\r
   VOID        IfrRecordOutput (OUT PACKAGE_DATA &);\r
-  EFI_VFR_RETURN_CODE  IfrRecordAdjust (VOID);   \r
+  EFI_VFR_RETURN_CODE  IfrRecordAdjust (VOID);\r
+  VOID        IfrUpdateRecordInfoForDynamicOpcode (IN BOOLEAN);\r
+  VOID        IfrCheckAddDefaultRecord (IN BOOLEAN, IN BOOLEAN);\r
+  VOID        IfrGetDefaultStoreInfo ();\r
+  VOID        IfrCreateDefaultRecord (IN UINT8 Size,IN UINT16 DefaultId,IN UINT8 Type,IN UINT32 LineNo,IN EFI_IFR_TYPE_VALUE Value);\r
+  VOID        IfrCreateDefaultForQuestion (IN  SIfrRecord *, IN  QuestionDefaultRecord *);\r
+  VOID        IfrParseDefaulInfoInQuestion (IN  SIfrRecord *, OUT QuestionDefaultRecord *);\r
+  VOID        IfrAddDefaultToBufferConfig (IN  UINT16, IN  SIfrRecord *,IN  EFI_IFR_TYPE_VALUE);\r
 };\r
 \r
 extern CIfrRecordInfoDB gCIfrRecordInfoDB;\r
@@ -282,6 +307,7 @@ private:
 public:\r
   CIfrOpHeader (IN UINT8 OpCode, IN VOID *StartAddr, IN UINT8 Length = 0);\r
   CIfrOpHeader (IN CIfrOpHeader &);\r
+  CIfrOpHeader& operator=(IN CONST CIfrOpHeader &);\r
 \r
   VOID IncLength (UINT8 Size) {\r
     if ((mHeader->Length + Size) > mHeader->Length) {\r
@@ -422,7 +448,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
@@ -600,6 +630,7 @@ public:
 static CIfrQuestionHeader *gCurrentQuestion  = NULL;\r
 static CIfrMinMaxStepData *gCurrentMinMaxData = NULL;\r
 static BOOLEAN            gIsOrderedList = FALSE;\r
+static BOOLEAN            gIsStringOp = FALSE;\r
 \r
 /*\r
  * The definition of all of the UEFI IFR Objects\r