\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
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
);\r
};\r
\r
-extern CFormPkg gCFormPkg;\r
+extern CFormPkg gCFormPkg;\r
+extern CVfrStringDB gCVfrStringDB;\r
\r
struct SIfrRecord {\r
UINT32 mLineNo;\r
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
\r
VOID DecLength (UINT8 Size) {\r
if (mHeader->Length >= Size) {\r
- mHeader -= Size;\r
+ mHeader->Length -= Size;\r
}\r
}\r
\r
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
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
}\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
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
}\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
}\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
}\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