vfrStatementDefault :\r
<<\r
BOOLEAN IsExp = FALSE;\r
- EFI_IFR_TYPE_VALUE Val = gZeroEfiIfrTypeValue;\r
+ EFI_IFR_TYPE_VALUE Val = gZeroEfiIfrTypeValue;\r
CIfrDefault DObj;\r
EFI_DEFAULT_ID DefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;\r
CHAR8 *VarStoreName = NULL;\r
D:Default << DObj.SetLineNo(D->getLine()); >>\r
(\r
(\r
- vfrStatementValue "," << IsExp = TRUE; DObj.SetScope (1); >>\r
- | "=" vfrConstantValueField[_GET_CURRQEST_DATATYPE()] > [Val] ","\r
- << DObj.SetType (_GET_CURRQEST_DATATYPE()); DObj.SetValue(Val); >>\r
+ vfrStatementValue "," << IsExp = TRUE; DObj.SetScope (1); CIfrEnd EndObj1; EndObj1.SetLineNo(D->getLine()); >>\r
+ | "=" vfrConstantValueField[_GET_CURRQEST_DATATYPE()] > [Val] "," << \r
+\r
+ if (gCurrentIfrOpcode != NULL && gCurrentIfrOpcode->GetObjBinAddr() != NULL) {\r
+ EFI_IFR_OP_HEADER *TempOpCode;\r
+ TempOpCode = (EFI_IFR_OP_HEADER *) gCurrentIfrOpcode->GetObjBinAddr();\r
+ switch (TempOpCode->OpCode) {\r
+ case EFI_IFR_NUMERIC_OP:\r
+ EFI_IFR_NUMERIC *TempNumricCode;\r
+ TempNumricCode = (EFI_IFR_NUMERIC *) TempOpCode;\r
+ switch (_GET_CURRQEST_DATATYPE()) {\r
+ case EFI_IFR_TYPE_NUM_SIZE_64:\r
+ if (Val.u64 < TempNumricCode->data.u64.MinValue || Val.u64 > TempNumricCode->data.u64.MaxValue) {\r
+ _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "Numeric default value must be between MinValue and MaxValue.");\r
+ }\r
+ break;\r
+ case EFI_IFR_TYPE_NUM_SIZE_32:\r
+ if (Val.u32 < TempNumricCode->data.u32.MinValue || Val.u32 > TempNumricCode->data.u32.MaxValue) {\r
+ _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "Numeric default value must be between MinValue and MaxValue.");\r
+ }\r
+ break;\r
+ case EFI_IFR_TYPE_NUM_SIZE_16:\r
+ if (Val.u16 < TempNumricCode->data.u16.MinValue || Val.u16 > TempNumricCode->data.u16.MaxValue) {\r
+ _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "Numeric default value must be between MinValue and MaxValue.");\r
+ }\r
+ break;\r
+ case EFI_IFR_TYPE_NUM_SIZE_8:\r
+ if (Val.u8 < TempNumricCode->data.u8.MinValue || Val.u8 > TempNumricCode->data.u8.MaxValue) {\r
+ _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "Numeric default value must be between MinValue and MaxValue.");\r
+ }\r
+ break;\r
+ }\r
+ break;\r
+ case EFI_IFR_ONE_OF_OP:\r
+ EFI_IFR_ONE_OF *TempOneOfCode;\r
+ TempOneOfCode = (EFI_IFR_ONE_OF *) TempOpCode;\r
+ if (TempOneOfCode->data.u64.MinValue != 0 || TempOneOfCode->data.u64.MaxValue != 0 || TempOneOfCode->data.u64.Step != 0) {\r
+ //OneOf MinMaxStep Data is set, Val value will be checked for MinMaxStep.\r
+ switch (_GET_CURRQEST_DATATYPE()) {\r
+ case EFI_IFR_TYPE_NUM_SIZE_64:\r
+ if (Val.u64 < TempOneOfCode->data.u64.MinValue || Val.u64 > TempOneOfCode->data.u64.MaxValue) {\r
+ _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "OneOf default value must be between MinValue and MaxValue.");\r
+ }\r
+ break;\r
+ case EFI_IFR_TYPE_NUM_SIZE_32:\r
+ if (Val.u32 < TempOneOfCode->data.u32.MinValue || Val.u32 > TempOneOfCode->data.u32.MaxValue) {\r
+ _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "OneOf default value must be between MinValue and MaxValue.");\r
+ }\r
+ break;\r
+ case EFI_IFR_TYPE_NUM_SIZE_16:\r
+ if (Val.u16 < TempOneOfCode->data.u16.MinValue || Val.u16 > TempOneOfCode->data.u16.MaxValue) {\r
+ _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "OneOf default value must be between MinValue and MaxValue.");\r
+ }\r
+ break;\r
+ case EFI_IFR_TYPE_NUM_SIZE_8:\r
+ if (Val.u8 < TempOneOfCode->data.u8.MinValue || Val.u8 > TempOneOfCode->data.u8.MaxValue) {\r
+ _PCATCH (VFR_RETURN_INVALID_PARAMETER, D->getLine(), "OneOf default value must be between MinValue and MaxValue.");\r
+ }\r
+ break;\r
+ }\r
+ }\r
+ break;\r
+ }\r
+ }\r
+ DObj.SetType (_GET_CURRQEST_DATATYPE()); \r
+ DObj.SetValue(Val);\r
+ >>\r
)\r
{\r
DefaultStore "=" SN:StringIdentifier "," << _PCATCH(mCVfrDefaultStore.GetDefaultId (SN->getText(), &DefaultId), SN); DObj.SetDefaultId (DefaultId); >>\r
vfrStatementValue :\r
<< CIfrValue VObj; >>\r
V:Value << VObj.SetLineNo(V->getLine()); >>\r
- "=" vfrStatementExpression[0]\r
+ "=" vfrStatementExpression[0] << {CIfrEnd EndObj; EndObj.SetLineNo(V->getLine());} >>\r
;\r
\r
vfrStatementSubTitle :\r
;\r
\r
minMaxDateStepDefault[EFI_HII_DATE & D, UINT8 KeyValue] :\r
- Minimum "=" Number ","\r
- Maximum "=" Number ","\r
+ Minimum "=" MinN:Number ","\r
+ Maximum "=" MaxN:Number ","\r
{ "step" "=" Number "," }\r
{\r
"default" "=" N:Number "," <<\r
switch (KeyValue) {\r
- case 0: D.Year = _STOU16(N->getText()); break;\r
- case 1: D.Month = _STOU8(N->getText()); break;\r
- case 2: D.Day = _STOU8(N->getText()); break;\r
+ case 0: \r
+ D.Year = _STOU16(N->getText());\r
+ if (D.Year < _STOU16 (MinN->getText()) || D.Year > _STOU16 (MaxN->getText())) {\r
+ _PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Year default value must be between Min year and Max year.");\r
+ }\r
+ break;\r
+ case 1: \r
+ D.Month = _STOU8(N->getText()); \r
+ if (D.Month < 1 || D.Month > 12) {\r
+ _PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Month default value must be between 1 and 12.");\r
+ }\r
+ break;\r
+ case 2: \r
+ D.Day = _STOU8(N->getText()); \r
+ if (D.Day < 1 || D.Day > 31) {\r
+ _PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Day default value must be between 1 and 31.");\r
+ }\r
+ break;\r
}\r
>>\r
}\r
Maximum "=" A:Number ","\r
<<\r
switch (_GET_CURRQEST_DATATYPE ()) {\r
- case EFI_IFR_TYPE_NUM_SIZE_64 : MaxU8 = _STOU64(A->getText()); break;\r
- case EFI_IFR_TYPE_NUM_SIZE_32 : MaxU4 = _STOU32(A->getText()); break;\r
- case EFI_IFR_TYPE_NUM_SIZE_16 : MaxU2 = _STOU16(A->getText()); break;\r
- case EFI_IFR_TYPE_NUM_SIZE_8 : MaxU1 = _STOU8(A->getText()); break;\r
+ case EFI_IFR_TYPE_NUM_SIZE_64 : \r
+ MaxU8 = _STOU64(A->getText()); \r
+ if (MaxU8 < MinU8) {\r
+ _PCATCH (VFR_RETURN_INVALID_PARAMETER, A->getLine(), "Maximum can't be less than Minimum");\r
+ }\r
+ break;\r
+ case EFI_IFR_TYPE_NUM_SIZE_32 : \r
+ MaxU4 = _STOU32(A->getText()); \r
+ if (MaxU4 < MinU4) {\r
+ _PCATCH (VFR_RETURN_INVALID_PARAMETER, A->getLine(), "Maximum can't be less than Minimum");\r
+ }\r
+ break;\r
+ case EFI_IFR_TYPE_NUM_SIZE_16 : \r
+ MaxU2 = _STOU16(A->getText()); \r
+ if (MaxU2 < MinU2) {\r
+ _PCATCH (VFR_RETURN_INVALID_PARAMETER, A->getLine(), "Maximum can't be less than Minimum");\r
+ }\r
+ break;\r
+ case EFI_IFR_TYPE_NUM_SIZE_8 : \r
+ MaxU1 = _STOU8(A->getText()); \r
+ if (MaxU1 < MinU1) {\r
+ _PCATCH (VFR_RETURN_INVALID_PARAMETER, A->getLine(), "Maximum can't be less than Minimum");\r
+ }\r
+ break;\r
}\r
>>\r
{\r
{\r
"default" "=" N:Number "," <<\r
switch (KeyValue) {\r
- case 0: T.Hour = _STOU8(N->getText()); break;\r
- case 1: T.Minute = _STOU8(N->getText()); break;\r
- case 2: T.Second = _STOU8(N->getText()); break;\r
+ case 0: \r
+ T.Hour = _STOU8(N->getText()); \r
+ if (T.Hour > 23) {\r
+ _PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Hour default value must be between 0 and 23.");\r
+ }\r
+ break;\r
+ case 1: \r
+ T.Minute = _STOU8(N->getText()); \r
+ if (T.Minute > 59) {\r
+ _PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Minute default value must be between 0 and 59.");\r
+ }\r
+ break;\r
+ case 2: \r
+ T.Second = _STOU8(N->getText());\r
+ if (T.Second > 59) {\r
+ _PCATCH (VFR_RETURN_INVALID_PARAMETER, N->getLine(), "Second default value must be between 0 and 59.");\r
+ }\r
+ break;\r
}\r
>>\r
}\r
\r
VOID _STRCAT (IN OUT CHAR8 **, IN CHAR8 *);\r
\r
- VOID _CRGUID (EFI_GUID *, CHAR8 *, CHAR8 *, CHAR8 *, CHAR8 *, CHAR8 *, CHAR8 *, CHAR8 *, CHAR8 *, CHAR8 *, CHAR8 *, CHAR8 *);\r
VOID _DeclareDefaultLinearVarStore (IN UINT32);\r
VOID _DeclareStandardDefaultStorage (IN UINT32);\r
VOID _DeclareDefaultFrameworkVarStore (IN UINT32);\r
*Dest = NewStr;\r
}\r
\r
-VOID\r
-EfiVfrParser::_CRGUID (\r
- IN EFI_GUID *Guid,\r
- IN CHAR8 *G1,\r
- IN CHAR8 *G2,\r
- IN CHAR8 *G3,\r
- IN CHAR8 *G4,\r
- IN CHAR8 *G5,\r
- IN CHAR8 *G6,\r
- IN CHAR8 *G7,\r
- IN CHAR8 *G8,\r
- IN CHAR8 *G9,\r
- IN CHAR8 *G10,\r
- IN CHAR8 *G11\r
- )\r
-{\r
- Guid->Data1 = _STOU32 (G1);\r
- Guid->Data2 = _STOU16 (G2);\r
- Guid->Data3 = _STOU16 (G3);\r
- Guid->Data4[0] = _STOU8(G4);\r
- Guid->Data4[1] = _STOU8(G5);\r
- Guid->Data4[2] = _STOU8(G6);\r
- Guid->Data4[3] = _STOU8(G7);\r
- Guid->Data4[4] = _STOU8(G8);\r
- Guid->Data4[5] = _STOU8(G9);\r
- Guid->Data4[6] = _STOU8(G10);\r
- Guid->Data4[7] = _STOU8(G11);\r
-}\r
-\r
//\r
// framework vfr to default declare varstore for each structure\r
//\r