80 Size = EXPRESSION_STACK_SIZE_INCREMENT;
81 if (*StackPtr !=
NULL) {
82 Size = Size + (*StackEnd - *Stack);
86 if (NewStack ==
NULL) {
87 return EFI_OUT_OF_RESOURCES;
90 if (*StackPtr !=
NULL) {
109 *StackPtr = NewStack + (*StackPtr - *Stack);
111 *StackEnd = NewStack + Size;
141 if (*StackPtr >= *StackEnd) {
145 Status =
GrowStack (Stack, StackPtr, StackEnd);
146 if (EFI_ERROR (Status)) {
155 if (Data->Type == EFI_IFR_TYPE_BUFFER) {
157 if ((*StackPtr)->Buffer ==
NULL) {
158 return EFI_OUT_OF_RESOURCES;
162 *StackPtr = *StackPtr + 1;
188 if (*StackPtr == Stack) {
189 return EFI_ACCESS_DENIED;
195 *StackPtr = *StackPtr - 1;
209 mCurrentExpressionPointer = mCurrentExpressionStack;
210 mFormExpressionPointer = mFormExpressionStack;
211 mStatementExpressionPointer = mStatementExpressionStack;
212 mOptionExpressionPointer = mOptionExpressionStack;
231 Data.Type = EFI_IFR_TYPE_NUM_SIZE_64;
232 Data.Value.u64 = (UINT64)(
UINTN)Pointer;
235 &mCurrentExpressionStack,
236 &mCurrentExpressionPointer,
237 &mCurrentExpressionEnd,
260 mCurrentExpressionStack,
261 &mCurrentExpressionPointer,
265 *Pointer = (VOID *)(
UINTN)Data.Value.u64;
279 mMapExpressionListPointer = mMapExpressionListStack;
308 Size = EXPRESSION_STACK_SIZE_INCREMENT;
309 if (*StackPtr !=
NULL) {
310 Size = Size + (*StackEnd - *Stack);
314 if (NewStack ==
NULL) {
315 return EFI_OUT_OF_RESOURCES;
318 if (*StackPtr !=
NULL) {
325 (*StackEnd - *Stack) * MemberSize
337 *StackPtr = NewStack + (*StackPtr - *Stack);
339 *StackEnd = NewStack + Size;
369 if (*StackPtr >= *StackEnd) {
374 if (EFI_ERROR (Status)) {
383 *StackPtr = *StackPtr + 1;
409 if (*StackPtr == Stack) {
410 return EFI_ACCESS_DENIED;
416 *StackPtr = *StackPtr - 1;
433 IN EXPRESS_LEVEL Level
438 return mFormExpressionPointer - mFormExpressionStack;
439 case ExpressStatement:
440 return mStatementExpressionPointer - mStatementExpressionStack;
442 return mOptionExpressionPointer - mOptionExpressionStack;
460 IN EXPRESS_LEVEL Level
465 return mFormExpressionStack;
466 case ExpressStatement:
467 return mStatementExpressionStack;
469 return mOptionExpressionStack;
490 IN EXPRESS_LEVEL Level
496 &mFormExpressionStack,
497 &mFormExpressionPointer,
501 case ExpressStatement:
503 &mStatementExpressionStack,
504 &mStatementExpressionPointer,
505 &mStatementExpressionEnd,
510 &mOptionExpressionStack,
511 &mOptionExpressionPointer,
512 &mOptionExpressionEnd,
517 return EFI_INVALID_PARAMETER;
533 IN EXPRESS_LEVEL Level
541 mFormExpressionStack,
542 &mFormExpressionPointer,
546 case ExpressStatement:
548 mStatementExpressionStack,
549 &mStatementExpressionPointer,
555 mOptionExpressionStack,
556 &mOptionExpressionPointer,
562 return EFI_INVALID_PARAMETER;
582 Data.Type = EFI_IFR_TYPE_NUM_SIZE_64;
583 Data.Value.u64 = (UINT64)(
UINTN)Pointer;
586 &mMapExpressionListStack,
587 &mMapExpressionListPointer,
588 &mMapExpressionListEnd,
611 mMapExpressionListStack,
612 &mMapExpressionListPointer,
616 *Pointer = (VOID *)(
UINTN)Data.Value.u64;
630 mOpCodeScopeStackPointer = mOpCodeScopeStack;
650 Data.Type = EFI_IFR_TYPE_NUM_SIZE_8;
651 Data.Value.u8 = Operand;
655 &mOpCodeScopeStackPointer,
656 &mOpCodeScopeStackEnd,
681 &mOpCodeScopeStackPointer,
685 *Operand = Data.Value.u8;
714 Size = EXPRESSION_STACK_SIZE_INCREMENT;
715 if (*StackPtr !=
NULL) {
716 Size = Size + (*StackEnd - *Stack);
720 if (NewStack ==
NULL) {
721 return EFI_OUT_OF_RESOURCES;
724 if (*StackPtr !=
NULL) {
743 *StackPtr = NewStack + (*StackPtr - *Stack);
745 *StackEnd = NewStack + Size;
775 if (*StackPtr >= *StackEnd) {
780 if (EFI_ERROR (Status)) {
789 *StackPtr = *StackPtr + 1;
816 if (*StackPtr == Stack) {
817 return EFI_ACCESS_DENIED;
823 *StackPtr = *StackPtr - 1;
843 &mExpressionDependencyStack,
844 &mExpressionDependencyPointer,
845 &mExpressionDependencyEnd,
865 mExpressionDependencyStack,
866 &mExpressionDependencyPointer,
895 while (!
IsNull (&Expression->OpCodeListHead, Link)) {
896 ExpressionOpCode = HII_EXPRESSION_OPCODE_FROM_LINK (Link);
897 Link =
GetNextNode (&Expression->OpCodeListHead, Link);
901 if (DepExpressionOpCode ==
NULL) {
902 return EFI_OUT_OF_RESOURCES;
905 switch (ExpressionOpCode->Operand) {
909 case EFI_IFR_FALSE_OP:
911 case EFI_IFR_ONES_OP:
912 case EFI_IFR_TRUE_OP:
913 case EFI_IFR_UINT8_OP:
914 case EFI_IFR_UINT16_OP:
915 case EFI_IFR_UINT32_OP:
916 case EFI_IFR_UINT64_OP:
917 case EFI_IFR_UNDEFINED_OP:
918 case EFI_IFR_VERSION_OP:
919 case EFI_IFR_ZERO_OP:
920 DepExpressionOpCode->
ConstantExp.Operand = ExpressionOpCode->Operand;
929 DepExpressionOpCode->
DupExp.Operand = ExpressionOpCode->Operand;
933 case EFI_IFR_EQ_ID_VAL_OP:
934 DepExpressionOpCode->EqIdValExp.Operand = ExpressionOpCode->Operand;
935 CopyMem (&DepExpressionOpCode->EqIdValExp.QuestionId, &ExpressionOpCode->ExtraData.EqIdValData.
QuestionId, sizeof (EFI_QUESTION_ID));
936 CopyMem (&DepExpressionOpCode->EqIdValExp.Value, &ExpressionOpCode->ExtraData.EqIdValData.
Value, sizeof (
EFI_HII_VALUE));
940 case EFI_IFR_EQ_ID_ID_OP:
941 DepExpressionOpCode->EqIdIdExp.Operand = ExpressionOpCode->Operand;
942 CopyMem (&DepExpressionOpCode->EqIdIdExp.QuestionId1, &ExpressionOpCode->ExtraData.EqIdIdData.QuestionId1, sizeof (EFI_QUESTION_ID));
943 CopyMem (&DepExpressionOpCode->EqIdIdExp.QuestionId2, &ExpressionOpCode->ExtraData.EqIdIdData.QuestionId2, sizeof (EFI_QUESTION_ID));
947 case EFI_IFR_EQ_ID_VAL_LIST_OP:
948 DepExpressionOpCode->EqIdListExp.Operand = ExpressionOpCode->Operand;
949 DepExpressionOpCode->EqIdListExp.ListLength = ExpressionOpCode->ExtraData.EqIdListData.ListLength;
950 CopyMem (&DepExpressionOpCode->EqIdListExp.QuestionId, &ExpressionOpCode->ExtraData.EqIdListData.
QuestionId, sizeof (EFI_QUESTION_ID));
953 DepExpressionOpCode->EqIdListExp.ListLength * sizeof (UINT16),
954 ExpressionOpCode->ExtraData.EqIdListData.ValueList
956 if (DepExpressionOpCode->EqIdListExp.ValueList ==
NULL) {
957 return EFI_OUT_OF_RESOURCES;
964 DepExpressionOpCode->GetExp.Operand = ExpressionOpCode->Operand;
965 DepExpressionOpCode->GetExp.VarStorage = ExpressionOpCode->ExtraData.GetSetData.VarStorage;
966 CopyMem (&DepExpressionOpCode->GetExp.VarStoreInfo.VarName, &ExpressionOpCode->ExtraData.GetSetData.VarStoreInfo.VarName, sizeof (EFI_STRING_ID));
967 CopyMem (&DepExpressionOpCode->GetExp.VarStoreInfo.VarOffset, &ExpressionOpCode->ExtraData.GetSetData.VarStoreInfo.VarOffset, sizeof (UINT16));
968 DepExpressionOpCode->GetExp.VarStoreInfo = ExpressionOpCode->ExtraData.GetSetData.VarStoreInfo;
969 if (ExpressionOpCode->ExtraData.GetSetData.ValueName !=
NULL) {
970 DepExpressionOpCode->GetExp.ValueName = (CHAR16 *)
AllocateCopyPool (
sizeof (ExpressionOpCode->ExtraData.GetSetData.ValueName), ExpressionOpCode->ExtraData.GetSetData.ValueName);
971 if (DepExpressionOpCode->GetExp.ValueName ==
NULL) {
972 return EFI_OUT_OF_RESOURCES;
976 DepExpressionOpCode->GetExp.ValueType = ExpressionOpCode->ExtraData.GetSetData.ValueType;
977 DepExpressionOpCode->GetExp.ValueWidth = ExpressionOpCode->ExtraData.GetSetData.ValueWidth;
981 case EFI_IFR_QUESTION_REF1_OP:
982 DepExpressionOpCode->QuestionRef1Exp.Operand = ExpressionOpCode->Operand;
983 CopyMem (&DepExpressionOpCode->QuestionRef1Exp.QuestionId, &ExpressionOpCode->ExtraData.QuestionRef1Data.
QuestionId, sizeof (EFI_QUESTION_ID));
987 case EFI_IFR_RULE_REF_OP:
988 DepExpressionOpCode->RuleRefExp.Operand = ExpressionOpCode->Operand;
989 DepExpressionOpCode->RuleRefExp.RuleId = ExpressionOpCode->ExtraData.
RuleId;
993 case EFI_IFR_STRING_REF1_OP:
994 DepExpressionOpCode->StringRef1Exp.Operand = ExpressionOpCode->Operand;
995 CopyMem (&DepExpressionOpCode->StringRef1Exp.Value.Value.
string, &ExpressionOpCode->ExtraData.
Value.Value.
string, sizeof (EFI_STRING_ID));
999 case EFI_IFR_THIS_OP:
1000 DepExpressionOpCode->ThisExp.Operand = ExpressionOpCode->Operand;
1001 CopyMem (&DepExpressionOpCode->ThisExp.QuestionId, &ExpressionOpCode->ExtraData.QuestionRef1Data.
QuestionId, sizeof (EFI_QUESTION_ID));
1005 case EFI_IFR_SECURITY_OP:
1006 DepExpressionOpCode->SecurityExp.Operand = ExpressionOpCode->Operand;
1007 CopyMem (&DepExpressionOpCode->SecurityExp.Permissions, &ExpressionOpCode->ExtraData.
Guid, sizeof (
EFI_GUID));
1014 case EFI_IFR_LENGTH_OP:
1015 DepExpressionOpCode->
LengthExp.Operand = ExpressionOpCode->Operand;
1020 case EFI_IFR_NOT_OP:
1021 DepExpressionOpCode->NotExp.Operand = ExpressionOpCode->Operand;
1026 case EFI_IFR_BITWISE_NOT_OP:
1027 DepExpressionOpCode->BitWiseNotExp.Operand = ExpressionOpCode->Operand;
1032 case EFI_IFR_QUESTION_REF2_OP:
1033 DepExpressionOpCode->QuestionRef2Exp.Operand = ExpressionOpCode->Operand;
1038 case EFI_IFR_QUESTION_REF3_OP:
1039 DepExpressionOpCode->QuestionRef3Exp.Operand = ExpressionOpCode->Operand;
1041 CopyMem (&DepExpressionOpCode->QuestionRef3Exp.Guid, &ExpressionOpCode->ExtraData.QuestionRef3Data.
Guid, sizeof (
EFI_GUID));
1046 case EFI_IFR_SET_OP:
1047 DepExpressionOpCode->SetExp.Operand = ExpressionOpCode->Operand;
1048 DepExpressionOpCode->SetExp.VarStorage = ExpressionOpCode->ExtraData.GetSetData.VarStorage;
1049 CopyMem (&DepExpressionOpCode->SetExp.VarStoreInfo.VarName, &ExpressionOpCode->ExtraData.GetSetData.VarStoreInfo.VarName, sizeof (EFI_STRING_ID));
1050 CopyMem (&DepExpressionOpCode->SetExp.VarStoreInfo.VarOffset, &ExpressionOpCode->ExtraData.GetSetData.VarStoreInfo.VarOffset, sizeof (UINT16));
1051 DepExpressionOpCode->SetExp.VarStoreInfo = ExpressionOpCode->ExtraData.GetSetData.VarStoreInfo;
1052 if (ExpressionOpCode->ExtraData.GetSetData.ValueName !=
NULL) {
1053 DepExpressionOpCode->SetExp.ValueName = (CHAR16 *)
AllocateCopyPool (
sizeof (ExpressionOpCode->ExtraData.GetSetData.ValueName), ExpressionOpCode->ExtraData.GetSetData.ValueName);
1054 if (DepExpressionOpCode->SetExp.ValueName ==
NULL) {
1055 return EFI_OUT_OF_RESOURCES;
1059 DepExpressionOpCode->SetExp.ValueType = ExpressionOpCode->ExtraData.GetSetData.ValueType;
1060 DepExpressionOpCode->SetExp.ValueWidth = ExpressionOpCode->ExtraData.GetSetData.ValueWidth;
1065 case EFI_IFR_STRING_REF2_OP:
1066 DepExpressionOpCode->StringRef2Exp.Operand = ExpressionOpCode->Operand;
1071 case EFI_IFR_TO_BOOLEAN_OP:
1072 DepExpressionOpCode->ToBooleanExp.Operand = ExpressionOpCode->Operand;
1077 case EFI_IFR_TO_STRING_OP:
1078 DepExpressionOpCode->ToStringExp.Operand = ExpressionOpCode->Operand;
1079 DepExpressionOpCode->ToStringExp.Format = ExpressionOpCode->ExtraData.
Format;
1084 case EFI_IFR_TO_UINT_OP:
1085 DepExpressionOpCode->ToUintExp.Operand = ExpressionOpCode->Operand;
1090 case EFI_IFR_TO_LOWER_OP:
1091 DepExpressionOpCode->ToLowerExp.Operand = ExpressionOpCode->Operand;
1096 case EFI_IFR_TO_UPPER_OP:
1097 DepExpressionOpCode->ToUpperExp.Operand = ExpressionOpCode->Operand;
1105 case EFI_IFR_ADD_OP:
1106 DepExpressionOpCode->AddExp.Operand = ExpressionOpCode->Operand;
1112 case EFI_IFR_AND_OP:
1113 DepExpressionOpCode->AndExp.Operand = ExpressionOpCode->Operand;
1119 case EFI_IFR_BITWISE_AND_OP:
1120 DepExpressionOpCode->BitwiseAndExp.Operand = ExpressionOpCode->Operand;
1126 case EFI_IFR_BITWISE_OR_OP:
1127 DepExpressionOpCode->BitwiseOrExp.Operand = ExpressionOpCode->Operand;
1133 case EFI_IFR_CATENATE_OP:
1134 DepExpressionOpCode->
CatenateExp.Operand = ExpressionOpCode->Operand;
1140 case EFI_IFR_DIVIDE_OP:
1141 DepExpressionOpCode->DivExp.Operand = ExpressionOpCode->Operand;
1147 case EFI_IFR_EQUAL_OP:
1148 DepExpressionOpCode->EqualExp.Operand = ExpressionOpCode->Operand;
1154 case EFI_IFR_GREATER_EQUAL_OP:
1155 DepExpressionOpCode->GreaterEqualExp.Operand = ExpressionOpCode->Operand;
1161 case EFI_IFR_GREATER_THAN_OP:
1162 DepExpressionOpCode->GreaterThanExp.Operand = ExpressionOpCode->Operand;
1168 case EFI_IFR_LESS_EQUAL_OP:
1169 DepExpressionOpCode->LessEqualExp.Operand = ExpressionOpCode->Operand;
1175 case EFI_IFR_LESS_THAN_OP:
1176 DepExpressionOpCode->LessThanExp.Operand = ExpressionOpCode->Operand;
1182 case EFI_IFR_MATCH_OP:
1183 DepExpressionOpCode->MatchExp.Operand = ExpressionOpCode->Operand;
1189 case EFI_IFR_MATCH2_OP:
1190 DepExpressionOpCode->Match2Exp.Operand = ExpressionOpCode->Operand;
1191 CopyMem (&DepExpressionOpCode->Match2Exp.SyntaxType, &ExpressionOpCode->ExtraData.
Guid, sizeof (
EFI_GUID));
1197 case EFI_IFR_MODULO_OP:
1198 DepExpressionOpCode->ModExp.Operand = ExpressionOpCode->Operand;
1204 case EFI_IFR_MULTIPLY_OP:
1205 DepExpressionOpCode->MultExp.Operand = ExpressionOpCode->Operand;
1211 case EFI_IFR_NOT_EQUAL_OP:
1212 DepExpressionOpCode->NotEqualExp.Operand = ExpressionOpCode->Operand;
1219 DepExpressionOpCode->OrExp.Operand = ExpressionOpCode->Operand;
1225 case EFI_IFR_SHIFT_LEFT_OP:
1226 DepExpressionOpCode->ShiftLeftExp.Operand = ExpressionOpCode->Operand;
1232 case EFI_IFR_SHIFT_RIGHT_OP:
1233 DepExpressionOpCode->ShiftRightExp.Operand = ExpressionOpCode->Operand;
1239 case EFI_IFR_SUBTRACT_OP:
1240 DepExpressionOpCode->SubtractExp.Operand = ExpressionOpCode->Operand;
1249 case EFI_IFR_CONDITIONAL_OP:
1250 DepExpressionOpCode->
ConditionalExp.Operand = ExpressionOpCode->Operand;
1257 case EFI_IFR_FIND_OP:
1258 DepExpressionOpCode->FindExp.Operand = ExpressionOpCode->Operand;
1265 case EFI_IFR_MID_OP:
1266 DepExpressionOpCode->MidExp.Operand = ExpressionOpCode->Operand;
1273 case EFI_IFR_TOKEN_OP:
1274 DepExpressionOpCode->TokenExp.Operand = ExpressionOpCode->Operand;
1281 case EFI_IFR_SPAN_OP:
1282 DepExpressionOpCode->SpanExp.Operand = ExpressionOpCode->Operand;
1292 case EFI_IFR_MAP_OP:
1296 DepExpressionOpCode->MapExp.Operand = ExpressionOpCode->Operand;
1303 Status = EFI_INVALID_PARAMETER;
1316 if (DepExpressionOpCode->MapExp.ExpPair ==
NULL) {
1317 Status = EFI_OUT_OF_RESOURCES;
1321 DepExpressionOpCode->MapExp.ExpPairNo = MapPairCount;
1330 SubExpression = HII_EXPRESSION_FROM_LINK (SubExpressionLink);
1335 DepExpressionOpCode->MapExp.ExpPair[MapPairCount].MatchExp = SubExpression->
RootDependencyExp;
1341 SubExpression = HII_EXPRESSION_FROM_LINK (SubExpressionLink);
1343 DepExpressionOpCode->MapExp.ExpPair[MapPairCount].ReturnExp = SubExpression->
RootDependencyExp;
1382 IN BOOLEAN Evaluate,
1388 EXPRESS_RESULT ReturnVal;
1389 EXPRESS_RESULT CompareOne;
1392 if (ExpList ==
NULL) {
1393 return ExpressFalse;
1396 ASSERT (ExpList->Signature == HII_EXPRESSION_LIST_SIGNATURE);
1403 while (ExpList->Count > Index) {
1405 if (EFI_ERROR (Status)) {
1406 return ExpressFalse;
1414 ReturnVal = ExpressFalse;
1415 for (Index = 0; Index < ExpList->Count; Index++) {
1417 switch (ExpList->Expression[Index]->Type) {
1418 case EFI_HII_EXPRESSION_SUPPRESS_IF:
1419 CompareOne = ExpressSuppress;
1422 case EFI_HII_EXPRESSION_GRAY_OUT_IF:
1423 CompareOne = ExpressGrayOut;
1426 case EFI_HII_EXPRESSION_DISABLE_IF:
1427 CompareOne = ExpressDisable;
1431 return ExpressFalse;
1434 ReturnVal = ReturnVal < CompareOne ? CompareOne : ReturnVal;
BOOLEAN EFIAPI IsNull(IN CONST LIST_ENTRY *List, IN CONST LIST_ENTRY *Node)
LIST_ENTRY *EFIAPI GetNextNode(IN CONST LIST_ENTRY *List, IN CONST LIST_ENTRY *Node)
LIST_ENTRY *EFIAPI GetFirstNode(IN CONST LIST_ENTRY *List)
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
VOID *EFIAPI AllocateZeroPool(IN UINTN AllocationSize)
VOID EFIAPI FreePool(IN VOID *Buffer)
VOID *EFIAPI AllocateCopyPool(IN UINTN AllocationSize, IN CONST VOID *Buffer)
EFI_STATUS GrowDependencyStack(IN OUT HII_DEPENDENCY_EXPRESSION ***Stack, IN OUT HII_DEPENDENCY_EXPRESSION ***StackPtr, IN OUT HII_DEPENDENCY_EXPRESSION ***StackEnd)
EFI_STATUS PushDependencyExpDes(IN HII_DEPENDENCY_EXPRESSION **Pointer)
EFI_STATUS PopMapExpressionList(OUT VOID **Pointer)
VOID ResetScopeStack(VOID)
EFI_STATUS PushCurrentExpression(IN VOID *Pointer)
EFI_STATUS PopDependencyStack(IN HII_DEPENDENCY_EXPRESSION **Stack, IN OUT HII_DEPENDENCY_EXPRESSION ***StackPtr, OUT HII_DEPENDENCY_EXPRESSION **Data)
VOID ResetCurrentExpressionStack(VOID)
EFI_STATUS PushConditionalExpression(IN HII_EXPRESSION *Pointer, IN EXPRESS_LEVEL Level)
EFI_STATUS PushStack(IN OUT EFI_HII_VALUE **Stack, IN OUT EFI_HII_VALUE **StackPtr, IN OUT EFI_HII_VALUE **StackEnd, IN EFI_HII_VALUE *Data)
EFI_STATUS PushScope(IN UINT8 Operand)
EFI_STATUS GrowConditionalStack(IN OUT HII_EXPRESSION ***Stack, IN OUT HII_EXPRESSION ***StackPtr, IN OUT HII_EXPRESSION ***StackEnd, IN UINTN MemberSize)
EFI_STATUS PushDependencyStack(IN OUT HII_DEPENDENCY_EXPRESSION ***Stack, IN OUT HII_DEPENDENCY_EXPRESSION ***StackPtr, IN OUT HII_DEPENDENCY_EXPRESSION ***StackEnd, IN HII_DEPENDENCY_EXPRESSION **Data)
EFI_STATUS PushConditionalStack(IN OUT HII_EXPRESSION ***Stack, IN OUT HII_EXPRESSION ***StackPtr, IN OUT HII_EXPRESSION ***StackEnd, IN HII_EXPRESSION **Data)
EFI_STATUS PopConditionalExpression(IN EXPRESS_LEVEL Level)
INTN GetConditionalExpressionCount(IN EXPRESS_LEVEL Level)
EFI_STATUS PopCurrentExpression(OUT VOID **Pointer)
HII_EXPRESSION ** GetConditionalExpressionList(IN EXPRESS_LEVEL Level)
EFI_STATUS PopConditionalStack(IN HII_EXPRESSION **Stack, IN OUT HII_EXPRESSION ***StackPtr, OUT HII_EXPRESSION **Data)
EFI_STATUS PushMapExpressionList(IN VOID *Pointer)
EFI_STATUS GrowStack(IN OUT EFI_HII_VALUE **Stack, IN OUT EFI_HII_VALUE **StackPtr, IN OUT EFI_HII_VALUE **StackEnd)
EFI_STATUS PopScope(OUT UINT8 *Operand)
EXPRESS_RESULT EvaluateExpressionList(IN HII_EXPRESSION_LIST *ExpList, IN BOOLEAN Evaluate, IN HII_FORMSET *FormSet OPTIONAL, IN HII_FORM *Form OPTIONAL)
VOID ResetMapExpressionListStack(VOID)
EFI_STATUS PopDependencyExpDes(OUT HII_DEPENDENCY_EXPRESSION **Pointer)
EFI_STATUS GetHiiExpressionDependency(IN OUT HII_EXPRESSION *Expression)
EFI_STATUS PopStack(IN EFI_HII_VALUE *Stack, IN OUT EFI_HII_VALUE **StackPtr, OUT EFI_HII_VALUE *Data)
BOOLEAN IsHiiValueTrue(IN EFI_HII_VALUE *Result)
EFI_STATUS EvaluateHiiExpression(IN HII_FORMSET *FormSet, IN HII_FORM *Form, IN OUT HII_EXPRESSION *Expression)
VOID *EFIAPI AllocatePool(IN UINTN AllocationSize)
HII_DEPENDENCY_EXPRESSION * LeftHandExp
left value
HII_DEPENDENCY_EXPRESSION * RightHandExp
right value
HII_DEPENDENCY_EXPRESSION * CondFalseValExp
middle value
HII_DEPENDENCY_EXPRESSION * ConditionExp
left value
HII_DEPENDENCY_EXPRESSION * CondTrueValExp
right value
HII_DEPENDENCY_EXPRESSION * RightHandExp
right value
HII_DEPENDENCY_EXPRESSION * LeftHandExp
left value
HII_DEPENDENCY_EXPRESSION * IndexExp
right value
HII_DEPENDENCY_EXPRESSION * StringToSearchExp
left value
HII_DEPENDENCY_EXPRESSION * StringToCompWithExp
middle value
HII_DEPENDENCY_EXPRESSION * IndexExp
middle value
HII_DEPENDENCY_EXPRESSION * LengthExp
right value
HII_DEPENDENCY_EXPRESSION * StringOrBufferExp
left value
HII_DEPENDENCY_EXPRESSION * RightHandExp
right value
HII_DEPENDENCY_EXPRESSION * LeftHandExp
left value
HII_DEPENDENCY_EXPRESSION * IndexExp
right value
HII_DEPENDENCY_EXPRESSION * StringToSearchExp
left value
HII_DEPENDENCY_EXPRESSION * CharsetExp
middle value
HII_DEPENDENCY_EXPRESSION * RightHandExp
right value
HII_DEPENDENCY_EXPRESSION * LeftHandExp
left value
HII_DEPENDENCY_EXPRESSION * IndexExp
right value
HII_DEPENDENCY_EXPRESSION * StringToSearchExp
left value
HII_DEPENDENCY_EXPRESSION * DelimiterExp
middle value
LIST_ENTRY MapExpressionList
nested expressions inside of Map opcode.
HII_DEPENDENCY_EXPRESSION * RootDependencyExp
Expression OpCodes tree layout to describe dependency of this expression.
HII_DEPENDENCY_DUP DupExp
HII_DEPENDENCY_CONDITIONAL ConditionalExp
HII_DEPENDENCY_CATENATE CatenateExp
HII_DEPENDENCY_LENGTH LengthExp
HII_EXPRESSION_CONSTANT ConstantExp
EFI_STRING_ID string
EFI_IFR_TYPE_STRING, EFI_IFR_TYPE_ACTION.
EFI_HII_VALUE Value
EFI_IFR_UINT64, EFI_IFR_UINT32, EFI_IFR_UINT16, EFI_IFR_UINT8, EFI_IFR_STRING_REF1.
EFI_GUID Guid
For EFI_IFR_SECURITY, EFI_IFR_MATCH2.
UINT8 RuleId
For EFI_IFR_RULE_REF.
EFI_STRING_ID DevicePath
For EFI_IFR_QUESTION_REF3_3.
EFI_QUESTION_ID QuestionId
For EFI_IFR_EQ_ID_VAL_LIST.
UINT8 Format
For EFI_IFR_TO_STRING, EFI_IFR_FIND.