/** @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
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
#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
\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
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
#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
SVfrDataType *mFieldType;\r
UINT32 mOffset;\r
UINT32 mArrayNum;\r
+ BOOLEAN mIsBitField;\r
+ UINT8 mBitWidth;\r
+ UINT32 mBitOffset;\r
SVfrDataField *mNext;\r
};\r
\r
UINT8 mType;\r
UINT32 mAlign;\r
UINT32 mTotalSize;\r
+ BOOLEAN mHasBitField;\r
SVfrDataField *mMembers;\r
SVfrDataType *mNext;\r
};\r
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
\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
\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
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
SVfrDataType *mDataType;\r
\r
// NameValue Storage\r
- struct {\r
+ struct {\r
EFI_STRING_ID *mNameTable;\r
UINT32 mTableSize;\r
} mNameSpace;\r
\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
} 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
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
\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
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
\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
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
\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
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
\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
\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
UINT32 GetUnicodeStringTextSize (\r
IN UINT8 *StringSrc\r
);\r
- \r
+\r
BOOLEAN GetBestLanguage (\r
IN CONST CHAR8 *SupportedLanguages,\r
IN CHAR8 *Language\r
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