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 <[email protected]>
Reviewed-by: Liming Gao <[email protected]>
Reviewed-by: Samer El-Haj-Mahmoud <[email protected]>
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits