Revision: 17338 http://sourceforge.net/p/edk2/code/17338 Author: ydong10 Date: 2015-05-06 10:38:04 +0000 (Wed, 06 May 2015) Log Message: ----------- BaseTools: Enable Match2 Opcode.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Eric Dong <eric.d...@intel.com> Reviewed-by: Liming Gao <liming....@intel.com> Reviewed-by: Samer El-Haj-Mahmoud <samer.el-haj-mahm...@hp.com> Modified Paths: -------------- trunk/edk2/BaseTools/Source/C/Include/Common/UefiInternalFormRepresentation.h trunk/edk2/BaseTools/Source/C/VfrCompile/VfrFormPkg.cpp trunk/edk2/BaseTools/Source/C/VfrCompile/VfrFormPkg.h trunk/edk2/BaseTools/Source/C/VfrCompile/VfrSyntax.g Modified: trunk/edk2/BaseTools/Source/C/Include/Common/UefiInternalFormRepresentation.h =================================================================== --- trunk/edk2/BaseTools/Source/C/Include/Common/UefiInternalFormRepresentation.h 2015-05-06 10:12:53 UTC (rev 17337) +++ trunk/edk2/BaseTools/Source/C/Include/Common/UefiInternalFormRepresentation.h 2015-05-06 10:38:04 UTC (rev 17338) @@ -690,6 +690,7 @@ #define EFI_IFR_MODAL_TAG_OP 0x61 #define EFI_IFR_REFRESH_ID_OP 0x62 #define EFI_IFR_WARNING_IF_OP 0x63 +#define EFI_IFR_MATCH2_OP 0x64 typedef struct _EFI_IFR_OP_HEADER { @@ -1268,6 +1269,11 @@ EFI_IFR_OP_HEADER Header; } EFI_IFR_MATCH; +typedef struct _EFI_IFR_MATCH2 { + EFI_IFR_OP_HEADER Header; + EFI_GUID SyntaxType; +} EFI_IFR_MATCH2; + typedef struct _EFI_IFR_MULTIPLY { EFI_IFR_OP_HEADER Header; } EFI_IFR_MULTIPLY; Modified: trunk/edk2/BaseTools/Source/C/VfrCompile/VfrFormPkg.cpp =================================================================== --- trunk/edk2/BaseTools/Source/C/VfrCompile/VfrFormPkg.cpp 2015-05-06 10:12:53 UTC (rev 17337) +++ trunk/edk2/BaseTools/Source/C/VfrCompile/VfrFormPkg.cpp 2015-05-06 10:38:04 UTC (rev 17338) @@ -1663,6 +1663,7 @@ { sizeof (EFI_IFR_MODAL_TAG), 0}, // EFI_IFR_MODAL_TAG_OP - 0x61 { sizeof (EFI_IFR_REFRESH_ID), 0}, // EFI_IFR_REFRESH_ID_OP - 0x62 { sizeof (EFI_IFR_WARNING_IF), 1}, // EFI_IFR_WARNING_IF_OP - 0x63 + { sizeof (EFI_IFR_MATCH2), 0 }, // EFI_IFR_MATCH2_OP - 0x64 }; #ifdef CIFROBJ_DEUBG @@ -1685,7 +1686,7 @@ "EFI_IFR_STRING_REF1","EFI_IFR_STRING_REF2", "EFI_IFR_CONDITIONAL", "EFI_IFR_QUESTION_REF3", "EFI_IFR_ZERO", "EFI_IFR_ONE", "EFI_IFR_ONES", "EFI_IFR_UNDEFINED", "EFI_IFR_LENGTH", "EFI_IFR_DUP", "EFI_IFR_THIS", "EFI_IFR_SPAN", "EFI_IFR_VALUE", "EFI_IFR_DEFAULT", "EFI_IFR_DEFAULTSTORE", "EFI_IFR_FORM_MAP", "EFI_IFR_CATENATE", "EFI_IFR_GUID", - "EFI_IFR_SECURITY", "EFI_IFR_MODAL_TAG", "EFI_IFR_REFRESH_ID", "EFI_IFR_WARNING_IF", + "EFI_IFR_SECURITY", "EFI_IFR_MODAL_TAG", "EFI_IFR_REFRESH_ID", "EFI_IFR_WARNING_IF", "EFI_IFR_MATCH2", }; VOID Modified: trunk/edk2/BaseTools/Source/C/VfrCompile/VfrFormPkg.h =================================================================== --- trunk/edk2/BaseTools/Source/C/VfrCompile/VfrFormPkg.h 2015-05-06 10:12:53 UTC (rev 17337) +++ trunk/edk2/BaseTools/Source/C/VfrCompile/VfrFormPkg.h 2015-05-06 10:38:04 UTC (rev 17338) @@ -2656,6 +2656,21 @@ } }; +class CIfrMatch2 : public CIfrObj, public CIfrOpHeader { +private: + EFI_IFR_MATCH2 *mMatch2; + +public: + CIfrMatch2 ( + IN UINT32 LineNo, + IN EFI_GUID *Guid + ) : CIfrObj (EFI_IFR_MATCH2_OP, (CHAR8 **)&mMatch2), + CIfrOpHeader (EFI_IFR_MATCH2_OP, &mMatch2->Header) { + SetLineNo (LineNo); + memmove (&mMatch2->SyntaxType, Guid, sizeof (EFI_GUID)); + } +}; + class CIfrMultiply : public CIfrObj, public CIfrOpHeader { private: EFI_IFR_MULTIPLY *mMultiply; Modified: trunk/edk2/BaseTools/Source/C/VfrCompile/VfrSyntax.g =================================================================== --- trunk/edk2/BaseTools/Source/C/VfrCompile/VfrSyntax.g 2015-05-06 10:12:53 UTC (rev 17337) +++ trunk/edk2/BaseTools/Source/C/VfrCompile/VfrSyntax.g 2015-05-06 10:38:04 UTC (rev 17338) @@ -3401,6 +3401,7 @@ #token ToUpper("toupper") "toupper" #token ToLower("tolower") "tolower" #token Match("match") "match" +#token Match2("match2") "match2" #token Catenate("catenate") "catenate" #token QuestionRefVal("questionrefval") "questionrefval" #token StringRefVal("stringrefval") "stringrefval" @@ -3569,6 +3570,7 @@ atomTerm [UINT32 & RootLevel, UINT32 & ExpOpCount]: vfrExpressionCatenate[$RootLevel, $ExpOpCount] | vfrExpressionMatch[$RootLevel, $ExpOpCount] + | vfrExpressionMatch2[$RootLevel, $ExpOpCount] | vfrExpressionParen[$RootLevel, $ExpOpCount] | vfrExpressionBuildInFunction[$RootLevel, $ExpOpCount] | vfrExpressionConstant[$RootLevel, $ExpOpCount] @@ -3599,6 +3601,20 @@ "\)" << { CIfrMatch MObj(L->getLine()); $ExpOpCount++; } >> ; +vfrExpressionMatch2 [UINT32 & RootLevel, UINT32 & ExpOpCount]: + << + EFI_GUID Guid; + >> + L:Match2 + "\(" + vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] + "," + vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] + "," + guidDefinition[Guid] + "\)" << { CIfrMatch2 M2Obj(L->getLine(), &Guid); $ExpOpCount++; } >> + ; + vfrExpressionParen [UINT32 & RootLevel, UINT32 & ExpOpCount]: "\(" vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount] ------------------------------------------------------------------------------ One dashboard for servers and applications across Physical-Virtual-Cloud Widest out-of-the-box monitoring support with 50+ applications Performance metrics, stats and reports that give you Actionable Insights Deep dive visibility with transaction tracing using APM Insight. http://ad.doubleclick.net/ddm/clk/290420510;117567292;y _______________________________________________ edk2-commits mailing list edk2-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-commits