/** @file\r
Parser for IFR binary encoding.\r
\r
-Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2007 - 2019, Intel Corporation. All rights reserved.<BR>\r
SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
return Statement;\r
}\r
\r
-/**\r
- Convert a numeric value to a Unicode String and insert it to String Package.\r
- This string is used as the Unicode Name for the EFI Variable. This is to support\r
- the deprecated vareqval opcode.\r
-\r
- @param FormSet The FormSet.\r
- @param Statement The numeric question whose VarStoreInfo.VarName is the\r
- numeric value which is used to produce the Unicode Name\r
- for the EFI Variable.\r
-\r
- If the Statement is NULL, the ASSERT.\r
- If the opcode is not Numeric, then ASSERT.\r
-\r
- @retval EFI_SUCCESS The funtion always succeeds.\r
-**/\r
-EFI_STATUS\r
-UpdateCheckBoxStringToken (\r
- IN CONST FORM_BROWSER_FORMSET *FormSet,\r
- IN FORM_BROWSER_STATEMENT *Statement\r
- )\r
-{\r
- CHAR16 Str[MAXIMUM_VALUE_CHARACTERS];\r
- EFI_STRING_ID Id;\r
-\r
- ASSERT (Statement != NULL);\r
- ASSERT (Statement->Operand == EFI_IFR_NUMERIC_OP);\r
-\r
- UnicodeValueToStringS (Str, sizeof (Str), 0, Statement->VarStoreInfo.VarName, MAXIMUM_VALUE_CHARACTERS - 1);\r
-\r
- Id = HiiSetString (FormSet->HiiHandle, 0, Str, NULL);\r
- if (Id == 0) {\r
- return EFI_OUT_OF_RESOURCES;\r
- }\r
-\r
- Statement->VarStoreInfo.VarName = Id;\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- Check if the next opcode is the EFI_IFR_EXTEND_OP_VAREQNAME.\r
-\r
- @param OpCodeData The current opcode.\r
-\r
- @retval TRUE Yes.\r
- @retval FALSE No.\r
-**/\r
-BOOLEAN\r
-IsNextOpCodeGuidedVarEqName (\r
- IN UINT8 *OpCodeData\r
- )\r
-{\r
- //\r
- // Get next opcode\r
- //\r
- OpCodeData += ((EFI_IFR_OP_HEADER *) OpCodeData)->Length;\r
- if (*OpCodeData == EFI_IFR_GUID_OP) {\r
- if (CompareGuid (&gEfiIfrFrameworkGuid, (EFI_GUID *)(OpCodeData + sizeof (EFI_IFR_OP_HEADER)))) {\r
- //\r
- // Specific GUIDed opcodes to support IFR generated from Framework HII VFR\r
- //\r
- if ((((EFI_IFR_GUID_VAREQNAME *) OpCodeData)->ExtendOpCode) == EFI_IFR_EXTEND_OP_VAREQNAME) {\r
- return TRUE;\r
- }\r
- }\r
- }\r
-\r
- return FALSE;\r
-}\r
-\r
/**\r
Initialize Question's members.\r
\r
LIST_ENTRY *Link;\r
FORMSET_STORAGE *Storage;\r
NAME_VALUE_NODE *NameValueNode;\r
- EFI_STATUS Status;\r
BOOLEAN Find;\r
\r
Statement = CreateStatement (OpCodeData, FormSet, Form);\r
return Statement;\r
}\r
\r
- //\r
- // Take a look at next OpCode to see whether it is a GUIDed opcode to support\r
- // Framework Compatibility\r
- //\r
- if (FeaturePcdGet (PcdFrameworkCompatibilitySupport)) {\r
- if ((*OpCodeData == EFI_IFR_NUMERIC_OP) && IsNextOpCodeGuidedVarEqName (OpCodeData)) {\r
- Status = UpdateCheckBoxStringToken (FormSet, Statement);\r
- if (EFI_ERROR (Status)) {\r
- return NULL;\r
- }\r
- }\r
- }\r
-\r
//\r
// Find Storage for this Question\r
//\r