+/**\r
+ Check whether this value type can be transfer to EFI_IFR_TYPE_BUFFER type.\r
+\r
+ EFI_IFR_TYPE_REF, EFI_IFR_TYPE_DATE and EFI_IFR_TYPE_TIME are converted to \r
+ EFI_IFR_TYPE_BUFFER when do the value compare.\r
+\r
+ @param Value Expression value to compare on.\r
+\r
+ @retval TRUE This value type can be transter to EFI_IFR_TYPE_BUFFER type.\r
+ @retval FALSE This value type can't be transter to EFI_IFR_TYPE_BUFFER type.\r
+\r
+**/\r
+BOOLEAN\r
+IsTypeInBuffer (\r
+ IN EFI_HII_VALUE *Value\r
+ )\r
+{\r
+ switch (Value->Type) {\r
+ case EFI_IFR_TYPE_BUFFER:\r
+ case EFI_IFR_TYPE_DATE:\r
+ case EFI_IFR_TYPE_TIME:\r
+ case EFI_IFR_TYPE_REF:\r
+ return TRUE;\r
+\r
+ default:\r
+ return FALSE;\r
+ }\r
+}\r
+\r
+/**\r
+ Check whether this value type can be transfer to EFI_IFR_TYPE_UINT64\r
+\r
+ @param Value Expression value to compare on.\r
+\r
+ @retval TRUE This value type can be transter to EFI_IFR_TYPE_BUFFER type.\r
+ @retval FALSE This value type can't be transter to EFI_IFR_TYPE_BUFFER type.\r
+\r
+**/\r
+BOOLEAN\r
+IsTypeInUINT64 (\r
+ IN EFI_HII_VALUE *Value\r
+ )\r
+{\r
+ switch (Value->Type) {\r
+ case EFI_IFR_TYPE_NUM_SIZE_8:\r
+ case EFI_IFR_TYPE_NUM_SIZE_16:\r
+ case EFI_IFR_TYPE_NUM_SIZE_32:\r
+ case EFI_IFR_TYPE_NUM_SIZE_64:\r
+ case EFI_IFR_TYPE_BOOLEAN:\r
+ return TRUE;\r
+\r
+ default:\r
+ return FALSE;\r
+ }\r
+}\r
+\r
+/**\r
+ Return the buffer length for this value.\r
+\r
+ EFI_IFR_TYPE_REF, EFI_IFR_TYPE_DATE and EFI_IFR_TYPE_TIME are converted to \r
+ EFI_IFR_TYPE_BUFFER when do the value compare.\r
+\r
+ @param Value Expression value to compare on.\r
+ \r
+ @retval BufLen Return the buffer length.\r
+\r
+**/\r
+UINT16\r
+GetLengthForValue (\r
+ IN EFI_HII_VALUE *Value\r
+ )\r
+{\r
+ switch (Value->Type) {\r
+ case EFI_IFR_TYPE_BUFFER:\r
+ return Value->BufferLen;\r
+\r
+ case EFI_IFR_TYPE_DATE:\r
+ return (UINT16) sizeof (EFI_HII_DATE);\r
+\r
+ case EFI_IFR_TYPE_TIME:\r
+ return (UINT16) sizeof (EFI_HII_TIME);\r
+\r
+ case EFI_IFR_TYPE_REF:\r
+ return (UINT16) sizeof (EFI_HII_REF);\r
+\r
+ default:\r
+ return 0;\r
+ }\r
+}\r
+\r
+/**\r
+ Return the buffer pointer for this value.\r
+\r
+ EFI_IFR_TYPE_REF, EFI_IFR_TYPE_DATE and EFI_IFR_TYPE_TIME are converted to \r
+ EFI_IFR_TYPE_BUFFER when do the value compare.\r
+\r
+ @param Value Expression value to compare on.\r
+\r
+ @retval Buf Return the buffer pointer.\r
+\r
+**/\r
+UINT8 *\r
+GetBufferForValue (\r
+ IN EFI_HII_VALUE *Value\r
+ )\r
+{\r
+ switch (Value->Type) {\r
+ case EFI_IFR_TYPE_BUFFER:\r
+ return Value->Buffer;\r
+\r
+ case EFI_IFR_TYPE_DATE:\r
+ return (UINT8 *) (&Value->Value.date);\r
+\r
+ case EFI_IFR_TYPE_TIME:\r
+ return (UINT8 *) (&Value->Value.time);\r
+\r
+ case EFI_IFR_TYPE_REF:\r
+ return (UINT8 *) (&Value->Value.ref);\r
+\r
+ default:\r
+ return NULL;\r
+ }\r
+}\r