+class CIfrFormMap : public CIfrObj, public CIfrOpHeader {\r
+private:\r
+ EFI_IFR_FORM_MAP *mFormMap;\r
+ EFI_IFR_FORM_MAP_METHOD *mMethodMap;\r
+\r
+public:\r
+ CIfrFormMap () : CIfrObj (EFI_IFR_FORM_MAP_OP, (CHAR8 **)NULL, sizeof (EFI_IFR_FORM_MAP), TRUE),\r
+ CIfrOpHeader (EFI_IFR_FORM_MAP_OP, &(GetObjBinAddr<EFI_IFR_FORM_MAP>())->Header), mFormMap(GetObjBinAddr<EFI_IFR_FORM_MAP>()) {\r
+ mFormMap->FormId = 0;\r
+ mMethodMap = (EFI_IFR_FORM_MAP_METHOD *) (mFormMap + 1);\r
+ }\r
+\r
+ EFI_VFR_RETURN_CODE SetFormId (IN EFI_FORM_ID FormId) {\r
+ if (FormId == 0) {\r
+ //\r
+ // FormId can't be 0.\r
+ //\r
+ return VFR_RETURN_INVALID_PARAMETER;\r
+ }\r
+ if (CIfrFormId::ChekFormIdFree (FormId) == FALSE) {\r
+ return VFR_RETURN_FORMID_REDEFINED;\r
+ }\r
+ mFormMap->FormId = FormId;\r
+ CIfrFormId::MarkFormIdUsed (FormId);\r
+ return VFR_RETURN_SUCCESS;\r
+ }\r
+\r
+ VOID SetFormMapMethod (IN EFI_STRING_ID MethodTitle, IN EFI_GUID *MethodGuid) {\r
+ if (ExpendObjBin (sizeof (EFI_IFR_FORM_MAP_METHOD))) {\r
+ IncLength (sizeof (EFI_IFR_FORM_MAP_METHOD));\r
+\r
+ mMethodMap->MethodTitle = MethodTitle;\r
+ memmove (&(mMethodMap->MethodIdentifier), MethodGuid, sizeof (EFI_GUID));\r
+ mMethodMap ++;\r
+ }\r
+ }\r
+};\r
+\r