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