]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/C/VfrCompile/VfrUtilityLib.h
BaseTools: Enable structure pcd in FDF file
[mirror_edk2.git] / BaseTools / Source / C / VfrCompile / VfrUtilityLib.h
index 2e06e4f1672ce1925e47f4775c00b8b6cce24055..8c538a018dba8890a4f03b9af3caaed092ff3220 100644 (file)
@@ -1,15 +1,15 @@
 /** @file\r
-  \r
+\r
   Vfr common library functions.\r
 \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
-http://opensource.org/licenses/bsd-license.php                                            \r
-                                                                                          \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+Copyright (c) 2004 - 2018, 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
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 \r
 **/\r
 \r
@@ -22,7 +22,9 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include "VfrError.h"\r
 \r
 extern BOOLEAN  VfrCompatibleMode;\r
+static EFI_GUID gEdkiiIfrBitVarGuid = EDKII_IFR_BIT_VARSTORE_GUID;\r
 \r
+#define MAX_BIT_WIDTH                      32\r
 #define MAX_NAME_LEN                       64\r
 #define MAX_STRING_LEN                     0x100\r
 #define DEFAULT_ALIGN                      1\r
@@ -55,6 +57,10 @@ struct SConfigInfo {
 \r
   SConfigInfo (IN UINT8, IN UINT16, IN UINT32, IN EFI_IFR_TYPE_VALUE);\r
   ~SConfigInfo (VOID);\r
+\r
+private:\r
+  SConfigInfo (IN CONST SConfigInfo&);             // Prevent copy-construction\r
+  SConfigInfo& operator= (IN CONST SConfigInfo&);  // Prevent assignment\r
 };\r
 \r
 struct SConfigItem {\r
@@ -68,6 +74,10 @@ public:
   SConfigItem (IN CHAR8 *, IN EFI_GUID *, IN CHAR8 *);\r
   SConfigItem (IN CHAR8 *, IN EFI_GUID *, IN CHAR8 *, IN UINT8, IN UINT16, IN UINT16, IN EFI_IFR_TYPE_VALUE);\r
   virtual ~SConfigItem ();\r
+\r
+private:\r
+  SConfigItem (IN CONST SConfigItem&);             // Prevent copy-construction\r
+  SConfigItem& operator= (IN CONST SConfigItem&);  // Prevent assignment\r
 };\r
 \r
 class CVfrBufferConfig {\r
@@ -90,6 +100,10 @@ public:
 #endif\r
   virtual VOID    Close (VOID);\r
   virtual VOID    OutputCFile (IN FILE *, IN CHAR8 *);\r
+\r
+private:\r
+  CVfrBufferConfig (IN CONST CVfrBufferConfig&);             // Prevent copy-construction\r
+  CVfrBufferConfig& operator= (IN CONST CVfrBufferConfig&);  // Prevent assignment\r
 };\r
 \r
 extern CVfrBufferConfig gCVfrBufferConfig;\r
@@ -104,6 +118,9 @@ struct SVfrDataField {
   SVfrDataType              *mFieldType;\r
   UINT32                    mOffset;\r
   UINT32                    mArrayNum;\r
+  BOOLEAN                   mIsBitField;\r
+  UINT8                     mBitWidth;\r
+  UINT32                    mBitOffset;\r
   SVfrDataField             *mNext;\r
 };\r
 \r
@@ -112,6 +129,7 @@ struct SVfrDataType {
   UINT8                     mType;\r
   UINT32                    mAlign;\r
   UINT32                    mTotalSize;\r
+  BOOLEAN                   mHasBitField;\r
   SVfrDataField             *mMembers;\r
   SVfrDataType              *mNext;\r
 };\r
@@ -157,6 +175,10 @@ struct SVfrPackStackNode {
       return FALSE;\r
     }\r
   }\r
+\r
+private:\r
+  SVfrPackStackNode (IN CONST SVfrPackStackNode&);             // Prevent copy-construction\r
+  SVfrPackStackNode& operator= (IN CONST SVfrPackStackNode&);  // Prevent assignment\r
 };\r
 \r
 class CVfrVarDataTypeDB {\r
@@ -179,9 +201,9 @@ private:
 \r
   EFI_VFR_RETURN_CODE ExtractStructTypeName (IN CHAR8 *&, OUT CHAR8 *);\r
   EFI_VFR_RETURN_CODE GetTypeField (IN CONST CHAR8 *, IN SVfrDataType *, IN SVfrDataField *&);\r
-  EFI_VFR_RETURN_CODE GetFieldOffset (IN SVfrDataField *, IN UINT32, OUT UINT32 &);\r
+  EFI_VFR_RETURN_CODE GetFieldOffset (IN SVfrDataField *, IN UINT32, OUT UINT32 &, IN BOOLEAN);\r
   UINT8               GetFieldWidth (IN SVfrDataField *);\r
-  UINT32              GetFieldSize (IN SVfrDataField *, IN UINT32);\r
+  UINT32              GetFieldSize (IN SVfrDataField *, IN UINT32, IN BOOLEAN);\r
 \r
 public:\r
   CVfrVarDataTypeDB (VOID);\r
@@ -189,27 +211,34 @@ public:
 \r
   VOID                DeclareDataTypeBegin (VOID);\r
   EFI_VFR_RETURN_CODE SetNewTypeName (IN CHAR8 *);\r
-  EFI_VFR_RETURN_CODE DataTypeAddField (IN CHAR8 *, IN CHAR8 *, IN UINT32);\r
+  EFI_VFR_RETURN_CODE DataTypeAddField (IN CHAR8 *, IN CHAR8 *, IN UINT32, IN BOOLEAN);\r
+  EFI_VFR_RETURN_CODE DataTypeAddBitField (IN CHAR8 *, IN CHAR8 *, IN UINT32, IN BOOLEAN);\r
   VOID                DeclareDataTypeEnd (VOID);\r
 \r
   EFI_VFR_RETURN_CODE GetDataType (IN CHAR8 *, OUT SVfrDataType **);\r
   EFI_VFR_RETURN_CODE GetDataTypeSize (IN CHAR8 *, OUT UINT32 *);\r
   EFI_VFR_RETURN_CODE GetDataTypeSize (IN UINT8, OUT UINT32 *);\r
-  EFI_VFR_RETURN_CODE GetDataFieldInfo (IN CHAR8 *, OUT UINT16 &, OUT UINT8 &, OUT UINT32 &);\r
+  EFI_VFR_RETURN_CODE GetDataFieldInfo (IN CHAR8 *, OUT UINT16 &, OUT UINT8 &, OUT UINT32 &, OUT BOOLEAN &);\r
 \r
   EFI_VFR_RETURN_CODE GetUserDefinedTypeNameList (OUT CHAR8 ***, OUT UINT32 *);\r
   EFI_VFR_RETURN_CODE ExtractFieldNameAndArrary (IN CHAR8 *&, OUT CHAR8 *, OUT UINT32 &);\r
+  BOOLEAN             DataTypeHasBitField (IN  CHAR8 *);\r
+  BOOLEAN             IsThisBitField (IN  CHAR8 *);\r
 \r
   BOOLEAN             IsTypeNameDefined (IN CHAR8 *);\r
 \r
   VOID                Dump(IN FILE *);\r
   //\r
-  // First the declared \r
+  // First the declared\r
   //\r
   CHAR8               *mFirstNewDataTypeName;\r
 #ifdef CVFR_VARDATATYPEDB_DEBUG\r
   VOID ParserDB ();\r
 #endif\r
+\r
+private:\r
+  CVfrVarDataTypeDB (IN CONST CVfrVarDataTypeDB&);             // Prevent copy-construction\r
+  CVfrVarDataTypeDB& operator= (IN CONST CVfrVarDataTypeDB&);  // Prevent assignment\r
 };\r
 \r
 extern CVfrVarDataTypeDB  gCVfrVarDataTypeDB;\r
@@ -218,7 +247,8 @@ typedef enum {
   EFI_VFR_VARSTORE_INVALID,\r
   EFI_VFR_VARSTORE_BUFFER,\r
   EFI_VFR_VARSTORE_EFI,\r
-  EFI_VFR_VARSTORE_NAME\r
+  EFI_VFR_VARSTORE_NAME,\r
+  EFI_VFR_VARSTORE_BUFFER_BITS\r
 } EFI_VFR_VARSTORE_TYPE;\r
 \r
 struct SVfrVarStorageNode {\r
@@ -240,7 +270,7 @@ struct SVfrVarStorageNode {
     SVfrDataType            *mDataType;\r
 \r
     // NameValue Storage\r
-       struct {\r
+  struct {\r
       EFI_STRING_ID         *mNameTable;\r
       UINT32                mTableSize;\r
     } mNameSpace;\r
@@ -248,9 +278,13 @@ struct SVfrVarStorageNode {
 \r
 public:\r
   SVfrVarStorageNode (IN EFI_GUID *, IN CHAR8 *, IN EFI_VARSTORE_ID, IN EFI_STRING_ID, IN UINT32, IN BOOLEAN Flag = TRUE);\r
-  SVfrVarStorageNode (IN EFI_GUID *, IN CHAR8 *, IN EFI_VARSTORE_ID, IN SVfrDataType *, IN BOOLEAN Flag = TRUE);\r
+  SVfrVarStorageNode (IN EFI_GUID *, IN CHAR8 *, IN EFI_VARSTORE_ID, IN SVfrDataType *,IN BOOLEAN, IN BOOLEAN Flag = TRUE);\r
   SVfrVarStorageNode (IN CHAR8 *, IN EFI_VARSTORE_ID);\r
   ~SVfrVarStorageNode (VOID);\r
+\r
+private:\r
+  SVfrVarStorageNode (IN CONST SVfrVarStorageNode&);             // Prevent copy-construction\r
+  SVfrVarStorageNode& operator= (IN CONST SVfrVarStorageNode&);  // Prevent assignment\r
 };\r
 \r
 struct EFI_VARSTORE_INFO {\r
@@ -261,6 +295,7 @@ struct EFI_VARSTORE_INFO {
   } mInfo;\r
   UINT8                     mVarType;\r
   UINT32                    mVarTotalSize;\r
+  BOOLEAN                   mIsBitVar;\r
 \r
   EFI_VARSTORE_INFO (VOID);\r
   EFI_VARSTORE_INFO (IN EFI_VARSTORE_INFO &);\r
@@ -298,15 +333,15 @@ private:
   BOOLEAN         ChekVarStoreIdFree (IN EFI_VARSTORE_ID);\r
   VOID            MarkVarStoreIdUsed (IN EFI_VARSTORE_ID);\r
   VOID            MarkVarStoreIdUnused (IN EFI_VARSTORE_ID);\r
-  EFI_VARSTORE_ID CheckGuidField (IN SVfrVarStorageNode *, \r
-                                  IN EFI_GUID *, \r
-                                  IN BOOLEAN *, \r
+  EFI_VARSTORE_ID CheckGuidField (IN SVfrVarStorageNode *,\r
+                                  IN EFI_GUID *,\r
+                                  IN BOOLEAN *,\r
                                   OUT EFI_VFR_RETURN_CODE *);\r
 \r
 public:\r
   CVfrDataStorage ();\r
   ~CVfrDataStorage ();\r
-  \r
+\r
   SVfrVarStorageNode * GetBufferVarStoreList () {\r
     return mBufferVarStoreList;\r
   }\r
@@ -319,7 +354,7 @@ public:
 \r
   EFI_VFR_RETURN_CODE DeclareEfiVarStore (IN CHAR8 *, IN EFI_GUID *, IN EFI_STRING_ID, IN UINT32, IN BOOLEAN Flag = TRUE);\r
 \r
-  EFI_VFR_RETURN_CODE DeclareBufferVarStore (IN CHAR8 *, IN EFI_GUID *, IN CVfrVarDataTypeDB *, IN CHAR8 *, IN EFI_VARSTORE_ID, IN BOOLEAN Flag = TRUE);\r
+  EFI_VFR_RETURN_CODE DeclareBufferVarStore (IN CHAR8 *, IN EFI_GUID *, IN CVfrVarDataTypeDB *, IN CHAR8 *, IN EFI_VARSTORE_ID, IN BOOLEAN, IN BOOLEAN Flag = TRUE);\r
 \r
   EFI_VFR_RETURN_CODE GetVarStoreId (IN CHAR8 *, OUT EFI_VARSTORE_ID *, IN EFI_GUID *VarGuid = NULL);\r
   EFI_VFR_VARSTORE_TYPE GetVarStoreType (IN EFI_VARSTORE_ID);\r
@@ -332,6 +367,10 @@ public:
   EFI_VFR_RETURN_CODE GetNameVarStoreInfo (IN EFI_VARSTORE_INFO *, IN UINT32);\r
   EFI_VFR_RETURN_CODE AddBufferVarStoreFieldInfo (IN EFI_VARSTORE_INFO *);\r
   EFI_VFR_RETURN_CODE GetBufferVarStoreFieldInfo (IN OUT EFI_VARSTORE_INFO *);\r
+\r
+private:\r
+  CVfrDataStorage (IN CONST CVfrDataStorage&);             // Prevent copy-construction\r
+  CVfrDataStorage& operator= (IN CONST CVfrDataStorage&);  // Prevent assignment\r
 };\r
 \r
 extern CVfrDataStorage gCVfrDataStorage;\r
@@ -357,6 +396,10 @@ struct SVfrQuestionNode {
 \r
   SVfrQuestionNode (IN CHAR8 *, IN CHAR8 *, IN UINT32 BitMask = 0);\r
   ~SVfrQuestionNode ();\r
+\r
+private:\r
+  SVfrQuestionNode (IN CONST SVfrQuestionNode&);             // Prevent copy-construction\r
+  SVfrQuestionNode& operator= (IN CONST SVfrQuestionNode&);  // Prevent assignment\r
 };\r
 \r
 class CVfrQuestionDB {\r
@@ -379,17 +422,21 @@ public:
   VOID                RegisterNewDateQuestion (IN CHAR8 *, IN CHAR8 *, IN OUT EFI_QUESTION_ID &);\r
   VOID                RegisterOldTimeQuestion (IN CHAR8 *, IN CHAR8 *, IN CHAR8 *, IN OUT EFI_QUESTION_ID &);\r
   VOID                RegisterNewTimeQuestion (IN CHAR8 *, IN CHAR8 *, IN OUT EFI_QUESTION_ID &);\r
-  VOID                RegisterRefQuestion (IN CHAR8 *, IN CHAR8 *, IN OUT EFI_QUESTION_ID &);  \r
+  VOID                RegisterRefQuestion (IN CHAR8 *, IN CHAR8 *, IN OUT EFI_QUESTION_ID &);\r
   EFI_VFR_RETURN_CODE UpdateQuestionId (IN EFI_QUESTION_ID, IN EFI_QUESTION_ID);\r
   VOID                GetQuestionId (IN CHAR8 *, IN CHAR8 *, OUT EFI_QUESTION_ID &, OUT UINT32 &, OUT EFI_QUESION_TYPE *QType = NULL);\r
   EFI_VFR_RETURN_CODE FindQuestion (IN EFI_QUESTION_ID);\r
   EFI_VFR_RETURN_CODE FindQuestion (IN CHAR8 *);\r
   VOID                PrintAllQuestion (IN VOID);\r
-  VOID                ResetInit (IN VOID); \r
+  VOID                ResetInit (IN VOID);\r
 \r
   VOID SetCompatibleMode (IN BOOLEAN Mode) {\r
     VfrCompatibleMode = Mode;\r
   }\r
+\r
+private:\r
+  CVfrQuestionDB (IN CONST CVfrQuestionDB&);             // Prevent copy-construction\r
+  CVfrQuestionDB& operator= (IN CONST CVfrQuestionDB&);  // Prevent assignment\r
 };\r
 \r
 struct SVfrDefaultStoreNode {\r
@@ -402,6 +449,10 @@ struct SVfrDefaultStoreNode {
 \r
   SVfrDefaultStoreNode (IN EFI_IFR_DEFAULTSTORE *, IN CHAR8 *, IN EFI_STRING_ID, IN UINT16);\r
   ~SVfrDefaultStoreNode();\r
+\r
+private:\r
+  SVfrDefaultStoreNode (IN CONST SVfrDefaultStoreNode&);             // Prevent copy-construction\r
+  SVfrDefaultStoreNode& operator= (IN CONST SVfrDefaultStoreNode&);  // Prevent assignment\r
 };\r
 \r
 class CVfrDefaultStore {\r
@@ -417,6 +468,10 @@ public:
   BOOLEAN             DefaultIdRegistered (IN UINT16);\r
   EFI_VFR_RETURN_CODE GetDefaultId (IN CHAR8 *, OUT UINT16 *);\r
   EFI_VFR_RETURN_CODE BufferVarStoreAltConfigAdd (IN EFI_VARSTORE_ID, IN EFI_VARSTORE_INFO &, IN CHAR8 *, IN EFI_GUID *, IN UINT8, IN EFI_IFR_TYPE_VALUE);\r
+\r
+private:\r
+  CVfrDefaultStore (IN CONST CVfrDefaultStore&);             // Prevent copy-construction\r
+  CVfrDefaultStore& operator= (IN CONST CVfrDefaultStore&);  // Prevent assignment\r
 };\r
 \r
 extern CVfrDefaultStore gCVfrDefaultStore;\r
@@ -431,6 +486,10 @@ struct SVfrRuleNode {
 \r
   SVfrRuleNode(IN CHAR8 *, IN UINT8);\r
   ~SVfrRuleNode();\r
+\r
+private:\r
+  SVfrRuleNode (IN CONST SVfrRuleNode&);             // Prevent copy-construction\r
+  SVfrRuleNode& operator= (IN CONST SVfrRuleNode&);  // Prevent assignment\r
 };\r
 \r
 class CVfrRulesDB {\r
@@ -444,6 +503,10 @@ public:
 \r
   VOID RegisterRule (IN CHAR8 *);\r
   UINT8 GetRuleId (IN CHAR8 *);\r
+\r
+private:\r
+  CVfrRulesDB (IN CONST CVfrRulesDB&);             // Prevent copy-construction\r
+  CVfrRulesDB& operator= (IN CONST CVfrRulesDB&);  // Prevent assignment\r
 };\r
 \r
 class CVfrStringDB {\r
@@ -460,7 +523,7 @@ private:
   UINT32 GetUnicodeStringTextSize (\r
     IN  UINT8            *StringSrc\r
     );\r
-    \r
+\r
   BOOLEAN GetBestLanguage (\r
     IN CONST CHAR8  *SupportedLanguages,\r
     IN CHAR8        *Language\r
@@ -478,6 +541,9 @@ public:
     IN EFI_STRING_ID StringId\r
     );\r
 \r
+private:\r
+  CVfrStringDB (IN CONST CVfrStringDB&);             // Prevent copy-construction\r
+  CVfrStringDB& operator= (IN CONST CVfrStringDB&);  // Prevent assignment\r
 };\r
 \r
 #endif\r