return Status;\r
}\r
\r
+/**\r
+ Check whether the result is TRUE or FALSE.\r
+ \r
+ For the EFI_HII_VALUE value type is numeric, return TRUE if the\r
+ value is not 0.\r
+\r
+ @param Result Input the result data.\r
+\r
+ @retval TRUE The result is TRUE.\r
+ @retval FALSE The result is FALSE.\r
+\r
+**/\r
+BOOLEAN\r
+IsTrue (\r
+ IN EFI_HII_VALUE *Result\r
+ )\r
+{\r
+ switch (Result->Type) {\r
+ case EFI_IFR_TYPE_BOOLEAN:\r
+ return Result->Value.b;\r
+\r
+ case EFI_IFR_TYPE_NUM_SIZE_8:\r
+ return Result->Value.u8 != 0;\r
+\r
+ case EFI_IFR_TYPE_NUM_SIZE_16:\r
+ return Result->Value.u16 != 0;\r
+\r
+ case EFI_IFR_TYPE_NUM_SIZE_32:\r
+ return Result->Value.u32 != 0;\r
+\r
+ case EFI_IFR_TYPE_NUM_SIZE_64:\r
+ return Result->Value.u64 != 0;\r
+\r
+ default:\r
+ return FALSE;\r
+ }\r
+}\r
+\r
/**\r
Return the result of the expression list. Check the expression list and \r
return the highest priority express result. \r
//\r
ReturnVal = ExpressFalse;\r
for (Index = 0; Index < ExpList->Count; Index++) {\r
- if (ExpList->Expression[Index]->Result.Type == EFI_IFR_TYPE_BOOLEAN &&\r
- ExpList->Expression[Index]->Result.Value.b) {\r
+ if (IsTrue (&ExpList->Expression[Index]->Result)) {\r
switch (ExpList->Expression[Index]->Type) {\r
case EFI_HII_EXPRESSION_SUPPRESS_IF:\r
CompareOne = ExpressSuppress;\r